parse.y (check_class_key): Allow KEY to be union/enum/struct/class node with attributes.
[platform/upstream/gcc.git] / gcc / cp / ChangeLog
1 2002-04-23  Jakub Jelinek  <jakub@redhat.com>
2
3         * parse.y (check_class_key): Allow KEY to be union/enum/struct/class
4         node with attributes.
5
6 2002-2-23  David O'Brien  <obrien@FreeBSD.org>
7
8         * g++spec.c (MATH_LIBRARY_PROFILE, LIBSTDCXX_PROFILE): Add.
9         Use MATH_LIBRARY_PROFILE and LIBSTDCXX_PROFILE if profile flag given.
10
11 2002-04-23  Mark Mitchell  <mark@codesourcery.com>
12
13         PR c++/6256:
14         * pt.c (tsubst_friend_class): Handle templates with explicit
15         nested names.
16
17         PR c++/6331:
18         * typeck.c (merge_types): Remember the cv-qualification of pointer
19         types when merging them.
20
21 2002-04-20  Neil Booth  <neil@daikokuya.demon.co.uk>
22
23         * cp-lang.c (LANG_HOOKS_FUNCTION_INIT,
24         LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_MARK): Redefine.
25         * cp-tree.h (cxx_push_function_context, cxx_pop_function_context,
26         cxx_mark_function_context): New.
27         * decl.c (push_cp_function_context, pop_cp_function_context,
28         mark_cp_function_context): Rename for consistency.
29         (cxx_init_decl_processing): Don't set old hooks.
30
31 2002-04-19  Neil Booth  <neil@daikokuya.demon.co.uk>
32
33         * call.c (convert_type_from_ellipsis): Rename, update.
34         * cp-lang.c (LANG_HOOKS_TYPE_PROMOTES_TO): Redefine.
35         * cp-tree.h (convert_type_from_ellipsis): Rename.
36         * decl.c (cxx_init_decl_processing): Don't set hook.
37
38 2002-04-18  Neil Booth  <neil@daikokuya.demon.co.uk>
39
40         * call.c (build_new_method_call): Update.
41         * cp-lang.c (LANG_HOOKS_INCOMPLETE_TYPE_ERROR): Redefine.
42         * cp-tree.h (cxx_incomplete_type_error): New.
43         * decl.c (grokdeclarator, grokparms): Update.
44         * decl2.c (check_classfn): Update.
45         * pt.c (tsubst): Update.
46         * typeck.c (complete_type_or_else, expr_sizeof,
47         decay_conversion): Update.
48         * typeck2.c (incomplete_type_error): Rename.
49         (add_exception_specifier): Update.
50
51 2002-04-18  Jason Merrill  <jason@redhat.com>
52
53         PR c++/5658
54         * search.c (setup_class_bindings): A class template qualifies as a
55         type binding.
56
57 2002-04-17  Jakub Jelinek  <jakub@redhat.com>
58
59         PR c++/6316
60         * decl2.c (finish_file): Clear DECL_EXTERNAL in a separate loop
61         before expanding.
62
63 2002-04-16  Mark Mitchell  <mark@codesourcery.com>
64
65         * init.c (begin_init_stmts): Remove commented out code.
66         (finish_init_stmts): Set STMT_EXPR_NO_SCOPE.
67         * semantics.c (begin_gobal_stmt_expr): Adjust call to
68         expand_start_stmt_expr.
69         
70 2002-04-15  Mark Mitchell  <mark@codesourcery.com>
71
72         * decl.c (register_dtor_fn): Pass the address of dso_handle, not
73         dso_handle itself, to __cxa_atexit.
74
75 2002-04-15  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
76
77         * error.c (cxx_print_error_function): Adjust call to macros.
78
79 2002-04-14  Jakub Jelinek  <jakub@redhat.com>
80
81         * class.c (layout_virtual_bases): Do all dsize computation on trees.
82
83 2002-04-14  Jason Merrill  <jason@redhat.com>
84
85         * typeck.c (get_member_function_from_ptrfunc): Don't do
86         gratuitious division and multiplication on
87         ptrmemfunc_vbit_in_delta targets.
88
89 2002-04-12  Mark Mitchell  <mark@codesourcery.com>
90
91         PR c++/5373.
92         * semantics.c (finish_expr_stmt): Remember the type of the
93         expression before any conversions are performed.
94
95 2002-04-12  Mark Mitchell  <mark@codesourcery.com>
96
97         PR c++/5189.
98         * call.c (add_template_candidate_real): Do not treat member
99         templates as copy constructors.
100
101 2002-04-12  Mark Mitchell  <mark@codesourcery.com>
102
103         * decl.c (duplicate_decls): Do not copy the RTL for a variable
104         declaration if the old variable had an incomplete type and the new
105         variable does not.
106         (complete_vars): Do not call layout_decl for completed variables.
107
108 2002-04-12  Richard Sandiford  <rsandifo@redhat.com>
109
110         * decl.c (duplicate_decls): Don't try to unify an implicit typedef
111         with an explicit one.
112         (follow_tag_typedef): New.
113         (lookup_tag): Use it to extract the tag of an explicit typedef.
114         (xref_tag): Likewise.
115
116 2002-04-11  Andrew Haley  <aph@redhat.com>
117
118         * typeck.c (type_after_usual_arithmetic_conversions):
119         If two types have the same variant, return immediately.
120         When two floating-point operands are the same precision: 
121           convert to float if one of the operands is float;
122           if neither operand is one of the standard types, return the type
123           of the first operand.
124  
125 2002-04-10  Nathan Sidwell  <nathan@codesourcery.com>
126
127         PR c++/5507
128         * decl.c (make_typename_type): Remove implicit typenameness.
129
130 2002-04-09  Jason Merrill  <jason@redhat.com>
131
132         PR optimization/6189
133         * semantics.c (genrtl_start_function): Don't free
134         DECL_SAVED_FUNCTION_DATA for inline functions.
135
136         * init.c (build_member_call): For now, don't convert to
137         intermediate base if it would cause an error.
138
139 2002-04-08  Paolo Carlini  <pcarlini@unitus.it>
140
141         * parse.y (namespace_qualifier, maybe_identifier,
142         begin_explicit_instantiation, end_explicit_instantiation,
143         apparent_template_type, .finish_template_type,
144         do_id, maybe_init, defarg_again, component_decl_1):
145         Add ending ';', in accordance with POSIX.
146
147 2002-04-06  Mark Mitchell  <mark@codesourcery.com>
148
149         PR c++/5571
150         * class.c (layout_class_type): Remember incomplete static
151         variables.
152         (finish_struct_1): Call complete_vars, not
153         hack_incomplete_structures.
154         * cp-tree.h (hack_incomplete_structures): Rename to ...
155         (complete_vars): ... this.
156         (struct saved_scope): Remove incomplete.
157         (namespace_scope_incomplete): Remove.
158         * decl.c (struct binding_level): Remove incomplete.
159         (incomplete_vars): New variable.
160         (mark_binding_level): Don't mark incomplete.
161         (print_binding_level): Don't print it.
162         (mark_saved_scope): Don't mark incomplete.
163         (pushdecl): Use maybe_register_incopmlete_var.
164         (cxx_init_decl_processing): Register incomplete_vars for GC.
165         (start_decl_1): Clarify error message.
166         (hack_incomplete_vars): Remove.
167         (maybe_register_incomplete_var): New function.
168         (complete_vars): Likewise.
169
170 2002-04-06  Jason Merrill  <jason@redhat.com>
171
172         PR c++/4934
173         * error.c (dump_expr) [CONVERT_EXPR]: Make sure TREE_TYPE (t) is
174         set before checking it.
175
176         PR c++/525
177         * init.c (build_member_call): Use build_scoped_ref.
178         (resolve_offset_ref): Likewise.
179         * call.c (build_scoped_method_call): Likewise.
180         * tree.c (maybe_dummy_object): Kludge around current_class_type being 
181         wrong.
182         * typeck2.c (build_scoped_ref): Return the binfo via binfo_p parm.
183         * cp-tree.h: Adjust.
184         
185         * init.c (push_base_cleanups): Just use build_scoped_method_call.
186
187         PR c++/6179
188         * method.c (implicitly_declare_fn): Pass unqualified type to 
189         synthesize_exception_spec.
190
191 2002-04-04  Neil Booth  <neil@daikokuya.demon.co.uk>
192
193         * cp-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
194         * cvt.c: Update comment.
195         * init.c (expand_cleanup_for_base): Update.
196         * semantics.c (finish_parenthesized_expr): Update.
197         * typeck.c (cp_truthvalue_conversion): Update.
198
199 2002-04-04  Jason Merrill  <jason@redhat.com>
200
201         * semantics.c (finish_eh_cleanup): New fn.
202         * cp-tree.h: Add prototype.
203         * init.c (perform_member_init, expand_cleanup_for_base): Use 
204         finish_eh_cleanup.
205         * cp-tree.def (SUBOBJECT, CTOR_STMT): Remove.
206         * cp-tree.h: Remove references.
207         * decl.c (begin_constructor_body, end_constructor_body): Likewise.
208         * dump.c (cp_dump_tree): Likewise.
209         * pt.c (tsubst_expr): Likewise.
210         * semantics.c (genrtl_ctor_stmt, genrtl_subobject): Remove.
211         (cp_expand_stmt): Remove handling of CTOR_STMT and SUBOBJECT.
212         * tree.c (cp_statement_code_p): Likewise.
213
214         * init.c (build_new_1): Set CLEANUP_EH_ONLY on deleting cleanup.
215
216         PR c++/5636
217         * semantics.c (nullify_returns_r): Just set CLEANUP_EH_ONLY on
218         cleanup for nrv.
219
220         PR c++/5104
221         * typeck.c (comptypes) [FUNCTION_TYPE]: Don't compare exception
222         specifiers.
223         [METHOD_TYPE]: Use same code as FUNCTION_TYPE.
224
225 2002-04-03  Richard Henderson  <rth@redhat.com>
226
227         * cp-lang.c (cxx_warn_unused_global_decl): New.
228         (LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): New.
229
230 2002-04-03  Neil Booth  <neil@daikokuya.demon.co.uk>
231
232         * cp-lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): Redefine.
233         * tree.c (init_tree): Don't set hook.
234
235 2002-04-03  Roger Sayle  <roger@eyesopen.com>
236
237         PR c++/5998:
238         * decl.c (duplicate_decls): Don't mess with assembler names when
239         redeclaring builtin functions as static.
240
241 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
242
243         * call.c (build_addr_func): Update.
244         * class.c (resolve_address_of_overloaded_function): Update.
245         * cp-lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
246         * cp-tree.h (cxx_mark_addressable): New.
247         * decl.c (register_dtor_fn, cxx_maybe_build_cleanup): Update.
248         * decl2.c (build_cleanup): Update.
249         * except.c (build_throw): Update.
250         * init.c (resolve_offset_ref): Update.
251         * pt.c (convert_nontype_argument): Update.
252         * semantics.c (finish_asm_stmt, simplify_affr_init_exprs_r): Update.
253         * typeck.c (decay_conversion, build_array_ref, build_unary_op,
254         unary_complex_lvalue): Update.
255         (mark_addressable): Rename.
256
257 2002-04-01  Roger Sayle  <roger@eyesopen.com>
258
259         PR c++/5998:
260         * decl.c (duplicate_decls):  Overwrite the RTL when (and only
261         when) overwriting a built-in function.  Don't use COPY_DECL_RTL,
262         but follow the SET_DECL_RTL idiom used elsewhere in the function.
263
264 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
265
266         * cp-lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
267         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
268         * decl.c (grokdeclarator): Update.
269         * mangle.c (write_integer_cst): Update.
270         * typeck.c (build_binary_op): Update.
271
272 2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>
273
274         * cp-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Redefine.
275         * lex.c (cxx_init): Don't set hook.
276
277 2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>
278
279         * Make-lang.in (error.o): Update.
280         * cp-lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine.
281         * cp-tree.h (struct diagnostic_context): Predeclare.
282         (cxx_print_error_function): New.
283         * error.c: Include langhooks-def.h.
284         (lang_print_error_function): Rename.  Update.
285         (init_error): Don't set hook.
286
287 2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>
288
289         * cp-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
290         Redefine.
291         * cvt.c (cp_convert_to_pointer, type_promotes_to): Use new hooks.
292         * decl.c (finish_enum): Similarly.
293         * error.c (dump_type): Similarly.
294         * lex.c (cxx_init): Similarly.
295         * mangle.c (write_builtin_type): Similarly.
296         * typeck.c (comptypes): Similarly.
297
298 2002-03-28  Roger Sayle  <roger@eyesopen.com>
299
300         PR c++/5998:
301         * decl.c (cxx_init_decl_processing): Re-enable built-in functions
302         in the g++ front-end.
303         (duplicate_decl): Allow redefinition of anticipated built-ins.
304         Fix inlining problem by over-writing the old DECL_RTL.
305         (lookup_namespace_name): Fail to find an identifier in the
306         specified namespace if its still anticipated.
307         (builtin_function_1): New function split out from builtin_function
308         to create a builtin in the current namespace with given context.
309         (builtin_function): Call builtin_function_1 to define the
310         appropriate builtins in both the std and global namespaces.
311         (select_decl): Don't test for anticipated decls here.
312         (unqualified_namespace_lookup): Instead ignore them whilst
313         searching through scopes and namespaces.
314         * decl2.c (do_nonmember_using_decl): If a using declaration
315         specifies an anticipated built-in function, mark it as no longer
316         anticipated in that scope.
317         (ambiguous_decl):  Avoid resolving to an anticipated decl.
318         * lex.c (do_scoped_id): Fail to find an identifier in the global
319         namespace if its still anticipated.
320
321 2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>
322
323         * cp-lang.c (LANG_HOOKS_MAKE_TYPE): Redefine.
324         * cp-tree.h (cp_make_lang_type): Rename.
325         * lex.c (cp_make_lang_type): Rename.
326         (make_aggr_type): Update.
327         * tree.c (init_tree): Don't set make_lang_type_fn.
328
329 2002-03-29  Jakub Jelinek  <jakub@redhat.com>
330
331         PR c++/6073
332         * class.c (finish_struct_1): Update static field's DECL_MODE even
333         if its type is a variant of t.
334
335 2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
336
337         * cp-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Redefine.
338         * cp-tree.h (cxx_insert_default_attributes): New.
339         * decl.c (insert_default_attributes): Rename.
340
341 2002-03-27  Mark Mitchell  <mark@codesourcery.com>
342
343         PR c++/4884
344         * call.c (build_op_delete_call): Allow for the fact the placement
345         may be a COMPOUND_EXPR.
346         
347 2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
348
349         * cp-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
350         * cp-tree.h (init_cplus_expand): Remove.
351         (cxx_expand_expr): New.
352         * expr.c (cplus_expand_expr): Rename cxx_expand_expr,
353         fix prototype.
354         (init_cplus_expand): Remove.
355         * lex.c (cxx_init): Don't call init_cplus_expand.
356
357 2002-03-26  Mark Mitchell  <mark@codesourcery.com>
358
359         PR c++/4884.
360         * init.c (build_new_1): Allow for the fact the result of
361         build_function_call may be a COMPOUND_EXPR.
362
363 2002-03-26  Nathan Sidwell  <nathan@codesourcery.com>
364
365         PR c++/5682
366         * cp-tree.h (BINFO_PRIMARY_P): Explain meaning better.
367         (dfs_skip_nonprimary_vbases_unmarkedp): Remove.
368         (dfs_skip_nonprimary_vbases_markedp): Remove.
369         * search.c (get_shared_vbase_if_not_primary): Remove.
370         (dfs_skip_nonprimary_vbases_unmarkedp): Remove.
371         (dfs_skip_nonprimary_vbases_markedp): Remove.
372         (dfs_unmarked_real_bases_queue_p): Just get the canonical binfo.
373         (dfs_marked_real_bases_queue_p): Likewise.
374
375 2002-03-26  Neil Booth  <neil@daikokuya.demon.co.uk>
376
377         * cp-lang.c (LANG_HOOKS_MARK_TREE): Redefine.
378         * cp-tree.h (cxx_mark_tree): New.
379         * decl.c (lang_mark_tree): Rename cxx_mark_tree.
380
381 2002-03-25  Neil Booth  <neil@daikokuya.demon.co.uk>
382
383         * cp-tree.h (cxx_maybe_build_cleanup): New.
384         * decl.c (destroy_local_var, hack_incomplete_structures): Update.
385         (maybe_build_cleanup): Rename cxx_maybe_build_cleanup.
386         * tree.c (build_target_expr): Update.
387         * cp-lang.c (LANG_HOOKS_MAYBE_BUILD_CLEANUP): Redefine.
388
389 2002-03-24  Neil Booth  <neil@daikokuya.demon.co.uk>
390
391         * decl2.c (cxx_decode_option): Handle -E.
392         * lang-specs.h (default_compilers): Preprocess with cc1plus.
393         * lex.c (cxx_init): Exit quickly if c_common_init returns NULL.
394
395 2002-03-23  Jakub Jelinek  <jakub@redhat.com>
396
397         PR c++/6037
398         * decl.c (start_enum): Don't set TREE_ADDRESSABLE on TREE_LIST node.
399
400 2002-03-23  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
401
402         * error.c (dump_type): Be careful about implicit typenames.
403
404 2002-03-21  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
405
406         PR C++/3656
407         * semantics.c (finish_base_specifier): Handle erronous base
408         classes. 
409
410 2002-03-22  Zack Weinberg  <zack@codesourcery.com>
411
412         * error.c: Always use REAL_VALUE_TO_DECIMAL; don't test
413         REAL_IS_NOT_DOUBLE.
414
415 2002-03-22  Jeff Knaggs  <jknaggs@redhat.com>
416
417         * typeck.c (get_member_function_from_ptrfunc): Scale idx down to
418         an index into the vtable_entry array regardless of
419         TARGET_PTRMEMFUNC_VBIT_LOCATION.
420
421 2002-03-21  Aldy Hernandez  <aldyh@redhat.com>
422
423         * tree.c (cp_cannot_inline_tree_fn): Same.
424
425 2002-03-21  Neil Booth  <neil@daikokuya.demon.co.uk>
426
427         * cp-tree.h (pushdecl, pushlevel, poplevel, set_block,
428         insert_block, getdecls, global_bindings_p): New.
429
430 2002-03-20  Nathan Sidwell  <nathan@codesourcery.com>
431
432         PR c++/4361
433         * mangle.c (struct globals) Add internal_mangling_p member.
434         (write_template_param): Do internal mangling, if needed.
435         (mangle_conv_op_name_for_type): Request internal mangling.
436
437 2002-03-20  Jason Merrill  <jason@redhat.com>
438
439         PR c++/2136
440         * init.c (build_delete): Check access for a member op delete here.
441         * decl2.c (delete_sanity): Not here.
442
443 2002-03-19  Jason Merrill  <jason@redhat.com>
444
445         PR c++/5118
446         * class.c (get_vfield_name): Use the constructor_name.
447
448 2002-03-20  Neil Booth  <neil@daikokuya.demon.co.uk>
449
450         * cp-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
451         * cp-tree.h (lang_printable_name): Rename.
452         * error.c (lang_decl_name): Use new hook.
453         * lex.c (cxx_init): Remove old hook.
454         * pt.c (tsubst_decl): Use new hook.
455         * tree.c (lang_printable_name): Rename.
456
457 2002-03-18  Eric Botcazou  <ebotcazou@multimania.com>
458
459         PR c++/3882
460         * pt.c (tsubst_decl): Move __PRETTY_FUNCTION__ handling...
461         (tsubst_expr) [DECL_STMT]: ...here. And substitute the initializer
462         only after recording the declaration.
463
464 2002-03-18  Jason Merrill  <jason@redhat.com>
465
466         PR c++/2039
467         * init.c (resolve_offset_ref): Hand off to build_component_ref.
468
469         PR c++/4222, c++/5995
470         * call.c (build_over_call): Fix empty class logic.
471
472         PR c++/3870
473         * cp-tree.h (struct saved_scope): Add last_parms field.
474         * decl.c (maybe_push_to_top_level): Save last_function_parms.
475         (pop_from_top_level): Restore it.
476
477         PR c++/4377
478         * mangle.c (write_expression): Strip NOP_EXPRs sooner.  Also strip
479         NON_LVALUE_EXPRs.
480
481         PR c++/4003
482         * pt.c (tsubst_friend_function): Use decl_namespace_context.
483
484         PR c++/3948 -- C++ ABI change, followup to 2001-12-18 patch.
485         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE for a
486         type with a nontrivial destructor.
487
488 2002-03-17  Jason Merrill  <jason@redhat.com>
489
490         PR c++/4460
491         * class.c (build_base_path): Virtual base layout is fixed in
492         in-charge [cd]tors.
493
494 2002-03-17  Neil Booth  <neil@daikokuya.demon.co.uk>
495
496         * cp-lang.c (LANG_HOOKS_PARSE_FILE): Redefine.
497         * parse.y (yyparse): Remove macro.
498
499 2002-03-17  Jason Merrill  <jason@redhat.com>
500
501         PR c++/5757
502         * init.c (build_new_1): Pass the right pointer to op delete.
503
504 2002-03-16  Nathan Sidwell  <nathan@codesourcery.com>
505
506         PR c++/4361
507         * cp-tree.h (CLASSTYPE_METHOD_VEC): Document where templated
508         conversion operators go.
509         (struct lang_decl_flags): Add template_conv_p and unused
510         bitfields.
511         (DECL_TEMPLATE_CONV_FN_P): New macro.
512         * call.c (build_user_type_conversion_1): Don't check second type
513         conversion of overload set first.
514         * class.c (add_method): Make sure templated conversion operators
515         all end up on slot 2.
516         * lex.c (do_identifier): A conversion operator token might be
517         satisfied by a templated conversion operator.
518         * pt.c (check_explicit_specialization): Use
519         CLASSTYPE_FIRST_CONVERSION_SLOT.
520         (template_parm_this_level_p): New function.
521         (push_template_decl_real): Determine DECL_TEMPLATE_CONV_FN_P.
522         * search.c (lookup_fnfields_1): Template conversions will be on
523         the first slot.
524         * typeck.c (build_component_ref): Preserve the type of an
525         conversion operator name on the overload type.
526         (build_x_function_call): Retrieve the conversion operator name.
527
528 2002-03-15  Richard Henderson  <rth@redhat.com>
529
530         * init.c (build_new_1): Use size_binop instead of cp_build_binary_op.
531
532 2002-03-15  Mark Mitchell  <mark@codesourcery.com>
533
534         * cp-tree.h (CLEANUP_DECL): Remove.
535         (CLEANUP_EXPR): Likewise.
536         * decl.c (destroy_local_var): Simplify.
537         (maybe_build_cleanup): Tidy.
538         * dump.c (cp_dump_tree): Remove handling of CLEANUP_STMT.
539         * semantics.c (cp_expand_stmt): Likewise.
540         * cp/tree.c (cp_statement_code_p): Likewise.
541
542 2002-03-15  Jason Merrill  <jason@redhat.com>
543
544         PR c++/5857
545         * decl.c (duplicate_decls): Use merge_types instead of common_type.
546         * typeck.c (common_type): Just hand off to
547         type_after_usual_arithmetic_conversions and
548         composite_pointer_type.
549         (merge_types): New fn.
550         (commonparms): Use it instead of common_type.
551         (type_after_usual_arithmetic_conversions): Also handle COMPLEX_TYPE.
552         (composite_pointer_type): Also handle attributes.
553         * cp-tree.h: Declare merge_types.
554
555         * decl.c (make_rtl_for_nonlocal_decl): Also defer COMDAT
556         variables.
557         * decl2.c (maybe_make_one_only): Also mark the decl as needed.
558
559 2002-03-14  Richard Henderson  <rth@redhat.com>
560
561         * decl.c: Include c-pragma.h.
562         (start_decl, start_function): Invoke maybe_apply_pragma_weak.
563         * Make-lang.in: Update dependencies.
564
565 2002-03-14  Jakub Jelinek  <jakub@redhat.com>
566
567         PR c++/5908
568         * call.c (build_over_call): Set TREE_NO_UNUSED_WARNING too.
569         * cvt.c (convert_to_void): Preserve TREE_NO_UNUSED_WARNING.
570
571 2002-03-12  Richard Sandiford  <rsandifo@redhat.com>
572
573         * mangle.c (write_builtin_type): Handle 128-bit integers even if
574         they are not a standard integer type.
575
576 2002-03-12  Richard Sandiford  <rsandifo@redhat.com>
577
578         * cp-tree.h (init_init_processing): Remove declaration.
579         * init.c (BI_header_type, init_init_processing): Remove old ABI stuff.
580         * decl.c (cxx_init_decl_processing): Don't call init_init_processing.
581
582 2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
583
584         * cp-lang.c (tree_code_type, tree_code_length, tree_code_name):
585         Define.
586         * decl.c (duplicate_decls): Use TREE_CODE_LENGTH, not
587         tree_code_length.
588         * lex.c (cplus_tree_code_type, cplus_tree_code_length,
589         cplus_tree_code_name): Delete.
590         (cxx_init): Don't call add_c_tree_codes, instead set
591         lang_unsafe_for_reeval.  Don't try to copy into the various
592         tree_code arrays.
593
594 2002-03-12  Nathan Sidwell  <nathan@codesourcery.com>
595
596         PR c++/5659
597         * decl.c (xref_tag): Don't set CLASSTYPE_DECLARED_CLASS here.
598         * decl2.c (handle_class_head): Set CLASSTYPE_DECLARED_CLASS for
599         definitions.
600
601 2002-03-11  Nathan Sidwell  <nathan@codesourcery.com>
602
603         Revert 2001-03-26  Nathan Sidwell  <nathan@codesourcery.com>,
604         DR209 is now not a defect.
605         * cp-tree.h (skip_type_access_control): Remove.
606         * decl.c (grokdeclarator): Do type access control for friend
607         declarations.
608         * semantics.c (decl_type_access_control): Don't reset
609         current_type_lookups.
610         (save_type_access_control): Always save the lookups.
611         (skip_type_access_control): Remove.
612         (finish_class_definition): Don't change type_lookups.
613
614 2002-03-11  Nathan Sidwell  <nathan@codesourcery.com>
615
616         Revert 2000-12-01  Nathan Sidwell  <nathan@codesourcery.com>,
617         It is incorrect.
618         * typeck.c (build_static_cast): Compare non-qualified types
619         with pointer to member conversions.
620
621 2002-03-11  Dan Nicolaescu  <dann@ics.uci.edu>
622             Daniel Berlin  <dan@dberlin.org>
623
624         * cp-lang.c (ok_to_generate_alias_set_for_type): New function.
625         (cxx_get_alias_set): Use it.
626
627 2002-03-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
628
629         * cp-tree.h (stabilize_expr): Prototype.
630
631 2002-03-08  Craig Rodrigues  <rodrigc@gcc.gnu.org>
632
633         * cp-tree.h (CLEAR_BINFO_MARKED): Make both parts of
634         conditional return void.
635
636 2002-03-08  Neil Booth  <neil@daikokuya.demon.co.uk>
637
638         * cp-lang.c (LANG_HOOKS_UNSAVE): Redefine.
639         * cp-tree.h (cxx_unsave): New.
640         * tree.c (cp_unsave): Rename cxx_unsave, update prototype.
641         (init_tree): Update.
642
643 2002-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
644
645         * decl.c (cxx_init_decl_processing): Use ARRAY_SIZE in lieu of
646         explicit sizeof/sizeof.
647         * decl2.c (cxx_decode_option): Likewise.
648         * lex.c (init_reswords, REDUCE_LENGTH, TOKEN_LENGTH): Likewise.
649
650 2002-03-02  Nathan Sidwell  <nathan@codesourcery.com>
651
652         PR c++/775
653         * decl.c (lookup_tag): Only reject enum/class mismatch, not
654         class/union mismatch.
655         * parse.y (check_class_key): New function.
656         (structsp): Call it.
657
658 2002-03-01  Michael Matz  <matz@suse.de>
659
660         * typeck.c (cp_pointer_int_sum): Complete inner type which is
661         used later by size_in_bytes().
662
663 2002-03-01  Phil Edwards  <pme@gcc.gnu.org>
664
665         * cp-tree.h:  Require __GNUC__ to be #defined.
666         (build_init):  Add missing prototype.
667
668 2002-03-01  Jason Merrill  <jason@redhat.com>
669
670         * except.c: Don't include decl.h or obstack.h.  Do include
671         tree-inline.h.
672         (build_throw): Destroy temporaries from the thrown
673         expression before calling __cxa_throw.  Construct a thrown 
674         temporary directly into the exception object.
675         (stabilize_throw_expr): New function.
676         (wrap_cleanups_r): New function.
677         * tree.c (stabilize_expr): New function.
678         * init.c (build_init): New function.
679         * Make-lang.in (cp/except.o): Adjust .h deps.
680
681 2002-02-28  Jason Merrill  <jason@redhat.com>
682
683         * search.c (lookup_base_r): Don't clear is_non_public just because
684         we found a friendly scope.
685
686         * decl.c (finish_function): Only warn about missing return
687         statement with -Wreturn-type.
688
689 2002-02-28  Neil Booth  <neil@daikokuya.demon.co.uk>
690
691         * class.c (build_clone): Update.
692         * cp-lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
693         * cp-tree.h (cxx_dup_lang_specific_decl): New.
694         * lex.c (copy_lang_decl): Rename cxx_dup_lang_specific_decl.
695         (copy_decl): Update.
696         * method.c (make_thunk): Update.
697
698 2002-02-27  Zack Weinberg  <zack@codesourcery.com>
699
700         * decl2.c: Delete traditional-mode-related code copied from
701         the C front end but not used, or used only to permit the
702         compiler to link.
703
704 2002-02-24 Craig Rodrigues  <rodrigc@gcc.gnu.org> 
705
706         PR c++/4093
707         * cp-tree.h (SET_BINFO_MARKED): Cast false part of condition
708         to void.
709
710 2002-02-22  Jakub Jelinek  <jakub@redhat.com>
711
712         PR other/5746
713         * semantics.c (finish_switch_cond): Don't call get_unwidened
714         if error_mark_node.
715
716 2002-02-22  Nathan Sidwell  <nathan@codesourcery.com>
717
718         PR c++/2645, DR 295
719         * cp-tree.h (tsubst_flags_t): Add tf_ignore_bad_quals,
720         tf_keep_type_decl.
721         (make_typename_type): Use tsubst_flags_t.
722         * decl.c (make_typename_type): Adjust. Return non-artificial
723         TYPE_DECLs, if required.
724         (grokdeclarator): Simplify CVR qualification handling. Allow bad
725         qualifiers on typedef types.
726         * decl2.c (handle_class_head): Adjust make_typename_type call.
727         * parse.y (nested_name_specifier): Likewise.
728         (typename_sub0): Likewise.
729         (typename_sub1): Likewise.
730         * pt.c (convert_template_argument): Adjust make_typename_type
731         return value.
732         (tsubst): Adjust cp_build_qualified_type_real calls.
733         (check_cv_quals_for_unify): Cope with alowing bad qualifications
734         on template type parms.
735         (instantiate_decl): Recheck substitutions to give warnings on bad
736         qualifications.
737         * tree.c (cp_build_qualified_type_real): Use tf_allow_bad_quals.
738
739 2002-02-21  Aldy Hernandez  <aldyh@redhat.com>
740
741         * cp/decl.c (duplicate_decls): Merge always_inline attribute.
742
743         * cp/tree.c (cp_cannot_inline_tree_fn): Do not inline at -O0
744         unless DECL_ALWAYS_INLINE.
745
746 2002-02-20  Jakub Jelinek  <jakub@redhat.com>
747
748         * typeck.c (cp_pointer_int_sum): Renamed from
749         pointer_int_sum, call pointer_int_sum.
750
751 2002-02-20  Jakub Jelinek  <jakub@redhat.com>
752
753         * decl.c (duplicate_decls): Return 0 if issued error about
754         redeclaration.
755
756 2002-02-19  Jason Merrill  <jason@redhat.com>
757
758         ABI change: Mangle `void (A::*)() const' as 
759         M1AKFvvE, not MK1AFvvE.
760         * mangle.c (write_function_type): Write cv-quals for member
761         function type here.
762         (write_pointer_to_member_type): Not here.
763
764 2002-02-18  Jason Merrill  <jason@redhat.com>
765
766         * pt.c (do_type_instantiation): Don't pedwarn if in_system_header.
767         (do_decl_instantiation): Likewise.
768
769 2002-02-17  Craig Rodrigues  <rodrigc@gcc.gnu.org>
770
771         PR c++/5685
772         * decl.c (duplicate_decls): Make warning unconditional
773         if duplicate default argument declarations are present.
774
775 2002-02-17  Jakub Jelinek  <jakub@redhat.com>
776
777         * typeck.c (build_binary_op) [BIT_XOR_EXPR]: Remove explicit
778         shortening.
779
780 2002-02-15  Nathan Sidwell  <nathan@codesourcery.com>
781
782         * decl.c (grokdeclarator): Set typedef_decl for all TYPE_DECLs,
783         remove incorrect comment. Move #if 0'd code to common path. Use
784         IMPLICIT_TYPENAME_P. Simplify & reformat ARRAY_TYPE duplication.
785
786 2002-02-13  Jason Merrill  <jason@redhat.com>
787
788         * decl.c (builtin_function): Set TREE_THIS_VOLATILE on return fns.
789         (finish_function): Don't warn if current_function_returns_null.
790
791         * typeck2.c (digest_init): Do handle values of vector type.
792
793         * typeck2.c (digest_init, process_init_constructor): Treat vectors
794         like arrays.
795
796 2002-02-11  Jason Merrill  <jason@redhat.com>
797
798         * parse.y (reserved_declspecs): Don't handle attributes.
799         (reserved_typespecquals): Handle them here.
800         * Make-lang.in (parse.c): Adjust expected conflicts.
801
802 2002-02-08  Jakub Jelinek  <jakub@redhat.com>
803
804         * parse.y (primary, primary_no_id): Use compstmt_or_stmtexpr
805         instead of compstmt.
806         (compstmt_or_stmtexpr): Renamed from compstmt.
807         (compstmt): In addition to compstmt_or_stmtexpr clear last_expr_type.
808
809 2002-02-07  Nathan Sidwell  <nathan@codesourcery.com>
810
811         Rename instantiate_type_flags to tsubst_flags_t & expand use.
812         * cp-tree.h (instantiate_type_flags): Rename to ...
813         (tsubst_flags_t): ... here. Rename itf_complain to tf_error,
814         add tf_warning flag.
815         (instantiate_type): Adjust prototype.
816         (tsubst, tsubst_expr, tsubst_copy, lookup_template_class,
817         do_type_instantiation, cp_build_qualified_type_real): Likewise.
818         cp_build_qualified_type: Adjust.
819         * class.c (instantiate_type): Adjust parameter. Rename itf_* to
820         tf_*.
821         * call.c (standard_conversion): Rename itf_* to tf_*.
822         (reference_binding): Likewise.
823         (convert_like_real): Likewise.
824         * cvt.c (cp_convert_to_pointer): Likewise.
825         (convert_to_reference): Likewise.
826         * decl.c (lookup_namespace_name): Use tf_* flags.
827         (make_typename_type): Likewise.
828         (grokdeclarator): Likewise.
829         * pt.c (convert_nontype_argument): Adjust COMPLAIN usage.
830         (coerce_template_template_parms, convert_template_argument,
831         coerce_template_parms, maybe_get_template_decl_from_type_decl,
832         lookup_template_class, tsubst_friend_function, tsubst_friend_class,
833         instantiate_class_template, tsubst_template_arg_vector, 
834         tsubst_template_parms, tsubst_aggr_type, tsubst_default_argument, 
835         tsubst_decl, tsubst_arg_types, tsubst_function_type,
836         tsubst_call_declarator_parms, tsubst, tsubst_copy, tsubst_expr, 
837         instantiate_template, fn_type_unification,
838         resolve_overloaded_unification, verify_class_unification, 
839         unify, get_bindings_real, do_type_instantiation, 
840         regenerate_decl_from_template, instantiate_decl, 
841         tsubst_initializer_list, tsubst_enum,
842         get_mostly_instantiated_function_type,
843         invalid_nontype_parm_type_p): Likewise.
844         * tree.c (cp_build_qualified_type_real): Likewise.
845         * typeck.c (build_binary_op): Rename itf_* to tf_*.
846         (build_ptrmemfunc): Likewise.
847         (convert_for_assignment): Likewise.
848
849 2002-02-07  Nathan Sidwell  <nathan@codesourcery.com>
850
851         PR c++/109
852         * decl.c (grokdeclarator): Allow friend declarations from
853         dependent types.
854         * decl2.c (handle_class_head): Don't push into template parm contexts.
855         * pt.c (push_template_decl_real): Template parm contexts are never
856         being defined.
857
858 2002-02-05  Alexandre Oliva  <aoliva@redhat.com>
859
860         * class.c: Include target.h.
861         (check_bitfield_decl): Disregard EMPTY_FIELD_BOUNDARY,
862         BITFIELDS_NBYTES_LIMITED and PCC_BITFIELD_TYPE_MATTERS for MS
863         bit-field layout.
864         * Make-lang.in: Adjust deps.
865
866 2002-02-05  Jason Merrill  <jason@redhat.com>
867
868         * error.c (dump_type): Be more helpful about VECTOR_TYPE.
869
870 2002-02-04  Jakub Jelinek  <jakub@redhat.com>
871
872         * semantics.c (begin_switch_stmt): Clear SWITCH_TYPE.
873         (finish_switch_cond): Set SWITCH_TYPE.
874
875 2002-02-04  Richard Henderson  <rth@redhat.com>
876
877         * method.c (use_thunk): Always initialize the block tree.  Reindent.
878         * semantics.c (expand_body): Emit thunks after function, not before.
879
880 2002-02-04  Jason Merrill  <jason@redhat.com>
881
882         * decl.c (start_function): Call cplus_decl_attributes immediately
883         after grokdeclarator.
884
885         * decl.c (start_function): Combine DECL_RESULT handling code.
886
887 2002-02-03  Jason Merrill  <jason@redhat.com>
888
889         * xref.c: Remove.
890         * Make-lang.in (CXX_OBJS): Remove cp/xref.o
891         (cp/xref.o): Remove dependencies.
892         * class.c (finish_struct_1, check_methods): Don't call xref fns.
893         (finish_struct_1): Likewise.
894         * friend.c (make_friend_class): Likewise.
895         * lex.c (cxx_init, cxx_finish, extract_interface_info): Likewise.
896         * spew.c (read_process_identifier): Likewise.
897
898 2002-02-01  Jason Merrill  <jason@redhat.com>
899
900         PR c++/4872
901         * decl.c (finish_function): Warn about a non-void function with 
902         no return statement and no abnormal exit.
903         * cp-tree.h (struct cp_language_function): Add returns_abnormally.
904         (current_function_returns_abnormally): New macro.
905         * call.c (build_call): Set it.
906
907         * typeck.c (build_component_ref): Always complain about offsetof
908         constructs on non-PODs.  Only make it an error for members of
909         virtual bases.
910
911         * error.c (dump_scope): Don't add TFF_DECL_SPECIFIERS.
912         (dump_function_decl): Always dump parms.
913
914         * decl2.c (finish_static_data_member_decl): Complain about a local
915         class with a static data member.
916
917         PR c++/4286
918         * search.c (lookup_field_1): Don't xref a static data member
919         just because we looked it up.
920
921 2002-01-31  Jason Merrill  <jason@redhat.com>
922
923         * Make-lang.in (parse.c): Handle .output file.
924
925         PR c++/3395
926         * decl.c (xref_tag): Remember early attributes in TYPE_ATTRIBUTES,
927         not TREE_TYPE.
928         * semantics.c (finish_class_definition): Adjust.
929
930         Allow attributes in parms and casts.
931         * parse.y (named_parm): Don't strip attrs.
932         (declmods): Remove 'attributes' production.
933         (nonempty_cv_qualifiers): Accept attributes.
934         (ATTRIBUTE): Give precedence.
935         * decl.c (groktypename): Handle attributes.
936         (grokparms): Likewise.
937
938 2002-01-29  Jakub Jelinek  <jakub@redhat.com>
939
940         * decl2.c (cxx_decode_option): Pass 0 as last argument to
941         cpp_handle_option.
942         * lang-specs.h: Use cpp_unique_options instead of cpp_options
943         when used together with cc1_options.
944
945 2002-01-29  Nathan Sidwell  <nathan@codesourcery.com>
946
947         PR c++/5132
948         * typeck2.c (digest_init): Make sure non-array core type is
949         instantiated.
950         * decl2.c (reparse_absdcl_as_casts): Just store the type in the
951         constructor, rather than build a new one.
952         (build_expr_from_tree, CONSTRUCTOR case): Be careful with the
953         PURPOSE of constructor elts.
954
955 2002-01-23  Zack Weinberg  <zack@codesourcery.com>
956
957         * Make-lang.in (parse.c): Adjust expected number of
958         shift-reduce conflicts.
959         (decl.o): Depend on diagnostic.h.
960         * decl.c: Include diagnostic.h.
961         (grokdeclarator): Check for null pointer.
962         (finish_function): Don't abort when
963         current_binding_level->parm_flag != 1, if errors have
964         occurred; throw away the statement tree and extra binding
965         levels, and continue.
966         * lex.c (note_list_got_semicolon): Check for null pointer.
967         * method.c (hack_identifier): Just return error_mark_node if
968         value is error_mark_node.
969         * parse.y (primary: TYPEID(type_id)): No need to use
970         TYPE_MAIN_VARIANT here.
971         (handler_seq): Accept an empty list of catch clauses and
972         generate a fake handler block to avoid later crashes.
973         (ansi_raise_identifier): Accept the error token too.
974         * semantics.c (begin_class_definition,
975         finish_class_definition): Check for error_mark_node.
976
977 2002-01-23  Zack Weinberg  <zack@codesourcery.com>
978
979         * typeck2.c (friendly_abort): Delete definition.
980         * cp-tree.h (friendly_abort): Don't prototype.
981         (my_friendly_assert): Use fancy_abort.
982
983 2002-01-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
984
985         * cp-tree.h (my_friendly_abort): Remove.
986
987 2002-01-23  Jakub Jelinek  <jakub@redhat.com>
988
989         * spew.c (pending_inlines, pending_inlines_tail,
990         processing_these_inlines): Make static.
991         (mark_pending_inlines): Remove static.
992         (begin_parsing_inclass_inline): If in function, save pi
993         for GC to cp_function_chain->unparsed_inlines instead.
994         (process_next_inline): Likewise.
995         * cp-tree.h (struct cp_language_function): Add unparsed_inlines.
996         (mark_pending_inlines): Add prototype.
997         * decl.c (spew_debug): Remove unused extern.
998         (mark_lang_function): Call mark_pending_inlines.
999
1000 2002-01-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
1001
1002         * call.c, class.c, decl.c, decl2.c, error.c, expr.c, friend.c,
1003         init.c, lex.c, mangle.c, method.c, pt.c, repo.c, rtti.c, search.c,
1004         semantics.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c:
1005         Change my_fancy_abort() to abort().
1006
1007 2002-01-23  Jason Merrill  <jason@redhat.com>
1008
1009         PR c++/5453
1010         * class.c (fixed_type_or_null): Fix thinko.
1011
1012         PR c++/3331
1013         * init.c (resolve_offset_ref): Use build_indirect_ref.
1014
1015         * decl2.c (grokclassfn): Don't set DECL_REGISTER on 'this'.
1016
1017 2002-01-22  Jason Merrill  <jason@redhat.com>
1018
1019         * parse.y (function_body): Suppress the block for the outermost
1020         curly braces.
1021         * decl.c (pushdecl): Don't try to skip it.
1022         (begin_function_body): Keep the block we create, not the next one.
1023         * init.c (emit_base_init): Don't mess with keep_next_level.
1024
1025         * class.c (build_base_path): Tweak formatting.
1026
1027 2002-01-19  Nathan Sidwell  <nathan@codesourcery.com>
1028
1029         Fix regression introduced with patch for c++/775
1030         * parse.y (class_head_defn): Check for template specializations
1031         with a different class-key.
1032
1033 2002-01-17  Jason Merrill  <jason@redhat.com>
1034
1035         * decl.c (begin_constructor_body, begin_destructor_body): New fns.
1036         (begin_function_body): Call them and keep_next_level.
1037         * init.c (emit_base_init): Call keep_next_level.
1038         * semantics.c (setup_vtbl_ptr): Lose.
1039         * cp-tree.h (struct cp_language_function): Remove vtbls_set_up_p.
1040         (vtbls_set_up_p): Lose.
1041         * pt.c (tsubst_expr, CTOR_INITIALIZER): Call emit_base_init.
1042         * method.c (do_build_copy_constructor): Likewise.
1043         (synthesize_method): Call finish_mem_initializers.
1044         * parse.y (nodecls): Likewise.
1045
1046         * error.c (dump_type_suffix): Print the exception specs before
1047         recursing.
1048         (dump_function_decl): Here, too.
1049
1050         * cp-tree.h (TMPL_PARMS_DEPTH): Cast to signed HOST_WIDE_INT.
1051
1052 2002-01-10  Ira Ruben   <ira@apple.com>
1053
1054         PR c++/907
1055         * decl.c (start_method): Handle attrlist.
1056
1057 2002-01-10  Jakub Jelinek  <jakub@redhat.com>
1058
1059         * decl2.c (max_tinst_depth): Increase default limit to 500.
1060
1061 2002-01-10  Graham Stott  <grahams@redhat.com>
1062
1063         * spew.c (YYCHAR): Uppercase macro parameter and add
1064         parenthesis.
1065         (YYCODE): Likewise.
1066         (NAME): Uppercase macro parameter.
1067
1068 2002-01-09  Graham Stott  <grahams@redhat.com>
1069
1070         * decl.h (grokdeclarator): Wrap long line.
1071
1072         * semantics.c (FINISH_COND): Uppercase macro paramaters and
1073         add parenthesis.
1074
1075 2002-01-08  Graham Stott  <grahams@redhat.com>
1076
1077         * xref.c (FILE_NAME_ABSOLUTE_P): Add parenthesis.
1078         (PALLOC): Uppercase macro parameter and whitespace.
1079         (SALLOC): Uppercase macro parameter.
1080         (SFREE): Uppercase macros parameter, add parenthese and
1081         whitespace.
1082         (STREQL): Uppercase macro parameter and whitespace.
1083         (STRNEQ): Likewise.
1084         (STRLSS): Likewise.
1085         (STRLEQ): Likewise.
1086         (STRGTR): Likewise.
1087         (STRGEQ): Likewise.
1088
1089         * call.c (convert_like): Add parenthesis and wrap.
1090         (convert_like_with_context): Likewise.
1091         (ICS_RANK): Whitespace.
1092         (NEED_TEMPORARY_P): Remove parenthesis.
1093
1094         * class.c (VTT_TOP_LEVEL_P): Uppercase macro parameter and
1095         whitespace.
1096         (VTT_MARKED_BINFO_P): Likewise.
1097
1098         * decl.c (BINDING_LEVEL): Add parenthesis.
1099         (DEF_OPERATOR): Likewise.
1100
1101         * mangle.c (MANGLE_TRACE): Add parenthesis.
1102         (MANGLE_TRACE_TREE): Likewise.
1103         (write_signed_number): Likewise.
1104         (write_unsigned_number): Likewise.
1105
1106         * pt.c (ccat): Uppercase macro parameter.
1107         (cat): Likewise
1108
1109         * search.c (SET_BINFO_ACCESS): Add parenthesis.
1110
1111 2002-01-07  Jason Merrill  <jason@redhat.com>
1112
1113         * decl2.c (coerce_new_type): Downgrade error for size_t mismatch
1114         to pedwarn.
1115
1116         PR c++/3536
1117         * method.c (make_thunk): If !flag_weak, give the thunk the
1118         function's linkage.
1119         (use_thunk): Here, too.
1120
1121 2002-01-07  Graham Stott  <grahams@redhat.com>
1122
1123         * error.c: Update copyright date.
1124         (print_scope_operator): Add parenthesis.
1125         (print_left_paren): Likewise.
1126         (print_right_paren): Likewise.
1127         (print_left_bracket): Likewise.
1128         (print_right_bracket): Likewise.
1129         (print_template_argument_list_start): Likewise.
1130         (print_template_argument_list_end): Likewise.
1131         (print_non_consecutive_character): Likewise.
1132         (print_tree_identifier): Likewise.
1133         (print_identifier): Likewise.
1134         (NEXT_CODE): Uppercase macro parameter.
1135         (ident_fndecl): Delete unused.
1136         (GLOBAL_THING): Likewise.
1137
1138 2002-01-06  Graham Stott  <grahams@redhat.com>
1139
1140         * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK): Add parenthesis.
1141         (VAR_FUNCTION_OR_PARM_DECL_CHECK): Likewise.
1142         (VAR_TEMPL_TYPE_OR_FUNCTION_DECL_CHECK) Likewise.
1143         (RECORD_OR_UNION_TYPE_CHECK): Likewise.
1144         (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Likewise.
1145         (C_IS_RESERVED_WORD): Uppercase macro parameter.
1146         (C_RID_YYCODE) Likewise.
1147         (ptrmem_cst): Use rtx.
1148         (LOCAL_BINDING_P): Add whitespace.
1149         (INHERITED_VALUE_BINDING_P): Likewise.
1150         (BINDING_SCOPE): Wrap long line.
1151         (BINDING_HAS_LEVEL_P): Remove parenthesis.
1152         (BINDING_VALUE): Wrap long line.
1153         (BINDING_TYPE): Whitespace.
1154         (IDENTIFIER_GLOBAL_VALUE): Add parenthesis.
1155         (SET_IDENTIFIER_GLOBAL_VALUE): Likewise.
1156         (IDENTIFIER_NAMESPACE_VALUE): Likewise.
1157         (SET_IDENTIFIER_NAMESPACE_VALUE: Likewise.
1158         (same_type_p): Uppercase macro parameters.
1159         (same_type_ignoring_top_level_qualifiers_p): Likewise.
1160         (OVL_FUNCTION): Wrap long line.
1161         (OVL_CHAIN): Whitespace.
1162         (OVL_CURRENT): Add parenthesis and whitespace.
1163         (OVL_NEXT): Whitespace.
1164         (OVL_USED): Likewise.
1165         (IDENTIFIER_TYPE_VALUE): Likewise.
1166         (REAL_IDENTIFIER_TYPE_VALUE): Remove parenthesis.
1167         (SET_IDENTIFIER_TYPE_VALUE): Add parenthesis and whitespace.
1168         (LANG_ID_FIELD): Whitespace.
1169         (SET_LANG_ID(NODE,VALUE,NAME): Likewise.
1170         (IDENTIFIER_LABEL_VALUE): Whitespace and wrap.
1171         (SET_IDENTIFIER_LABEL_VALUE): Whitespace.
1172         (IDENTIFIER_IMPLICIT_DECL): Whitespace and wrap.
1173         (SET_IDENTIFIER_IMPLICIT_DECL); Whitespace.
1174         (IDENTIFIER_ERROR_LOCUS): Whitespace and wrap.
1175         (SET_IDENTIFIER_ERROR_LOCUS); Whitespace.
1176         (IDENTIFIER_VIRTUAL_P): Likewise.
1177         (IDENTIFIER_OPNAME_P): Likewise.
1178         (IDENTIFIER_TYPENAME_P): Remove parenthesis.
1179         (C_TYPE_FIELDS_READONLY): Uppercase macro parameters.
1180         (C_SET_EXP_ORIGINAL_CODE): Likewise.
1181         (TYPE_ASSEMBLER_NAME_STRING): Wrap long line.
1182         (TYPE_ASSEMBLER_NAME_LENGTH): Likewise.
1183         (IS_AGGR_TYPE): Uppercase macro parameter.
1184         (CLASS_TYPE_P): Likewise.
1185         (IS_AGGR_TYPE_CODE): Uppercase macro parameter and parenthesis.
1186         (IS_AGGR_TYPE_2): Whitespace.
1187         (TAGGED_TYPE_P): Uppercase macro parameter.
1188         (TYPE_BUILT_IN): Whitespace.
1189         (TYPE_FOR_JAVA): Likewise.
1190         (FUNCTION_ARG_CHAIN): Remove parenthesis.
1191         (FUNCTION_FIRST_USER_PARMTYPE): Add parenthesis.
1192         (FUNCTION_FIRST_USER_PARAM): Likewise.
1193         (PROMOTES_TO_AGGR_TYPE): Whitespace.
1194         (DERIVED_FROM_P): Add parenthesis and wrap.
1195         (UNIQUELY_DERIVED_FROM_P): Likewise.
1196         (ACCESSIBLY_UNIQUELY_DERIVED_P): Likewise.
1197         (PUBLICLY_UNIQUELY_DERIVED_P): Likewise.
1198         (CLASSTYPE_USE_TEMPLATE): Whitespace.
1199         (CLASSTYPE_INLINE_FRIENDS): Remove parenthesis.
1200         (TYPE_GETS_DELETE): Add parenthesis.
1201         (TYPE_HAS_CONVERSION): Add parenthesis and wrap.
1202         (TYPE_HAS_ASSIGN_REF): Likewise,
1203         (TYPE_HAS_CONST_ASSIGN_REF): Likewise.
1204         (TYPE_HAS_INIT_REF): Likewise.
1205         (TYPE_HAS_CONST_INIT_REF): Likewise.
1206         (TYPE_BEING_DEFINED): Likewise.
1207         (TYPE_LANG_SPECIFIC): Likewise.
1208         (CLASSTYPE_RTTI): Likewise.
1209         (TYPE_OVERLOADS_CALL_EXPR): Likewise.
1210         (TYPE_OVERLOADS_ARRAY_REF): Likewise.
1211         (TYPE_OVERLOADS_ARROW): Likewise.
1212         (TYPE_USES_MULTIPLE_INHERITANCE): Likewise.
1213         (TYPE_USES_VIRTUAL_BASECLASSES): Add parenthesis.
1214         (CLASSTYPE_METHOD_VEC): Likewise.
1215         (CLASSTYPE_MARKED_N): Likewise.
1216         (CLASSTYPE_MARKED): Likewise.
1217         (CLASSTYPE_MARKED2): Likewise.
1218         (CLASSTYPE_MARKED3): Likewise.
1219         (CLASSTYPE_MARKED4): Likewise.
1220         (CLASSTYPE_MARKED5): Likewise.
1221         (CLASSTYPE_MARKED6): Likewise.
1222         (SET_CLASSTYPE_MARKED): Whitespace.
1223         (CLEAR_CLASSTYPE_MARKED): Likewise.
1224         (SET_CLASSTYPE_MARKED2): Likewise.
1225         (CLEAR_CLASSTYPE_MARKED2): Likewise.
1226         (SET_CLASSTYPE_MARKED3): Likewise.
1227         (CLEAR_CLASSTYPE_MARKED3): Likewise.
1228         (SET_CLASSTYPE_MARKED4): Likewise.
1229         (CLEAR_CLASSTYPE_MARKED4): Likewise.
1230         (SET_CLASSTYPE_MARKED5): Likewise.
1231         (CLEAR_CLASSTYPE_MARKED5): Likewise.
1232         (SET_CLASSTYPE_MARKED6): Likewise.
1233         (CLEAR_CLASSTYPE_MARKED6): Likewise.
1234         (CLASSTYPE_TAGS): Likewise.
1235         (CLASSTYPE_VSIZE): Likewise.
1236         (CLASSTYPE_VBASECLASSES): Likewise.
1237         (CANONICAL_BINFO): Add parenthesis.
1238         (CLASSTYPE_SIZE(NODE): Likewise.
1239         (CLASSTYPE_SIZE_UNIT): Likewise.
1240         (CLASSTYPE_ALIGN(NODE): Likewise.
1241         (CLASSTYPE_USER_ALIGN): Likewise.
1242         (TYPE_JAVA_INTERFACE): Likewise.
1243         (CLASSTYPE_PURE_VIRTUALS): Likewise.
1244         (CLASSTYPE_NEEDS_VIRTUAL_REINIT): Whitespace and wrap.
1245         (TYPE_HAS_DEFAULT_CONSTRUCTOR): Likewise.
1246         (CLASSTYPE_HAS_MUTABLE): Likewise.
1247         (CLASSTYPE_FRIEND_CLASSES): Likewise. Likewise.
1248         (CLASSTYPE_DECLARED_CLASS): Whitespace and wrap.
1249         (CLASSTYPE_READONLY_FIELDS_NEED_INIT): Likewise.
1250         (CLASSTYPE_REF_FIELDS_NEED_INIT): Likewise.
1251         (CLASSTYPE_INTERFACE_ONLY): Likewise.
1252         (CLASSTYPE_INTERFACE_KNOWN): Likewise.
1253         (CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
1254         (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
1255         (SET_CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
1256         (SET_CLASSTYPE_INTERFACE_KNOWN): Likewise.
1257         (CLASSTYPE_DEBUG_REQUESTED): Whitespace and wrap.
1258         (BINFO_UNSHARED_MARKED): Whitespace.
1259         (BINFO_MARKED): Whitespace and wrap.
1260         (SET_BINFO_MARKED): Likewise.
1261         (CLEAR_BINFO_MARKED): Likewise.
1262         (BINFO_VTABLE_PATH_MARKED): Likewise.
1263         (SET_BINFO_VTABLE_PATH_MARKED): Likewise.
1264         (CLEAR_BINFO_VTABLE_PATH_MARKED): Likewise.
1265         (BINFO_SUBVTT_INDEX): Remove parenthesis.
1266         (BINFO_VPTR_INDEX): Likewise.
1267         (BINFO_PRIMARY_BASE_OF): Likewise,
1268         (CLASSTYPE_VFIELDS): Whitespace.
1269         (VF_DERIVED_VALUE): Wrap long line.
1270         (NAMESPACE_LEVEL): Whitespace.
1271         (CAN_HAVE_FULL_LANG_DECL_P): Remove parenthesis.
1272         (DEFARG_POINTER): Whitespace.
1273         (DECL_NEEDED_P): Remove parenthesis.
1274         (DECL_LANGUAGE): Whitespace.
1275         (SET_DECL_LANGUAGE): Add parenthesis.
1276         (DECL_CONSTRUCTOR_P): Whitespace and wrap.
1277         (DECL_OVERLOADED_OPERATOR_P): Remove parenthesis.
1278         (DECL_IN_AGGR_P): Whitespace.
1279         (DECL_FRIEND_P): Likewise.
1280         (DECL_BEFRIENDING_CLASSES): Likewise.
1281         (DECL_STATIC_FUNCTION_P): Whitespace and wrap.
1282         (DECL_NONCONVERTING_P): Whitespace.
1283         (DECL_PURE_VIRTUAL_P): Likewise.
1284         (DECL_NEEDS_FINAL_OVERRIDER_P): Likewise.
1285         (DECL_PENDING_INLINE_INFO): Whitespace.
1286         (DECL_SORTED_FIELDS): Likewise.
1287         (DECL_DEFERRED_FN): Likewise.
1288         (DECL_TEMPLATE_INFO): Likewise.
1289         (CLASSTYPE_TEMPLATE_INFO): Whitespace and wrap.
1290         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO); Likewise.
1291         (SET_TYPE_TEMPLATE_INFO): Add parenthesis.
1292         (TMPL_ARGS_LEVEL): Likewise.
1293         (SET_TMPL_ARGS_LEVEL): Likewise.
1294         (INNERMOST_TEMPLATE_PARMS): Whitespace.
1295         (C_TYPEDEF_EXPLICITLY_SIGNED): Uppercase macro parameter.
1296         (INTEGRAL_CODE_P(CODE): Add parenthesis.
1297         (CP_INTEGRAL_TYPE_P): Remove parenthesis.
1298         (TYPE_HAS_CONSTRUCTOR): Whitespace.
1299         (TREE_HAS_CONSTRUCTOR): Likewise.
1300         (TYPE_HAS_DESTRUCTOR): Likewise.
1301         (TYPE_HAS_REAL_ASSIGN_REF): Likewise.
1302         (TYPE_HAS_COMPLEX_ASSIGN_REF): Likewise.
1303         (TYPE_HAS_ABSTRACT_ASSIGN_REF): Likewise.
1304         (TYPE_HAS_COMPLEX_INIT_REF): Likewise.
1305         (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Likewise.
1306         (TYPE_PTRMEMFUNC_P): Likewise.
1307         (TYPE_PTRMEMFUNC_FLAG): Likewise.
1308         (TYPE_GET_PTRMEMFUNC_TYPE): Likewise.
1309         (TYPE_SET_PTRMEMFUNC_TYPE): Likewise.
1310         (TYPE_PTRMEM_CLASS_TYPE): Remove parenthesis.
1311         (TYPE_PTRMEM_POINTED_TO_TYPE): Likewise.
1312         (DECL_ACCESS): Whitespace.
1313         (DECL_GLOBAL_CTOR_P): Remove parenthesis.
1314         (DECL_GLOBAL_DTOR_P): Likewise.
1315         (GLOBAL_INIT_PRIORITY): Likewise.
1316         (DECL_TEMPLATE_PARMS): Likewise.
1317         (DECL_TEMPLATE_RESULT): Likewise.
1318         (DECL_TEMPLATE_INSTANTIATIONS): Likewise.
1319         (DECL_TEMPLATE_SPECIALIZATIONS): Likewise.
1320         (DECL_IMPLICIT_TYPEDEF_P): Remove parenthesis.
1321         (SET_DECL_IMPLICIT_TYPEDEF_P): Likewise.
1322         (PRIMARY_TEMPLATE_P): Add parenthesis.
1323         (DECL_USE_TEMPLATE): Whitespace.
1324         (CLASSTYPE_IMPLICIT_INSTANTIATION): Likewise.
1325         (SET_CLASSTYPE_IMPLICIT_INSTANTIATION): Likewise.
1326         (CLASSTYPE_EXPLICIT_INSTANTIATION): Likewise.
1327         (SET_CLASSTYPE_EXPLICIT_INSTANTIATION): Likewise.
1328         (CALL_DECLARATOR_PARMS): Remove parenthesis.
1329         (CALL_DECLARATOR_QUALS): Likewise.
1330         (CALL_DECLARATOR_EXCEPTION_SPEC): Likewise.
1331         (TEMP_NAME_P): Wrap.
1332         (VFIELD_NAME_P): Likewise.
1333         (B_SET): Uppercase macro parameters and add parenthesis.
1334         (B_CLR): Likewise.
1335         (B_TST): Likewise.
1336         (LOOKUP_NAMESPACES_ONLY): Uppercase macro parameters.
1337         (LOOKUP_TYPES_ONLY): Uppercase macro parameters.
1338         (LOOKUP_QUALIFIERS_ONLY): Uppercase macro parameters.
1339         (same_or_base_type_p): Likewise.
1340         (cp_deprecated): Likewise.
1341
1342 2002-01-05  Richard Henderson  <rth@redhat.com>
1343
1344         * semantics.c (expand_body): Revert last change.
1345
1346 2002-01-04  Jason Merrill  <jason@redhat.com>
1347
1348         PR c++/4122
1349         * class.c (update_vtable_entry_for_fn): Set delta to zero for a
1350         lost primary.
1351
1352         * class.c (build_vtbl_initializer): Check for a lost primary
1353         before calculating the vtable entry to throw away.
1354
1355 2002-01-02  Jason Merrill  <jason@redhat.com>
1356
1357         * semantics.c (expand_body): Call outlining_inline_function when
1358         emitting an inline function out of line.
1359
1360 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
1361
1362         PR c++/5116, c++/764 reversion
1363         * call.c (build_new_op): Revert the instantiations. They are
1364         incorrect.
1365
1366 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
1367
1368         PR c++/5089
1369         * decl2.c (reparse_absdcl_as_casts): Don't warn about casts to void.
1370
1371 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
1372
1373         PR c++/3716
1374         * pt.c (tsubst_aggr_type): Move pmf handling into tsubst.
1375         (tsubst, case POINTER_TYPE): Handle pmfs here.
1376         (tsubst, case OFFSET_TYPE): Check it is not an offset to
1377         reference. If it is offset to FUNCTION_TYPE, create a METHOD_TYPE.
1378
1379 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
1380
1381         PR c++/35
1382         * cp-tree.h (DECL_LANG_FLAG_0): Used for PARM_DECL too.
1383         (DECL_TEMPLATE_PARM_P): A PARM_DECL might be one too.
1384         * pt.c (process_template_parm): SET_DECL_TEMPLATE_PARM_P on the
1385         PARM_DECL.
1386         (tsubst_template_parms): Break up loop statements.
1387         (tsubst_decl, case PARM_DECL): Copy DECL_TEMPLATE_PARM_P. Template
1388         parm PARM_DECLs don't get promoted.
1389
1390 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
1391
1392         PR c++/5123
1393         * typeck.c (build_component_ref): Cope with a TEMPLATE_ID_EXPR.
1394         (build_x_function_call): Cope with a COMPONENT_REF containing a
1395         TEMPLATE_ID_EXPR.
1396
1397 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
1398
1399         PR c++/5213
1400         * pt.c (convert_template_argument): Be more careful determining
1401         when RECORD_TYPE templates are or are not templates.
1402
1403 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
1404
1405         PR c++/775
1406         * cp-tree.h (handle_class_head): Adjust prototype.
1407         * decl2.c (handle_class_head): Add DEFN_P and NEW_TYPE_P
1408         parameters. Use for all class heads.
1409         * parse.y (named_class_head_sans_basetype, named_class_head,
1410         named_complex_class_head_sans_basetype,
1411         named_class_head_sans_basetype_defn,
1412         unnamed_class_head): Remove.
1413         (class_head, class_head_apparent_template): Recognize class heads
1414         (class_head_decl, class_head_defn): New reductions. Process class
1415         heads.
1416         (structsp): Adjust class definition and class declaration
1417         reductions.
1418         (maybe_base_class_list): Give diagnostic on empty list.
1419
1420 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
1421
1422         PR c++/4379
1423         * typeck.c (build_x_unary_op): Don't destroy the OFFSET_REF on a
1424         single non-static member.
1425         (unary_complex_lvalue): If it cannot be a pointer to member, don't
1426         make it so. Check it is not pointer to reference.
1427
1428 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
1429
1430         PR c++/5132
1431         * decl2.c (reparse_absdcl_as_casts): Don't digest_init if we
1432         are processing a template decl.
1433
1434 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
1435
1436         PR c++/5116, c++/764
1437         * call.c (build_new_op): Make sure template class operands are
1438         instantiated. Simplify arglist construction.
1439
1440 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
1441
1442         * call.c (build_user_type_conversion_1): Use my_friendly_assert
1443         rather than if ... abort.
1444         * cvt.c (convert_to_reference): Likewise.
1445         * semantics.c (setup_vtbl_ptr): Likewise.
1446         * pt.c (lookup_template_class): Comment typo.
1447
1448 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
1449
1450         PR c++/5125
1451         * pt.c (push_template_decl_real): Make sure DECL has
1452         DECL_LANG_SPECIFIC.
1453
1454 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
1455
1456         PR c++/335
1457         * init.c (resolve_offset_ref): Copy cv qualifiers of this pointer
1458         for non-reference fields.
1459         * typeck.c (require_complete_type): Use resolve_offset_ref).
1460
1461 2001-12-26  Nathan Sidwell  <nathan@codesourcery.com>
1462
1463         PR c++/196
1464         * parse.y (bad_parm): Better diagnostic when given a SCOPE_REF.
1465
1466 2001-12-24  Nathan Sidwell  <nathan@codesourcery.com>
1467
1468         PR c++/160
1469         * typeck.c (build_modify_expr): Remove old unreachable code & tidy
1470         up. Don't stabilize_references when initializing a reference.
1471
1472 2001-12-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1473
1474         * decl2.c (lang_f_options): Const-ify.
1475
1476 2001-12-20  Joseph S. Myers  <jsm28@cam.ac.uk>
1477
1478         * config-lang.in (diff_excludes): Remove.
1479
1480 2001-12-19  Nathan Sidwell  <nathan@codesourcery.com>
1481
1482         PR c++/90
1483         * typeck.c (build_function_call_real): Use original function
1484         expression for errors.
1485
1486 2001-12-18  Jason Merrill  <jason@redhat.com>
1487
1488         PR c++/3242
1489         * class.c (add_method): Do compare 'this' quals when trying to match a
1490         used function.  Don't defer to another used function.
1491
1492 2001-12-18  Nathan Sidwell  <nathan@codesourcery.com>
1493
1494         * pt.c (instantiate_clone): Remove, fold into ...
1495         (instantiate_template): ... here. Simplify by removing mutual
1496         recursion.
1497         * typeck2.c (build_m_component_ref): Don't cv qualify the function
1498         pointed to by a pointer to function.
1499         * class.c (delete_duplicate_fields_1): Typo.
1500
1501 2001-12-18  Jason Merrill  <jason@redhat.com>
1502
1503         C++ ABI change: destroy value arguments in caller.
1504         * semantics.c (genrtl_start_function, genrtl_finish_function): Don't
1505         create an extra binding level for the parameters.
1506         * decl.c (store_parm_decls): Don't do parameter cleanups.
1507
1508 2001-12-18  Nathan Sidwell  <nathan@codesourcery.com>
1509
1510         * call.c (build_new_method_call): Use '%#V'.
1511         * error.c (cv_to_string): Use V parameter to determine padding.
1512
1513 2001-12-18  Joseph S. Myers  <jsm28@cam.ac.uk>
1514
1515         * call.c, decl2.c, init.c: Use "built-in" and "bit-field"
1516         spellings in messages.
1517
1518 2001-12-17  Zack Weinberg  <zack@codesourcery.com>
1519
1520         * cp-tree.h: Delete #defines for cp_error, cp_warning,
1521         cp_pedwarn, and cp_compiler_error.
1522         * call.c, class.c, cp-tree.h, cvt.c, decl.c, decl2.c, error.c,
1523         except.c, friend.c, init.c, lex.c, method.c, parse.y, pt.c,
1524         rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
1525         typeck2.c: Change calls to the above macros to use their
1526         language-independent equivalents: error, warning, pedwarn, and
1527         internal_error respectively.
1528
1529 2001-12-16  Neil Booth  <neil@daikokuya.demon.co.uk>
1530
1531         * decl2.c (finish_file): Remove back_end_hook.
1532
1533 2001-12-16  Joseph S. Myers  <jsm28@cam.ac.uk>
1534
1535         * ChangeLog.1, ChangeLog.2, ChangeLog, NEWS, call.c, class.c,
1536         cp-tree.h, decl.c, decl2.c, except.c, operators.def, optimize.c,
1537         pt.c, rtti.c, semantics.c, typeck.c: Fix spelling errors.
1538
1539 2001-12-15  Joseph S. Myers  <jsm28@cam.ac.uk>
1540
1541         * lang-options.h: Use American spelling in messages.
1542
1543 2001-12-13  Jason Merrill  <jason@redhat.com>
1544
1545         * Make-lang.in (parse.h): Separate rule, just depend on parse.c.
1546
1547         Use cleanups to run base and member destructors.
1548         * init.c (push_base_cleanups): New function, split out from...
1549         (build_delete): ...here.  Lose !TYPE_HAS_DESTRUCTOR code.
1550         * decl.c (finish_destructor_body): Move vbase destruction code to
1551         push_base_cleanups.
1552         (begin_function_body, finish_function_body): New fns.
1553         (finish_function): Move [cd]tor handling and call_poplevel to
1554         finish_function_body.
1555         (pushdecl): Skip the new level.
1556         * semantics.c (genrtl_try_block): Don't call end_protect_partials.
1557         (setup_vtbl_ptr): Call push_base_cleanups.
1558         * method.c (synthesize_method): Call {begin,end}_function_body.
1559         * pt.c (tsubst_expr): Handle COMPOUND_STMT_BODY_BLOCK.
1560         * cp-tree.h: Declare new fns.
1561         * parse.y (function_body, .begin_function_body): New nonterminals.
1562         (fndef, pending_inline, function_try_block): Use function_body.
1563         (ctor_initializer_opt, function_try_block): No longer has a value.
1564         (base_init): Remove .set_base_init token.
1565         (.set_base_init, compstmt_or_error): Remove.
1566         * Make-lang.in (parse.c): Expect two fewer s/r conflicts.
1567
1568         * optimize.c (maybe_clone_body): Fix parameter updating.
1569
1570 2001-12-12  Jason Merrill  <jason@redhat.com>
1571
1572         * decl.c (store_parm_decls): Remove parms_have_cleanups cruft.
1573         * semantics.c (genrtl_start_function): Don't pass
1574         parms_have_cleanups or push an extra binding level.
1575         (genrtl_finish_function): Lose cleanup_label cruft.
1576
1577         * cp-tree.h (struct cp_language_function): Remove x_ctor_label.
1578         (ctor_label): Remove.
1579         * semantics.c (finish_return_stmt): Lose ctor_label support.
1580         * decl.c (finish_constructor_body, mark_lang_function): Likewise.
1581         * typeck.c (check_return_expr): Check DECL_DESTRUCTOR_P, not
1582         dtor_label.
1583
1584         * call.c (build_new_method_call): Let resolves_to_fixed_type_p
1585         check for [cd]tors.
1586         * class.c (fixed_type_or_null, case INDIRECT_REF): Fix.
1587
1588         * decl.c (finish_function): Check VMS_TARGET, not VMS.
1589
1590         * decl.c (start_cleanup_fn): Remove redundant pushlevel.
1591         (end_cleanup_fn): And poplevel.
1592
1593         * semantics.c (setup_vtbl_ptr): Always build a CTOR_INITIALIZER
1594         if we're in a template.
1595
1596 2001-12-12  Jakub Jelinek  <jakub@redhat.com>
1597
1598         * cp-tree.h (DESTRUCTOR_DECL_PREFIX, DESTRUCTOR_NAME_P,
1599         ANON_PARMNAME_FORMAT, ANON_PARMNAME_P, DESTRUCTOR_NAME_FORMAT,
1600         THIS_NAME_P): Delete.
1601         * spew.c (read_process_identifier): Remove DESTRUCTOR_NAME_P,
1602         THIS_NAME_P and ANON_PARMNAME_P tests from warning about clash
1603         with internal naming scheme.
1604         * error.c (dump_decl): Remove DESTRUCTOR_NAME_P use.
1605
1606 2001-12-12  Nathan Sidwell  <nathan@codesourcery.com>
1607
1608         * decl.c (grokdeclarator): Deprecated implicit typename use.
1609
1610 2001-12-11  Nathan Sidwell  <nathan@codesourcery.com>
1611
1612         PR g++/51
1613         * parse.y (frob_specs): Indicate it is a language linkage which
1614         contained the extern.
1615         * decl.c (grokdeclarator): Allow extern language linkage with
1616         other specifiers.
1617
1618 2001-12-10  Nathan Sidwell  <nathan@codesourcery.com>
1619
1620         PR g++/72
1621         * decl.c (add_binding): Don't reject duplicate typedefs involving
1622         template parameters.
1623
1624 2001-12-10  Neil Booth  <neil@daikokuya.demon.co.uk>
1625
1626         * parse.y, semantics.c: Similarly.
1627
1628 2001-12-09  Nathan Sidwell  <nathan@codesourcery.com>
1629
1630         PR g++/87
1631         * cp-tree.h (DECL_COPY_CONSTRUCTOR_P): Use copy_fn_p.
1632         (copy_args_p): Rename to ...
1633         (copy_fn_p): ... here.
1634         (grok_special_member_properties): New function.
1635         (grok_op_properties): Lose VIRTUALP parameter.
1636         (copy_assignment_arg_p): Remove.
1637         * call.c (build_over_call): Use copy_fn_p.
1638         * decl.c (grokfndecl): Reformat. Adjust call to
1639         grok_op_properties.
1640         (copy_args_p): Rename to ...
1641         (copy_fn_p): ... here. Reject template functions. Check for pass
1642         by value.
1643         (grok_special_member_properties): Remember special functions.
1644         (grok_ctor_properties): Don't remember them here, just check.
1645         (grok_op_properties): Likewise.
1646         (start_method): Call grok_special_member_properties.
1647         * decl2.c (grokfield): Likewise.
1648         (copy_assignment_arg_p): Remove.
1649         (grok_function_init): Don't remember abstract assignment here.
1650         * pt.c (instantiate_class_template): Call
1651         grok_special_member_properties.
1652         (tsubst_decl): Adjust grok_op_properties call.
1653
1654 2001-12-08  Aldy Hernandez  <aldyh@redhat.com>
1655
1656         * lex.c (rid_to_yy): Add RID_CHOOSE_EXPR and
1657         RID_TYPES_COMPATIBLE_P.
1658
1659 2001-12-08  John David Anglin  <dave@hiauly1.hia.nrc.ca>
1660
1661         * semantics.c (simplify_aggr_init_exprs_r): Add DIRECT_BIND flag in
1662         call to build_aggr_init.
1663         * cp-tree.h (DIRECT_BIND): Document new use of DIRECT_BIND.
1664
1665 2001-12-08  Neil Booth  <neil@daikokuya.demon.co.uk>
1666
1667         * parse.y: Replace uses of the string non-terminal with STRING.
1668         Don't perform string concatentaion here.
1669         (string): Remove non-terminal.
1670         * semantics.c (finish_asm_stmt): Don't concatenate strings here.
1671
1672 2001-12-05  Jason Merrill  <jason@redhat.com>
1673
1674         * cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Define.
1675         (LANG_HOOKS_TREE_INLINING_END_INLINING): Define.
1676         * tree.c (cp_start_inlining, cp_end_inlining): New fns.
1677         * pt.c (push_tinst_level): No longer static.
1678         * cp-tree.h: Declare them.
1679
1680         * init.c (resolve_offset_ref): Don't check access for the base
1681         conversion to access a FIELD_DECL.
1682
1683         * cp-tree.h (TYPE_REFFN_P): New macro.
1684         * decl.c (bad_specifiers): Check it, too.
1685
1686         * rtti.c (create_pseudo_type_info): Set CLASSTYPE_INTERFACE_ONLY
1687         on the __*_type_info type if we haven't seen a definition.
1688
1689 2001-12-05  Neil Booth  <neil@daikokuya.demon.co.uk>
1690
1691         * decl.c: Include c-common.h.
1692         (shadow_warning): Move to c-common.c.
1693
1694 Wed Dec  5 17:00:49 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1695
1696         * decl.c (duplicate_decls): Don't copy DECL_NO_CHECK_MEMORY_USAGE.
1697
1698 2001-12-04  Nathan Sidwell  <nathan@codesourcery.com>
1699
1700         * pt.c (end_template_parm_list): Clear TREE_CHAIN of each parm.
1701
1702 2001-12-04  Nathan Sidwell  <nathan@codesourcery.com>
1703
1704         PR g++/164
1705         * init.c (sort_base_init): Allow binfos to be directly specified.
1706         * method.c (do_build_copy_constructor): Explicitly convert to the
1707         base instance.
1708         (do_build_assign_ref): Likewise.
1709
1710 2001-12-03  Hans-Peter Nilsson  <hp@bitrange.com>
1711
1712         * decl.c (xref_basetypes): Don't use C99 construct in tag_code
1713         declaration and initialization.
1714
1715 2001-12-03  Neil Booth  <neil@daikokuya.demon.co.uk>
1716
1717         * typeck2.c: Remove leading capital from diagnostic messages, as
1718         per GNU coding standards.
1719
1720 2001-12-03  Mumit Khan  <khan@nanotech.wisc.edu>
1721
1722         PR c++/3394
1723         * decl.c (xref_basetypes): Handle attributes between
1724         'class' and name.
1725
1726 2001-12-03  Nathan Sidwell  <nathan@codesourcery.com>
1727
1728         PR g++/3381
1729         * parse.y (named_complex_class_head_sans_basetype): Add new
1730         reduction.
1731         * Make-lang.in (parse.c): Adjust expected conflict count.
1732
1733 2001-12-03  Jason Merrill  <jason@redhat.com>
1734
1735         * class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the
1736         immediate binfos for our virtual bases.
1737
1738 2001-12-02  Neil Booth  <neil@daikokuya.demon.co.uk>
1739
1740         * call.c (build_java_interface_fn_ref): Similarly.
1741         * except.c (is_admissible_throw_operand): Similarly.
1742         * init.c (build_java_class_ref): Similarly.
1743         * xref.c (open_xref_file): Similarly.
1744
1745 2001-12-01  Neil Booth  <neil@daikokuya.demon.co.uk>
1746
1747         * class.c (finish_struct): Remove trailing periods from messages.
1748         * decl.c (check_tag_decl): Similarly.
1749         * lex.c (cxx_set_yydebug): Similarly.
1750         * typeck2.c (friendly_abort): Similarly.
1751
1752 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
1753
1754         PR c++/3048
1755         * cp-tree.h (ovl_member): Remove.
1756         * decl2.c (merge_functions): Handle extern "C" functions
1757         specially.
1758         * tree.c (ovl_member): Remove.
1759
1760 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
1761
1762         PR c++/4842
1763         * class.c (get_basefndecls): Take an IDENTIFIER_NODE, not a
1764         FUNCTION_DECL, as input.
1765         (mark_overriders): Remove.
1766         (warn_hidden): Rework for the new ABI.
1767
1768 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
1769
1770         PR c++/3471
1771         * call.c (convert_like_real): Do not build additional temporaries
1772         for rvalues of class type.
1773
1774 2001-11-28  Nathan Sidwell  <nathan@codesourcery.com>
1775
1776         * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Use lookup base.
1777         (ACCESSIBLY_UNIQUELY_DERIVED_FROM_P): Likewise.
1778         (PUBLICLY_UNIQUELY_DERIVED_FROM_P: Likewise.
1779         (DERIVED_FROM_P): Likewise.
1780         (enum base_access): Renumber, add ba_quiet bit mask.
1781         (get_binfo): Remove.
1782         (get_base_distance): Remove.
1783         (binfo_value): Remove.
1784         (ACCESSIBLY_DERIVED_FROM_P): Remove.
1785         * call.c (standard_conversion): Use lookup_base.
1786         * class.c (strictly_overrides): Likewise.
1787         (layout_virtual_bases): Likewise.
1788         (warn_about_ambiguous_direct_bases): Likewise.
1789         (is_base_of_enclosing_class): Likewise.
1790         (add_vcall_offset_vtbl_entries_1): Likewise.
1791         * cvt.c (build_up_reference): Adjust comment.
1792         * init.c (build_member_call): Reformat.
1793         * search.c (get_binfo): Remove.
1794         (get_base_distance_recursive): Remove.
1795         (get_base_distance): Remove.
1796         (lookup_base_r): Tweak.
1797         (lookup_base): Add ba_quiet control. Complete the types here.
1798         (covariant_return_p): Use lookup_base.
1799         * tree.c (binfo_value): Remove.
1800         (maybe_dummy_object): Use lookup_base.
1801         * typeck.c (build_static_cast): Use lookup_base.
1802         (get_delta_difference): Likewise.
1803         * typeck2.c (binfo_or_else): Use lookup_base.
1804         (build_scoped_ref): Add back error_mark_check.
1805         (build_m_component_ref): Use lookup_base.
1806
1807 2001-11-29  Joseph S. Myers  <jsm28@cam.ac.uk>
1808
1809         * Make-lang.in (c++.generated-manpages): New dummy target.
1810
1811 Tue Nov 27 09:03:47 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1812
1813         * Make-lang.in (cp-lang.o): Depends on c-common.h.
1814         * cp-lang.c (c-common.h): Include.
1815         (LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_SAFE_FROM_P): New hooks.
1816         * decl.c (cxx_init_decl_processing): Don't set lang_safe_from_p.
1817         * expr.c (init_cplus_expand): Don't set lang_expand_constant.
1818
1819 2001-11-26  Neil Booth  <neil@daikokuya.demon.co.uk>
1820
1821         * decl2.c (c_language): Move to c-common.c.
1822         * lex.c (cxx_post_options, cxx_init_options): Use c-common.c
1823         functions.
1824         (cxx_init): Update.
1825
1826 2001-11-26  Jason Merrill  <jason@redhat.com>
1827
1828         * call.c (joust): Remove COND_EXPR hack.
1829
1830 2001-11-25  Aldy Hernandez  <aldyh@redhat.com>
1831
1832         * search.c (lookup_base_r): Declare bk in variable declaration
1833         space.
1834
1835 2001-11-25  Nathan Sidwell  <nathan@codesourcery.com>
1836
1837         PR g++/3145
1838         * class.c (build_vbase_pointer): Remove.
1839         (build_vbase_path): Remove.
1840         (build_base_path): New function.
1841         * cp-tree.h (base_access, base_kind): New enumerations.
1842         (build_base_path): Declare.
1843         (convert_pointer_to_real): Remove.
1844         (convert_pointer_to): Remove.
1845         (lookup_base): Declare.
1846         (convert_pointer_to_vbase): Remove.
1847         * call.c (build_scoped_method_call): Use lookup_base &
1848         build_base_path instead of convert_pointer_to_real,
1849         get_base_distance & get_binfo.
1850         (build_over_call): Likewise.
1851         * cvt.c (cp_convert_to_pointer): Likewise.
1852         (convert_to_pointer_force): Likewise.
1853         (build_up_reference): Likewise.
1854         (convert_pointer_to_real): Remove.
1855         (convert_pointer_to): Remove.
1856         * init.c (dfs_initialize_vtbl_ptrs): Use build_base_path
1857         instead of convert_pointer_to_vbase & build_vbase_path.
1858         (emit_base_init): Use build_base_path instead of
1859         convert_pointer_to_real.
1860         (expand_virtual_init): Lose unrequired conversions.
1861         (resolve_offset_ref): Use lookup_base and build_base_path
1862         instead of convert_pointer_to.
1863         * rtti.c (build_dynamic_cast_1): Use lookup_base &
1864         build_base_path instead of get_base_distance & build_vbase_path.
1865         * search.c (get_vbase_1): Remove.
1866         (get_vbase): Remove.
1867         (convert_pointer_to_vbase): Remove.
1868         (lookup_base_r): New function.
1869         (lookup_base): New function.
1870         * typeck.c (require_complete_type): Use lookup_base &
1871         build_base_path instead of convert_pointer_to.
1872         (build_component_ref): Likewise.
1873         (build_x_function_call): Likewise.
1874         (get_member_function_from_ptrfunc): Likewise.
1875         (build_component_addr): Likewise.
1876         * typeck2.c (build_scoped_ref): Likewise.
1877
1878 2001-11-22  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
1879
1880         * cp-tree.h (CP_TYPE_QUALS): Removed.
1881         * decl.c (cxx_init_decl_processing): Don't set lang_dump_tree.
1882         * cp-lang.c: Set LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN and
1883         LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN.
1884         * dump.c (cp_dump_tree): Use void* dump_info argument to match
1885         lang-hooks prototype.
1886         * call.c, cp-tree.h, cvt.c, decl.c, init.c, mangle.c, method.c, pt.c,
1887         rtti.c, semantics.c, tree.c, typeck.c, typeck2.c: All references to
1888         CP_TYPE_QUALS changed to cp_type_quals.
1889         * Make-lang.in: References to c-dump.h changed to tree-dump.h.
1890         (CXX_C_OBJS): Remove c-dump.o.
1891
1892 2001-11-21  Mark Mitchell  <mark@codesourcery.com>
1893
1894         PR c++/3637
1895         * pt.c (lookup_template_class): Ensure that all specializations
1896         are registered on the list corresponding to the most general
1897         template.
1898
1899 2001-11-20  Mark Mitchell  <mark@codesourcery.com>
1900
1901         * call.c (non_reference): Add documentation.
1902         (convert_class_to_reference): Do not strip reference types
1903         from conversion operators.
1904         (maybe_handle_ref_bind): Simplify.
1905         (compare_ics): Correct handling of references.
1906
1907 2001-11-19  John Wilkinson <johnw@research.att.com>
1908
1909         * dump.c (dump_op): New function.
1910         (cp_dump_tree): Dump CLASSTYPE_TEMPLATE_SPECIALIZATION.  Use
1911         dump_op.  Dump DECL_MUTABLE, access and staticness for VAR_DECLs.
1912         DECL_PURE_VIRTUAL_P, DECL_VIRTUAL_P,
1913
1914 2001-11-19  Mark Mitchell  <mark@codesourcery.com>
1915
1916         PR4629
1917         * semantics.c (finish_sizeof): Make sure that expression created
1918         while processing a template do not have a type.
1919         (finish_alignof): Likewise.
1920         * typeck.c (c_sizeof): Likewise.
1921         (expr_sizeof): Likewise.
1922
1923 2001-11-18  Neil Booth  <neil@daikokuya.demon.co.uk>
1924
1925         * lex.c (cxx_finish): Call c_common_finish.
1926         (finish_parse): Remove.
1927
1928 2001-11-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1929
1930         * decl.c (create_array_type_for_decl): Check if NAME is NULL_TREE
1931         when displaying error message about missing array bounds.
1932
1933 2001-11-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1934
1935         * mangle.c (write_expression): Handle CAST_EXPR, STATIC_CAST_EXPR,
1936         CONST_CAST_EXPR.
1937         * operators.def: Add CAST_EXPR, STATIC_CAST_EXPR, CONST_CAST_EXPR.
1938
1939 2001-11-16  Neil Booth  <neil@daikokuya.demon.co.uk>
1940
1941         * cp-tree.h (print_class_statistics): Restore.
1942
1943 2001-11-15  Jason Merrill  <jason@redhat.com>
1944
1945         * method.c (use_thunk): Don't emit debugging information for thunks.
1946
1947         * parse.y: Add ... IDENTIFIER SCOPE and ... PTYPENAME SCOPE expansions.
1948         * decl.c (make_typename_type): Handle getting a class template.
1949         * search.c (lookup_field_r): A class template is good enough for
1950         want_type.
1951
1952         * call.c (convert_like_real): Only use cp_convert for the bad part.
1953         (standard_conversion): Also allow bad int->enum.
1954         * typeck.c (ptr_reasonably_similar): Also allow functions to
1955         interconvert.  Pointers to same-size integers are reasonably
1956         similar.
1957
1958         * cvt.c (convert_to_void): If we build a new COND_EXPR, always
1959         give it void type.
1960
1961 2001-11-15  Nathan Sidwell  <nathan@codesourcery.com>
1962
1963         PR g++/3154
1964         * init.c (sort_base_init): Remove unreachable code.
1965         (expand_member_init): Adjust comment to reflect reality. Simplify
1966         and remove unreachable code.
1967
1968 2001-11-15  Neil Booth  <neil@daikokuya.demon.co.uk>
1969
1970         * cp-tree.h (init_reswords, cxx_init_decl_processing): New.
1971         (cxx_init): Update prototype.
1972         * decl.c (init_decl_processing): Rename.  Move null node init
1973         to its creation time.
1974         * lex.c (cxx_init_options): Update.
1975         (cxx_init): Combine with old init_parse; also call
1976         cxx_init_decl_processing.
1977
1978 2001-11-14  Richard Sandiford  <rsandifo@redhat.com>
1979
1980         * decl.c (check_initializer): Try to complete the type of an
1981         array element before checking whether it's complete.  Don't
1982         complain about arrays with complete element types but an
1983         unknown size.
1984         (cp_finish_decl): Build the hierarchical constructor before
1985         calling maybe_deduce_size_from_array_init.
1986
1987 2001-11-14  Joseph S. Myers  <jsm28@cam.ac.uk>
1988
1989         * Make-lang.in: Change all uses of $(manext) to $(man1ext).
1990
1991 2001-11-13  Nathan Sidwell  <nathan@codesourcery.com>
1992
1993         PR g++/4206
1994         * parse.y (already_scoped_stmt): Remove.
1995         (simple_stmt, WHILE & FOR): Use implicitly_scoped_stmt.
1996
1997 2001-11-12  H.J. Lu <hjl@gnu.org>
1998
1999         * cvt.c (ocp_convert): Don't warn the address of a weak
2000         function is always `true'.
2001
2002 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
2003
2004         * cp-lang.c (LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
2005         LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
2006         LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): Override.
2007         * cp-tree.h (print_class_statistics): Remove.
2008         (cxx_print_statistics, cxx_print_xnode, cxx_print_decl, cxx_print_type,
2009         cxx_print_identifier, cxx_set_yydebug): New.
2010         * lex.c (set_yydebug): Rename c_set_yydebug.
2011         * ptree.c (print_lang_decl, print_lang_type, print_lang_identifier,
2012         lang_print_xnode): Rename.
2013         * tree.c (print_lang_statistics): Rename.
2014
2015 2001-11-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2016
2017         * class.c (dump_array): Fix format specifier warning.
2018
2019 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
2020
2021         * cp-lang.c (LANG_HOOKS_NAME): Override.
2022         (struct lang_hooks): Constify.
2023         * lex.c (cxx_init_options): Update.
2024         (lang_identify): Remove.
2025         * parse.y (language_string): Remove.
2026
2027 2001-11-08  Andreas Franck  <afranck@gmx.de>
2028
2029         * Make-lang.in (CXX_INSTALL_NAME, GXX_CROSS_NAME,
2030         DEMANGLER_CROSS_NAME): Handle program_transform_name the way
2031         suggested by autoconf.
2032         (GXX_TARGET_INSTALL_NAME, CXX_TARGET_INSTALL_NAME): Define.
2033         (c++.install-common): Use the transformed target alias names.
2034
2035 2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
2036
2037         * Make-lang.in: Update.
2038         * cp-lang.c: Include langhooks-def.h.
2039
2040 2001-11-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2041
2042         * pt.c (tsubst_copy): Call tsubst for TYPEOF_EXPR.
2043
2044 2001-11-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2045
2046         * lex.c (copy_lang_type): Add static prototype.
2047
2048 2001-11-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2049
2050         * pt.c (unify): Handle SCOPE_REF.
2051
2052 2001-11-01  Jakub Jelinek  <jakub@redhat.com>
2053
2054         * tree.c (cp_copy_res_decl_for_inlining): Adjust
2055         DECL_ABSTRACT_ORIGIN for the return variable.
2056
2057 2001-10-31  Zack Weinberg  <zack@codesourcery.com>
2058
2059         *  Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
2060
2061 2001-10-28  Joseph S. Myers  <jsm28@cam.ac.uk>
2062
2063         * ChangeLog.1, ChangeLog.2, ChangeLog, class.c, decl2.c, search.c,
2064         semantics.c, spew.c: Fix spelling errors.
2065
2066 2001-10-27  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2067
2068         * decl2.c (validate_nonmember_using_decl): Handle NAMESPACE_DECL.
2069
2070 2001-10-25  Zack Weinberg  <zack@codesourcery.com>
2071
2072         * cp-lang.c: Redefine LANG_HOOKS_CLEAR_BINDING_STACK to
2073         pop_everything.
2074
2075 Tue Oct 23 14:00:20 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2076
2077         * cp-lang.c (cxx_get_alias_set): New function.
2078         Point LANG_HOOKS_GET_ALIAS_SET to it.
2079
2080 2001-10-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2081
2082         * cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
2083         * cp-tree.h (make_unbound_class_template): Prototype new function.
2084         * decl.c (make_unbound_class_template): New function.
2085         * decl2.c (arg_assoc_template_arg): Handle UNBOUND_CLASS_TEMPLATE.
2086         * error.c (dump_type): Likewise.
2087         * mangle.c (write_type): Likewise.
2088         * parse.y (template_parm): Likewise.
2089         (template_argument): Use make_unbound_class_template.
2090         * pt.c (convert_template_argument): Handle UNBOUND_CLASS_TEMPLATE.
2091         (tsubst): Likewise.
2092         (tsubst_copy): Likewise.
2093         (unify): Likewise.
2094         * tree.c (walk_tree): Likewise.
2095         * typeck.c (comptypes): Likewise.
2096
2097 2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2098
2099         * xref.c (GNU_xref_member): Use safe-ctype macros and/or fold
2100         extra calls into fewer ones.
2101
2102 2001-10-18  Alexandre Oliva  <aoliva@redhat.com>
2103
2104         * decl.c (duplicate_decls): Propagate DECL_UNINLINABLE.
2105         Warn when merging inline with attribute noinline.
2106         (start_decl, start_function): Warn if inline and attribute
2107         noinline appear in the same declaration.
2108
2109 2001-10-16  H.J. Lu <hjl@gnu.org>
2110
2111         * cp-tree.h (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Defined
2112         for tree checking disabled.
2113
2114 2001-10-16  Hans-Peter Nilsson  <hp@axis.com>
2115
2116         * cp-tree.h (VFIELD_NAME_FORMAT) [NO_DOLLAR_IN_LABEL &&
2117         NO_DOT_IN_LABEL]: Adjust to match VFIELD_NAME.
2118
2119 2001-10-15  Richard Sandiford  <rsandifo@redhat.com>
2120
2121         * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Define.
2122         (unify): Only handle MINUS_EXPR specially if the above flag is set
2123         and the subtracted constant is 1.  Clear the flag on recursive calls.
2124         Set it when unifying the maximum value in an INTEGER_TYPE's range.
2125
2126 2001-10-15  Richard Sandiford  <rsandifo@redhat.com>
2127
2128         * decl.c (bad_specifiers): Don't allow exception specifications
2129         on any typedefs.
2130
2131 2001-10-14  Neil Booth  <neil@daikokuya.demon.co.uk>
2132
2133         * cp/lex.c (init_cp_pragma): Similarly.
2134
2135 2001-10-13  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2136
2137         * pt.c (lookup_template_class): Build complete template arguments
2138         for BOUND_TEMPLATE_TEMPLATE_PARM.
2139
2140 2001-10-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2141
2142         * cp-tree.h (TYPE_BINFO): Update comment.
2143         (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): New macro.
2144         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Use template_info.
2145         (TYPENAME_TYPE_FULLNAME): Use TYPE_FIELDS.
2146         (copy_type): Prototype new function.
2147         * lex.c (copy_lang_decl): Gather tree node statistics.
2148         (copy_lang_type): New function.
2149         (copy_type): Likewise.
2150         (cp_make_lang_type): Create lang_type for
2151         BOUND_TEMPLATE_TEMPLATE_PARM.  Set TYPE_BINFO for TYPENAME_TYPE
2152         and BOUND_TEMPLATE_TEMPLATE_PARM.
2153         * pt.c (tsubst): Use copy_type instead of copy_node.
2154         * search.c (lookup_field_1): Ignore TYPENAME_TYPE.
2155
2156 2001-10-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2157
2158         * pt.c (determine_specialization): Ignore functions without
2159         DECL_TEMPLATE_INFO.
2160
2161 2001-10-12  Nathan Sidwell  <nathan@codesourcery.com>
2162
2163         PR g++/4476
2164         * typeck2.c (abstract_virtuals_error): Ignore incomplete classes.
2165
2166 2001-10-11  Jason Merrill  <jason_merrill@redhat.com>
2167
2168         * typeck2.c (store_init_value): Don't re-digest a bracketed
2169         initializer.
2170
2171         * class.c (finish_struct_anon): Use TYPE_ANONYMOUS_P instead of
2172         ANON_AGGR_TYPE_P.
2173
2174 2001-10-11  Richard Henderson  <rth@redhat.com>
2175
2176         * class.c (build_vtable_entry_ref): Create a VTABLE_REF instead
2177         of an asm statement.
2178         (build_vtbl_ref_1): Split out from build_vtbl_ref.
2179         (build_vfn_ref): Use it to handle vtable descriptors before
2180         calling build_vtable_entry_ref.
2181         * decl2.c (output_vtable_inherit): Use assemble_vtable_inherit.
2182
2183 2001-10-10  Richard Henderson  <rth@redhat.com>
2184
2185         * parse.y (asm_operand): Allow named operands.
2186         * semantics.c (finish_asm_stmt): Tweek for changed location
2187         of the operand constrant.
2188
2189 2001-10-09  Jason Merrill  <jason_merrill@redhat.com>
2190
2191         * call.c (standard_conversion): Add bad conversion between
2192         integers and pointers.
2193         (convert_like_real): Don't use convert_for_initialization for bad
2194         conversions; complain here and use cp_convert.
2195         (build_over_call): Don't handle bad conversions specially.
2196         (perform_implicit_conversion): Allow bad conversions.
2197         (can_convert_arg_bad): New fn.
2198         * cp-tree.h: Declare it.
2199         * typeck.c (convert_for_assignment): Use it.
2200         (ptr_reasonably_similar): Any target type is similar to void.
2201
2202 2001-10-08  Alexandre Oliva  <aoliva@redhat.com>
2203
2204         * Make-lang.in (CXX_OBJS): Added cp-lang.o.
2205         (cp/cp-lang.o): New rule.
2206         * cp-tree.h: Declare hooks.
2207         * tree.c: Make hooks non-static.
2208         (init_tree): Don't initialize hooks here.
2209         * lex.c: Likewise.  Move definition of lang_hooks to...
2210         * cp-lang.c: ... new file.
2211
2212 2001-10-08  Richard Henderson  <rth@redhat.com>
2213
2214         * cp-tree.h (struct lang_decl_flags): Remove declared_inline.
2215         (DECL_DECLARED_INLINE_P): Use the bit in struct c_lang_decl.
2216
2217 2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2218
2219         * class.c (build_vtable_entry_ref): Const-ify.
2220         * decl.c (predefined_identifier,
2221         initialize_predefined_identifiers): Likewise.
2222         * init.c (build_new_1): Likewise.
2223         * lex.c (cplus_tree_code_type, cplus_tree_code_length, resword):
2224         Likewise.
2225
2226 2001-10-05  Alexandre Oliva  <aoliva@redhat.com>
2227
2228         * optimize.c (struct inline_data): Moved to ../tree-inline.c.
2229         (INSNS_PER_STMT): Likewise.
2230         (remap_decl, remap_block, copy_scopy_stmt, copy_body_r): Likewise.
2231         (copy_body, initialize_inlined_parameters): Likewise.
2232         (declare_return_variable, inlinable_function_p): Likewise.
2233         (expand_call_inline, expand_calls_inline): Likewise.
2234         (optimize_inline_calls, clone_body): Likewise.
2235         * tree.c (walk_tree): Moved to ../tree-inline.c.
2236         (walk_tree_without_duplicates): Likewise.
2237         (copy_tree_r, remap_save_expr): Likewise.
2238
2239 2001-10-04  Alexandre Oliva  <aoliva@redhat.com>
2240
2241         * Make-lang.in (cp/decl.o, cp/tree.o): Depend on tree-inline.h.
2242         (cp/pt.o, cp/semantics.o, cp/optimize.o): Likewise.
2243         * cp-tree.h (lang_decl): Moved inlined_fns to tree_decl.
2244         (TREE_READONLY_DECL_P, DECL_INLINED_FNS): Moved to ../tree.h.
2245         (flag_inline_trees): Moved declaration to ../tree-inline.h.
2246         (walk_tree): Moved declaration to ../tree-inline.h.
2247         (walk_tree_without_duplicates, copy_tree_r): Likewise.
2248         (remap_save_expr): Likewise.
2249         * decl.c: Include tree-inline.h.
2250         (lang_mark_tree): Don't mark inlined_fns.
2251         * decl2.c (flag_inline_trees): Moved defn to ../tree-inline.c.
2252         * optimize.c: Include tree-inline.h.
2253         (optimize_inline_calls): Move declaration to ../tree.h, as
2254         non-static.
2255         (remap_decl): Use language-independent constructs and hooks.
2256         (remap_block, copy_body_r, declare_return_variable): Likewise.
2257         (inlinable_function_p): Likewise.  Don't test for
2258         DECL_LANG_SPECIFIC before DECL_INLINED_FNS as inlined_fns is
2259         no longer language-specific.
2260         (optimize_inline_calls): Likewise.  Make it non-static.  Moved
2261         call of dump_function to...
2262         (optimize_function): Here...
2263         (clone_body): New function, extracted from...
2264         (maybe_clone_body): ... here.  Build decl_map locally and pass
2265         it on to clone_body.
2266         * pt.c, semantics.c: Include tree-inline.h.
2267         * tree.c: Likewise.
2268         (cp_walk_subtrees): New language-specific hook for tree inlining.
2269         (cp_cannot_inline_tree_fn, cp_add_pending_fn_decls,
2270         cp_is_overload_p, cp_auto_var_in_fn_p,
2271         cp_copy_res_decl_for_inlining): Likewise.
2272         (walk_tree): Move language-specific constructs into...
2273         (cp_walk_subtrees): this new function.
2274         (copy_tree_r): Use language-independent constructs and hooks.
2275         (init_tree): Initialize tree inlining hooks.
2276         (remap_save_expr): Adjust prototype so that the declaration
2277         does not require the definition of splay_tree.
2278
2279 2001-10-03  John David Anglin  <dave@hiauly1.hia.nrc.ca>
2280
2281         * rtti.c (get_tinfo_decl): Call typeinfo_in_lib_p with the type used
2282         to build the declaration instead of the declaration itself.
2283
2284 2001-10-02  Jason Merrill  <jason_merrill@redhat.com>
2285
2286         * decl2.c (cxx_decode_option): Add 'else'.
2287
2288         * spew.c (end_input): No longer static.
2289         * cp-tree.h: Declare it.
2290         * parse.y (datadef): Add "error END_OF_SAVED_INPUT" expansion.
2291
2292 2001-10-02  Joseph S. Myers  <jsm28@cam.ac.uk>
2293
2294         * call.c (build_over_call), typeck.c (build_function_call_real):
2295         Pass type attributes to check_function_format rather than name or
2296         assembler name.  Don't require there to be a name or assembler
2297         name to check formats.
2298
2299 2001-10-02  Joseph S. Myers  <jsm28@cam.ac.uk>
2300
2301         * decl.c (init_decl_processing): Don't call
2302         init_function_format_info.  Initialize lang_attribute_table
2303         earlier.
2304         (builtin_function): Call decl_attributes.
2305         (insert_default_attributes): New.
2306
2307 2001-10-01  Jason Merrill  <jason_merrill@redhat.com>
2308
2309         * decl.c (grokdeclarator): Copy array typedef handling from C
2310         frontend.
2311
2312         * decl.c (grokdeclarator): Copy too-large array handling from C
2313         frontend.
2314
2315 2001-09-29  Alexandre Oliva  <aoliva@redhat.com>
2316
2317         * config-lang.in (target_libs): Added target-gperf, so that we
2318         don't try to build it if C++ is disabled.
2319
2320 2001-09-23  Zack Weinberg  <zack@codesourcery.com>
2321
2322         * Make-lang.in (CXX_OBJS): Take out cp/errfn.o.
2323         (cp/errfn.o): Delete rule.
2324         (cp/error.o): Depend on flags.h.
2325         * errfn.c: Delete file.
2326         * cp-tree.h: Declare warn_deprecated.  Remove definitions of
2327         TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS,
2328         and TFF_TEMPLATE_DEFAULT_ARGUMENTS. #define cp_error, cp_warning,
2329         cp_pedwarn, and cp_compiler_error to error, warning, pedwarn, and
2330         internal_error respectively.  Make cp_deprecated into a macro.
2331         Don't define cp_printer typedef or declare cp_printers.
2332         * error.c: Include flags.h.
2333         Delete: struct tree_formatting_info, print_function_argument_list,
2334         print_declaration, print_expression, print_function_declaration,
2335         print_function_parameter, print_type_id, print_cv_qualifier_seq,
2336         print_type_specifier_seq, print_simple_type_specifier,
2337         print_elaborated_type_specifier, print_rest_of_abstract_declarator,
2338         print_parameter_declaration_clause, print_exception_specification,
2339         print_nested_name_specifier, and definition of cp_printers.
2340         (locate_error): New function.
2341         (cp_error_at, cp_warning_at, cp_pedwarn_at): Moved here and
2342         rewritten in terms of locate_error and diagnostic.c.
2343         (cp_tree_printer): Rename cp_printer; wire up to *_to_string
2344         instead of deleted print_* routines.  Handle %C, %L, %O, %Q also.
2345         (init_error): Adjust to match.
2346
2347 Sat Sep 22 09:15:31 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2348
2349         * Make-lang.in (CXX_C_OBJS): Add attribs.o.
2350
2351 2001-09-21  Richard Henderson  <rth@redhat.com>
2352
2353         * class.c (set_vindex): Mind TARGET_VTABLE_USES_DESCRIPTORS.
2354         (build_vtbl_initializer): Likewise.
2355         (build_vfn_ref): New.
2356         * cp-tree.h: Declare it.
2357         * call.c (build_over_call): Use it.
2358         * decl2.c (mark_vtable_entries): Mark FDESC_EXPR.
2359         * typeck.c (get_member_function_from_ptrfunc): Mind descriptors.
2360
2361 Fri Sep 21 08:16:19 2001  J"orn Rennecke <amylaar@redhat.com>
2362
2363         * decl.c (grokdeclarator): Use C syntax for attr_flags declaration.
2364
2365 2001-09-21  Joseph S. Myers  <jsm28@cam.ac.uk>
2366
2367         Table-driven attributes.
2368         * decl.c: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
2369         * decl2.c (cplus_decl_attributes): Only take one attributes
2370         parameter.
2371         * cp-tree.c (cplus_decl_attributes): Update prototype.
2372         * class.c (finish_struct), decl.c (start_decl, start_function),
2373         decl2.c (grokfield), friend.c (do_friend), parse.y
2374         (parse_bitfield): Update calls to cplus_decl_attributes.
2375         * decl.c (grokdeclarator): Take a pointer to a single ordinary
2376         attribute list.
2377         * decl.h (grokdeclarator): Update prototype.
2378         * decl2.c (grokfield): Take a single ordinary attribute list.
2379         * friend.c (do_friend): Likewise.
2380         * decl.c (shadow_tag, groktypename, start_decl,
2381         start_handler_parms, grokdeclarator, grokparms, start_function,
2382         start_method), decl2.c (grokfield, grokbitfield, grokoptypename),
2383         parse.y (parse_field, parse_bitfield, component_decl_1), pt.c
2384         (process_template_parm, do_decl_instantiation): Pass single
2385         ordinary attribute lists around.
2386         * decl.c (grokdeclarator): Correct handling of nested attributes.
2387         Revert the patch
2388         1998-10-18  Jason Merrill  <jason@yorick.cygnus.com>
2389                 * decl.c (grokdeclarator): Embedded attrs bind to the right,
2390                 not the left.
2391         .
2392         * cp-tree.h (cp_valid_lang_attribute): Remove declaration
2393         (cp_attribute_table): Declare.
2394         * decl.c (valid_lang_attribute): Don't define.
2395         (lang_attribute_table): Define.
2396         (init_decl_processing): Initialize lang_attribute_table instead of
2397         valid_lang_attribute.
2398         * tree.c (cp_valid_lang_attribute): Remove.
2399         (handle_java_interface_attribute, handle_com_interface_attribute,
2400         handle_init_priority_attribute): New functions.
2401         (cp_attribute_table): New array.
2402         * decl2.c (import_export_class): Don't use
2403         targetm.valid_type_attribute.
2404
2405 2001-09-15  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
2406
2407         * Make-lang.in (cp/error.o): Depend on real.h
2408         * error.c: #include "real.h"
2409
2410 2001-09-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2411
2412         * mangle.c (mangle_conv_op_name_for_type): Use concat in lieu of
2413         xmalloc/strcpy/strcat.
2414
2415 2001-09-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2416
2417         * decl.c (warn_extern_redeclared_static, cp_make_fname_decl):
2418         Const-ification.
2419         * pt.c (tsubst_decl): Likewise.
2420
2421 2001-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2422
2423         * decl2.c (lang_f_options): Const-ification.
2424         * lex.c (cplus_tree_code_name): Likewise.
2425         * spew.c (yyerror): Likewise.
2426
2427 2001-09-06  Nathan Sidwell  <nathan@codesourcery.com>
2428
2429         PR c++/3986
2430         * class.c (force_canonical_binfo_r): Check & move an indirect
2431         primary base first.
2432         (force_canonical_binfo): Check that it's not already
2433         canonical.
2434         (mark_primary_virtual_base): Remove BINFO parameter.
2435         (mark_primary_bases): Adjust, set BINFO_LOST_PRIMARY_P here.
2436
2437 2001-09-06  Nathan Sidwell  <nathan@codesourcery.com>
2438
2439         Remove TYPE_NONCOPIED_PARTS.
2440         * cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Map onto
2441         CLASSTYPE_PURE_VIRTUALS.
2442         (TYPE_RAISES_EXCEPTIONS): Map onto TYPE_BINFO.
2443         * class.c (duplicate_tag_error): Remove TYPE_NONCOPIED_PARTS.
2444         (layout_class_type): Don't call fixup_inline_methods here ...
2445         (finish_struct_1): ... call it here.
2446
2447 2001-09-04  Mark Mitchell  <mark@codesourcery.com>
2448
2449         * decl.c (duplicate_decls): Remove code deadling with
2450         DECL_SAVED_INSNS.
2451         * decl2.c (finish_file): Likewise.
2452         * pt.c (instantiate_decl): Likewise.
2453         * semantics.c (expand_body): Don't defer local functions if
2454         they wouldn't be deferred for some other reason.  Don't
2455         generate RTL for functions that will not be emitted.
2456         (genrtl_start_function): Remove code deadling with
2457         DECL_SAVED_INSNS.
2458         (genrtl_finish_function): Likewise.
2459
2460 2001-09-04  Nathan Sidwell  <nathan@codesourcery.com>
2461
2462         PR c++/4203
2463         * call.c (build_over_call): Do not optimize any empty base
2464         construction.
2465
2466 2001-08-31  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2467
2468         * error.c (dump_template_decl): Output template parameters
2469         together with their specifiers.
2470         Output `class' prefix for template template parameter.
2471         (dump_decl): Fix formatting.
2472
2473 2001-08-30  Kurt Garloff  <garloff@suse.de>
2474
2475         * optimize.c (inlinable_function_p): Allow only smaller single
2476         functions. Halve inline limit after reaching recursive limit.
2477
2478 2001-08-30  Joern Rennecke <amylaar@redhat.com>
2479             Jason Merrill  <jason_merrill@redhat.com>
2480
2481         * class.c (build_vtable_entry_ref): Subtract in char*, not
2482         ptrdiff_t.
2483
2484 2001-08-23  Jason Merrill  <jason_merrill@redhat.com>
2485
2486         * tree.c (cp_build_qualified_type_real): Use get_qualified_type.
2487         (build_cplus_array_type): Use cp_build_qualified_type, not
2488         TYPE_MAIN_VARIANT, to get an unqualified version.
2489
2490         * decl2.c (grok_alignof): Lose.
2491         (build_expr_from_tree): Use expr_sizeof and c_alignof_expr.
2492         * typeck.c (c_alignof): Lose.
2493         * semantics.c (finish_sizeof, finish_alignof): New.
2494         * parse.y: Use them.
2495         * cp-tree.h: Declare them.
2496
2497 2001-08-22  Jason Merrill  <jason_merrill@redhat.com>
2498
2499         * pt.c (tsubst_expr): Hand off to the TREE_CHAIN of a statement.
2500         Don't loop in COMPOUND_STMT, FOR_STMT or TRY_BLOCK.
2501         * tree.c (cp_statement_code_p): A TAG_DEFN is a statement.
2502
2503 2001-08-19  Jakub Jelinek  <jakub@redhat.com>
2504
2505         * typeck2.c (add_exception_specifier): Only require complete type if
2506         not in processing template declaration.
2507
2508 2001-08-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2509
2510         * decl.c: Cast argument to size_t, not HOST_WIDE_INT, in calls to
2511         GNU_xref_start_scope and GNU_xref_end_scope.
2512
2513         * tree.c (TYPE_HASH): Moved to ../tree.h.
2514
2515 2001-08-16  Mark Mitchell  <mark@codesourcery.com>
2516
2517         * cvt.c (convert_to_void): Preserve TREE_SIDE_EFFECTS
2518         on COMPOUND_EXPRs.
2519
2520 2001-08-14  Richard Henderson  <rth@redhat.com>
2521
2522         * class.c, cp-tree.h (build_vfn_ref): Remove.
2523         * call.c, rtti.c: Replace all refernces with build_vtbl_ref.
2524
2525 2001-08-13  Mark Mitchell  <mark@codesourcery.com>
2526
2527         * call.c (build_over_call): Mark COMPOUND_EXPRs generated for
2528         empty class assignment as having side-effects to avoid
2529         spurious warnings.
2530
2531 2001-08-13  Zack Weinberg  <zackw@panix.com>
2532
2533         * Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
2534         * except.c: Include libfuncs.h.
2535
2536 2001-08-11  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
2537
2538         * decl.c (grokdeclarator): Clarify diagnostic message.
2539
2540 2001-08-13  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2541
2542         * decl2.c (do_nonmember_using_decl): Replace using directive
2543         with using declaration in the error message.
2544
2545 2001-08-11  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2546
2547         * pt.c (maybe_fold_nontype_arg): Use TREE_TYPE of ARG as the
2548         criterion to avoid rebuilding expression tree instead of
2549         processing_template_decl.
2550
2551 2001-08-07  Jason Merrill  <jason_merrill@redhat.com>
2552
2553         Support named return value optimization for inlines, too.
2554         * decl.c (finish_function): Nullify returns here.
2555         * semantics.c (genrtl_start_function): Not here.
2556         (cp_expand_stmt): Don't mess with CLEANUP_STMTs.
2557         (nullify_returns_r): No longer static.  Just clear RETURN_EXPR.
2558         Also nullify the CLEANUP_STMT for the nrv.
2559         * cp-tree.h: Declare it.
2560         * optimize.c (declare_return_variable): Replace the nrv with the
2561         return variable.
2562         * typeck.c (check_return_expr): Be more flexible on alignment check.
2563         Ignore cv-quals when checking for a matching type.
2564
2565 2001-08-09  Richard Henderson  <rth@redhat.com>
2566
2567         * decl2.c (finish_objects): Use target hooks instead of
2568         assemble_constructor and assemble_destructor.
2569
2570 2001-08-08  John David Anglin  <dave@hiauly1.hia.nrc.ca>
2571
2572         * g++spec.c (lang_specific_driver): Quote argument after `-Xlinker'.
2573
2574 2001-08-07  Nathan Sidwell  <nathan@codesourcery.com>
2575
2576         PR c++/3820
2577         Stop using TYPE_NONCOPIED_PARTS.
2578         * call.c (build_over_call): Be careful when copy constructing
2579         or assigning to an empty class.
2580         * class.c (check_bases_and_members): It has a
2581         COMPLEX_ASSIGN_REF if it has a vptr.
2582         (layout_class_type): Don't add empty class padding to
2583         TYPE_NONCOPIED_PARTS.
2584         (finish_struct_1): Don't add the VFIELD either.
2585         * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): Mention _copy_
2586         initialization.
2587
2588 2001-08-07  Jason Merrill  <jason_merrill@redhat.com>
2589
2590         * tree.c (walk_tree): Walk siblings even if !walk_subtrees.
2591
2592 2001-08-06  Richard Henderson  <rth@redhat.com>
2593
2594         * decl2.c (finish_objects): Pass a symbol_ref and priority to
2595         assemble_{constructor,destructor}.  Remove priority handling.
2596
2597 2001-08-05  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
2598
2599         Don't allow template-id in using-declaration.
2600         * decl2.c (validate_nonmember_using_decl): Handle template-ids.
2601         (do_class_using_decl): Likewise.
2602
2603 2001-08-04  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
2604
2605         * cp/spew.c (read_token): No need to pop buffers.
2606
2607 2001-08-02  Stan Shebs  <shebs@apple.com>
2608
2609         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY): Remove, no longer used.
2610         (fnaddr_from_vtable_entry): Remove decl.
2611         * method.c (use_thunk): Update comment.
2612
2613 2001-08-01  Andrew Cagney  <ac131313@redhat.com>
2614
2615         * repo.c (get_base_filename): Change return value to const char
2616         pointer.
2617
2618 2001-08-02  Nathan Sidwell  <nathan@codesourcery.com>
2619
2620         Kill -fhonor-std.
2621         * NEWS: Document.
2622         * cp-tree.h (flag_honor_std): Remove.
2623         (CPTI_FAKE_STD): Remove.
2624         (std_node): Remove comment about it being NULL.
2625         (fake_std_node): Remove.
2626         * decl.c (in_fake_std): Remove.
2627         (walk_namespaces_r): Remove fake_std_node check.
2628         (push_namespace): Remove in_fake_std code.
2629         (pop_namespace): Likewise.
2630         (lookup_name_real): Remove fake_std_node check.
2631         (init_decl_processing): Always create std_node. Always add
2632         std:: things there.
2633         (builtin_function): Always put non '_' fns in std.
2634         * decl2.c (flag_honor_std): Remove.
2635         (lang_f_options): Remove honor-std.
2636         (unsupported_options): Add honor-std.
2637         (set_decl_namespace): Remove fake_std_node check.
2638         (validate_nonmember_using_decl): Likewise.
2639         (do_using_directive): Likewise.
2640         (handle_class_head): Likewise.
2641         * dump.c (cp_dump_tree): Likewise.
2642         * except.c (init_exception_processing): Adjust.
2643         * init.c (build_member_call): Remove fake_std_node check.
2644         (build_offset_ref): Likewise.
2645         * lang-options.h: Remove -fhonor-std, -fno-honor-std.
2646         * rtti.c (init_rtti_processing): Adjust.
2647
2648 2001-07-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
2649
2650         * tree.c (cp_tree_equal): WITH_CLEANUP_EXPR node to use its second
2651         operand while calling cp_tree_equal.
2652
2653 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
2654
2655         The 3.0 ABI no longer has vbase pointer fields.
2656         * cp-tree.h (VBASE_NAME, VBASE_NAME_FORMAT, VBASE_NAME_P,
2657         FORMAT_VBASE_NAME): Remove.
2658         * method.c (do_build_copy_constructor): Adjust.
2659         (do_build_assign_ref): Adjust.
2660         * search.c (lookup_field_r): Adjust.
2661         * typeck.c (build_component_ref): Adjust.
2662
2663         The 3.0 ABI always has a vtable pointer at the start of every
2664         polymorphic class.
2665         * rtti.c (build_headof_sub): Remove.
2666         (build_headof): Adjust.
2667         (get_tinfo_decl_dynamic): No need to check flag_rtti
2668         here. Adjust.
2669         (create_real_tinfo_var): Explain why we need a hidden name.
2670
2671 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
2672
2673         PR c++/3631
2674         * class.c (update_vtable_entry_for_fn): The fixed adjustment
2675         of a virtual thunk should be from declaring base.
2676
2677 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
2678
2679         * class.c (dfs_ctor_vtable_bases_queue_p): Always walk into
2680         the shared virtual base, so preserving inheritance graph order.
2681
2682 2001-07-30  Andreas Jaeger  <aj@suse.de>
2683
2684         * decl2.c: Remove unused var global_temp_name_counter.
2685
2686 2001-07-28  Richard Henderson  <rth@redhat.com>
2687
2688         * method.c (pending_inlines): Remove.
2689
2690 2001-07-27  Nathan Sidwell  <nathan@codesourcery.com>
2691
2692         * class.c (mark_primary_virtual_base): Don't adjust base
2693         offsets here.
2694         (dfs_unshared_virtual_bases): Adjust them here.
2695         (mark_primary_bases): Explain why we adjust at the end.
2696
2697 2001-07-27  Nathan Sidwell  <nathan@codesourcery.com>
2698
2699         * class.c (finish_struct_1): When copying the primary base's
2700         VFIELD, make sure we find it is at offset zero.
2701
2702 2001-07-26  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2703
2704         * pt.c (tsubst_template_parms): Call maybe_fold_nontype_arg and
2705         tsubst_expr for default template arguments.
2706
2707 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
2708
2709         PR c++/3621
2710         * spew.c (yylex): Only copy the token's lineno, if it is
2711         non-zero.
2712
2713 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
2714
2715         PR c++/3624
2716         * call.c (resolve_args): Simplify, call
2717         convert_from_reference.
2718         (build_new_op): Resolve and convert from reference ARG1
2719         earlier. Adjust ARG2 & ARG3 resolve and conversion.
2720
2721 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
2722
2723         * decl.c (last_function_parm_tags): Remove.
2724         (current_function_parm_tags): Remove.
2725         (init_decl_processing): Adjust.
2726         (start_function): Adjust.
2727         (store_parm_decls): Adjust.
2728
2729         PR c++/3152
2730         * decl.c (grokdeclarator): Detect when a function typedef is
2731         declaring a function, and create last_function_parms correctly.
2732
2733 2001-07-25  Jason Merrill  <jason_merrill@redhat.com>
2734
2735         * call.c (joust): Only prefer a non-builtin candidate to a builtin
2736         one if they have the same signature.
2737
2738         * cvt.c (build_up_reference): Take DECL parm.  Check TREE_STATIC on
2739         it rather than toplevel_bindings_p.  Give it a mangled name if static.
2740         (convert_to_reference): Adjust.
2741         * decl2.c (get_temp_name): Lose.
2742         * mangle.c (mangle_ref_init_variable): New fn.
2743         (mangle_guard_variable): Strip the ref-init header.
2744         * cp-tree.h: Adjust.
2745         * decl.c (cp_finish_decl): Add the DECL_STMT after processing the
2746         initializer.
2747         (grok_reference_init): Always use DECL_INITIAL.
2748
2749 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
2750
2751         PR c++/3416
2752         * call.c (build_conditional_expr): Recheck args after
2753         conversions.
2754         * cp-tree.h (build_conditional_expr): Move to correct file.
2755         * typeck.c (decay_conversion): Diagnose any unknown types
2756         reaching here.
2757         (build_binary_op): Don't do initial decay or default
2758         conversions on overloaded functions.
2759         (build_static_cast): Don't do a decay conversion here.
2760
2761 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
2762
2763         PR c++/3543
2764         * typeck.c (condition_conversion): Resolve an OFFSET_REF.
2765         * expr.c (cplus_expand_expr): An OFFSET_REF should never get here.
2766
2767 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
2768
2769         * class.c (build_vtbl_or_vbase_field): Remove, move into ...
2770         (create_vtbl_ptr): ... here.
2771
2772 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
2773
2774         * class.c (build_vbase_offset_vbtl_entries): Look for
2775         non-primary base of which we are a sub vtable.
2776
2777 2001-07-24  Phil Edwards  <pme@sources.redhat.com>
2778
2779         * semantics.c (finish_this_expr):  Remove unused code.
2780
2781 2001-07-24  Nathan Sidwell  <nathan@codesourcery.com>
2782
2783         Simplify rtti, now we've only one ABI.
2784         * cp-tree.h (cp_tree_index): Remove CPTI_TINFO_DECL_ID,
2785         CPTI_TINFO_VAR_ID.
2786         (tinfo_decl_id, tinfo_var_id): Remove.
2787         (get_typeid_1): Remove.
2788         * rtti.c
2789         (init_rtti_processing): Remove tinfo_decl_id & tinfo_var_id.
2790         (typeid_ok_p): New function.
2791         (build_type_id): Call typeid_ok_p. Don't call tinfo_from_decl.
2792         (get_tinfo_decl): Remove old abi documentation.
2793         (tinfo_from_decl): Remove.
2794         (get_type_id): Call typeid_ok_p. Absorb get_typeid_1.
2795         (get_typeid_1): Remove.
2796         (get_base_offset): Remove.
2797         (synthesize_tinfo_var): Absorb get_base_offset.
2798         (create_real_tinfo_var): Don't use tinfo_decl_id.
2799
2800 2001-07-23  Graham Stott  <grahams@redhat.com>
2801
2802         * cp/class.c (type_requires_array_cookie): Fix use of uninitialised
2803         variable has_two_argument_delete_p.
2804
2805 2001-07-21  Nathan Sidwell  <nathan@codesourcery.com>
2806
2807         Remove flag_vtable_thunk. It is always on for the 3.0 ABI.
2808         * cp-tree.h (CPTI_DELTA2_IDENTIFIER): Remove.
2809         (CPTI_INDEX_IDENTIFIER): Remove.
2810         (CPT_PFN_OR_DELTA2_IDENTIFIER): Remove.
2811         (delta2_identifier): Remove.
2812         (index_identifier): Remove.
2813         (pfn_or_delta2_identifier): Remove.
2814         (flag_vtable_thunks): Remove.
2815         (VTABLE_DELTA2_NAME): Remove.
2816         (VTABLE_INDEX_NAME): Remove.
2817         (FNADDR_FROM_VTABLE_ENTRY): Adjust.
2818         (vfunc_ptr_type_node): Adjust.
2819         (VTABLE_NAME_PREFIX): Adjust.
2820         (build_vfn_ref): Lose first parameter.
2821         (fixup_all_virtual_upcast_offsets): Remove.
2822         * decl.c (initialize_predefined_identifiers): Remove
2823         delta2_identifier, index_identifier, pfn_or_delta2_identifier.
2824         (init_decl_processing): Remove no-vtable-thunk code.
2825         * decl2.c (flag_vtable_thunks): Remove.
2826         (mark_vtable_entries): Remove no-vtable-thunk code.
2827         * error.c (dump_decl): Remove no-vtable-thunk code.
2828         (dump_expr): Adjust ptr to member function code.
2829         * init.c (initialize_vtable_ptrs): Remove no-vtable-thunk
2830         code.
2831         * rtti.c (build_headof): Remove no-vtable-thunk code.
2832         (get_tinfo_decl_dynamic): Adjust build_vfn_ref call.
2833         * search.c (get_base_distance): Remove expand_upcast_fixups case.
2834         (virtual_context) Remove.
2835         (expand_upcast_fixups): Remove.
2836         (fixup_virtual_upcast_offsets): Remove.
2837         (fixup_all_virtual_upcast_offsets): Remove.
2838         * typeck.c (get_member_function_from_ptrfunc): Remove
2839         no-vtable-thunk code.
2840         * call.c (build_over_call): Adjust call to build_vfn_ref.
2841         * class.c (build_vfn_ref): Lose first parameter. Remove
2842         no-vtable-thunk code.
2843         (build_rtti_vtbl_entries): Remove no-vtable-thunk code.
2844         (build_vtable_entry): Remove no-vtable-thunk code.
2845
2846 2001-07-20  Nathan Sidwell  <nathan@codesourcery.com>
2847
2848         Remove old-abi remnants. Remove comments about old abi
2849         behaviour. Remove references to 'new-abi' in comments.
2850         * cp-tree.h: Adjust comments.
2851         (vbase_offsets_in_vtable_p): Delete.
2852         (vcall_offsets_in_vtable_p): Delete.
2853         (vptrs_present_everywhere_p): Delete.
2854         (all_overridden_vfuns_in_vtables_p): Delete.
2855         (merge_primary_and_secondary_vtables_p): Delete.
2856         (TYPE_CONTAINS_VPTR_P): Adjust.
2857         (VTT_NAME_PREFIX): Remove.
2858         (CTOR_VTBL_NAME_PREFIX): Remove.
2859         (init_vbase_pointers): Remove.
2860         * class.c: Adjust coments.
2861         (build_vbase_pointer_fields): Delete.
2862         (build_vbase_pointer): Remove old-abi code.
2863         (build_secondary_vtable): Likewise.
2864         (modify_all_vtables): Likewise.
2865         (create_vtable_ptr): Likewise.
2866         (layout_class_type): Likewise.
2867         (finish_struct_1): Likewise.
2868         (finish_vtbls): Likewise.
2869         (dfs_finish_vtbls): Delete.
2870         (build_vbase_offset_vtbl_entries): Remove old-abi code.
2871         * cvt.c: Adjust comments.
2872         * decl.c: Adjust comments.
2873         * decl2.c: Adjust comments.
2874         * init.c: Adjust comments.
2875         (construct_virtual_bases): Remove old-abi code.
2876         * lang-specs.h: Remove -fno-new-abi.
2877         * mangle.c: Adjust comments.
2878         * rtti.c: Adjust comments.
2879         (get_base_offset): Remove old-abi-code.
2880         * search.c: Adjust comments.
2881         (dfs_init_vbase_pointers): Remove.
2882         (dfs_vtable_path_unmark): Remove.
2883         (init_vbase_pointers): Remove.
2884         * semantics.c: Adjust comments.
2885         (emit_associated_thunks): Remove old-abi code.
2886         * typeck.c: Adjust comments.
2887
2888 2001-07-20  Daniel Berlin  <dan@cgsoftware.com>
2889
2890         * Make-lang.in (cp/optimize.o): Depend on $(PARAMS_H), not
2891         params.h.
2892
2893 2001-07-19  Mark Mitchell  <mark@codesourcery.com>
2894
2895         * class.c (finish_struct_anon): Forbid nested classes.
2896
2897 2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
2898
2899         * decl2.c: Don't include dwarfout.h and dwarf2out.h.
2900         * optimize.c: Include debug.h.
2901         (maybe_clone_body): Use debug hook.
2902         * semantics.c: Include debug.h.
2903         (expand_body): Use debug hook.
2904
2905 2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
2906
2907         * spew.c (read_token, yyerror): Remove CPP_INT, CPP_FLOAT cases.
2908
2909 2001-07-18  Mark Mitchell  <mark@codesourcery.com>
2910
2911         * class.c (type_requires_array_cookie): New function.
2912         (check_methods): Don't try to figure out whether the type needs a
2913         cookie here.
2914         (check_bases_and_members): Set TYPE_VEC_NEW_USES_COOKIE here.
2915         * cp-tree.h (TYPE_VEC_DELETE_TAKES_SIZE): Remove.
2916         (TYPE_VEC_NEW_USES_COOKIE): Reimplement.
2917         * pt.c (instantiate_class_template): Don't set
2918         TYPE_VEC_DELETE_TAKES_SIZE.
2919         * NEWS: Document ABI changes from GCC 3.0.
2920
2921 2001-07-18  Xavier Delacour <xavier@fmaudio.net>,
2922             Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
2923
2924         * NEWS (Changes in GCC 3.0): Fix typo.
2925
2926 2001-07-13  Joseph S. Myers  <jsm28@cam.ac.uk>
2927
2928         * decl2.c (cplus_decl_attributes): Take a pointer to the node to
2929         which attributes are to be attached, and a flags argument.  Update
2930         call to decl_attributes.
2931         (grokfield): Update call to decl_attributes.
2932         * class.c (finish_struct): Update call to cplus_decl_attributes.
2933         * cp-tree.h (cplus_decl_attributes): Update prototype.
2934         * decl.c (start_decl, grokdeclarator, start_function): Update
2935         calls to decl_attributes and cplus_decl_attributes.
2936         * friend.c (do_friend): Update call to cplus_decl_attributes.
2937         * parse.y (parse_bitfield): Update call to cplus_decl_attributes.
2938
2939 2001-07-12  Mark Mitchell  <mark@codesourcery.com>
2940
2941         * decl.c (make_rtl_for_nonlocal_decl): Set DECL_C_HARD_REGISTER
2942         for `register' variables with an asm-specification.
2943
2944 2001-07-11  Mark Mitchell  <mark@codesourcery.com>
2945
2946         * semantics.c (finish_asm_stmt): Mark the output operands
2947         to an asm addressable, if necessary.
2948
2949 2001-07-11  Ben Elliston  <bje@redhat.com>
2950
2951         * Revert this change -- there is a subtle bug.
2952
2953         PR c++/80
2954         * decl.c (finish_enum): New "attributes" argument; pass it to
2955         cplus_decl_attributes.  Use a narrower type if the enum is packed.
2956         * cp-tree.h (finish_enum): Adjust prototype.
2957         * parse.y (enum_head): New non-terminal.
2958         (structsp): Use it. Enums now may be preceded or followed by
2959         optional attributes -- pass their chained tree to finish_enum().
2960         * pt.c (tsubst_enum): Pass NULL_TREE for the new argument.
2961
2962 2001-07-10  Mark Mitchell  <mark@codesourcery.com>
2963
2964         * pt.c (tsubst_decl): Set DECL_CONTEXT for namespace-scope
2965         variables.
2966
2967 2001-07-10  Jason Merrill  <jason_merrill@redhat.com>
2968
2969         * semantics.c (cp_expand_stmt): Fix for null
2970         current_function_return_value.
2971
2972 2001-07-10  Jan van Male  <jan.vanmale@fenk.wau.nl>
2973
2974         * call.c (build_op_delete_call): Initialize fn.
2975         (convert_like_real): Delete conditional.
2976         (joust): Initialize *w and *l.
2977         * class.c: Add prototype for binfo_ctor_vtable.
2978         (get_primary_binfo): Initialize result.
2979         * init.c (build_java_class_ref): Initialize name.
2980
2981 2001-07-09  Erik Rozendaal  <dlr@acm.org>
2982
2983         * typeck.c (unary_complex_lvalue): Do not duplicate the
2984         argument to modify, pre-, or post-increment when used as an
2985         lvalue and when the argument has side-effects.
2986
2987 2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>
2988
2989         * decl.c (start_decl): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
2990         (start_function): Don't call SET_DEFAULT_DECL_ATTRIBUTES.  Call
2991         cplus_decl_attributes even if attrs is NULL.
2992         * friend.c (do_friend): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
2993
2994 2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>
2995
2996         * decl.c (grokdeclarator), decl2.c (cplus_decl_attributes): Update
2997         calls to decl_attributes.
2998
2999 2001-07-06  Ira Ruben   <ira@apple.com>
3000
3001         * cp-tree.def (TEMPLATE_DECL): Update comment. DECL_RESULT should
3002         be DECL_TEMPLATE_RESULT.
3003
3004 2001-07-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3005
3006         * cp-tree.h (copy_template_template_parm): Rename to ...
3007         (bind_template_template_parm): ... here.
3008         * tree.c (copy_template_template_parm): Rename to ...
3009         (bind_template_template_parm): ... here.  Remove the case when
3010         NEWARGS is NULL_TREE.
3011         (copy_tree_r): Don't copy TEMPLATE_TEMPLATE_PARM and
3012         BOUND_TEMPLATE_TEMPLATE_PARM.
3013         * pt.c (lookup_template_class): Adjust.
3014
3015 2001-07-05  Jason Merrill  <jason_merrill@redhat.com>
3016
3017         * cvt.c (convert_lvalue): New fn.
3018         * cp-tree.h: Declare it.
3019         * method.c (do_build_assign_ref): Use it.
3020         (do_build_copy_constructor): Convert parm to base types
3021         before calling base constructors.
3022
3023         * typeck.c (check_return_expr): Check DECL_ALIGN instead of
3024         DECL_USER_ALIGN.  Check flag_elide_constructors instead of
3025         optimize.
3026         * semantics.c (cp_expand_stmt): Don't destroy the named return value.
3027
3028 2001-07-02  Nathan Sidwell  <nathan@codesourcery.com>
3029
3030         * optimize.c (optimize_inline_calls): New function, broken out
3031         of ...
3032         (optimize_function): ... here. Call it. Don't inline if it is
3033         a thunk.
3034         (dump_function): Print name of dump flag causing this dump.
3035         * semantics.c (expand_body): Move thunk inline check to
3036         optimize_function.
3037
3038 2001-06-29  Joseph S. Myers  <jsm28@cam.ac.uk>
3039
3040         * typeck.c (COMP_TYPE_ATTRIBUTES): Don't define.
3041         (comptypes): Use target.comp_type_attributes.
3042
3043 2001-06-29  Nathan Sidwell  <nathan@codesourcery.com>
3044
3045         * cp-tree.h (flag_dump_class_layout): Remove unneeded declaration.
3046
3047 2001-06-28  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
3048
3049         * error.c (lang_print_error_function): Add a `diagnostic_context *'
3050         parameter. Tweak.
3051
3052 2001-06-27  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
3053
3054         * decl2.c (import_export_class): Update.
3055
3056 2001-06-26  Gabriel Dos Reis  <gdr@codesourcery.com>
3057
3058         * error.c (init_error): Adjust settings.
3059
3060 2001-06-26  Gabriel Dos Reis  <gdr@codesourcery.com>
3061
3062         * error.c (init_error): Adjust settings.
3063
3064 2001-06-19  Richard Sandiford  <rsandifo@redhat.com>
3065
3066         * except.c (initialize_handler_parm): Expect __cxa_begin_catch to
3067         return pointers to data members by reference rather than by value.
3068
3069 2001-06-18  Jason Merrill  <jason_merrill@redhat.com>
3070
3071         Implement the Named Return Value optimization.
3072         * cp-tree.h (struct cp_language_function): Add x_return_value.
3073         (current_function_return_value): Now a macro.
3074         * decl.c: Don't define it.
3075         (define_label, finish_case_label): Don't clear it.
3076         (init_decl_processing): Don't register it with GC.
3077         * semantics.c (genrtl_finish_function): Don't check it for
3078         no_return_label.  Copy the RTL from the return value to
3079         current_function_return_value and walk, calling...
3080         (nullify_returns_r): ...this new fn.
3081         * typeck.c (check_return_expr): Set current_function_return_value.
3082
3083 2001-06-15  Jason Merrill  <jason_merrill@redhat.com>
3084
3085         * class.c (dfs_accumulate_vtbl_inits): Just point to the base we're
3086         sharing a ctor vtable with.  Merge code for cases 1 and 2.
3087         (binfo_ctor_vtable): New fn.
3088         (build_vtt_inits, dfs_build_secondary_vptr_vtt_inits): Use it.
3089
3090 2001-06-14  Jason Merrill  <jason_merrill@redhat.com>
3091
3092         * class.c (dfs_find_final_overrider): Fix logic.
3093
3094         * class.c (update_vtable_entry_for_fn): Uncomment optimization to use
3095         virtual thunk instead of non-virtual.
3096         (get_matching_virtual): Uncomment.
3097
3098         * pt.c (unify): Don't recurse between the POINTER_TYPE and the
3099         OFFSET_TYPE.  If we're adding cv-quals, the extra ones would be on
3100         PARM, not ARG.
3101
3102 2001-06-14  Nathan Sidwell  <nathan@codesourcery.com>
3103
3104         * class.c (dfs_accumulate_vtbl_inits): For case 2 & 3, make sure
3105         we've not emerged from the hierarchy of RTTI_BINFO on reaching
3106         a non-virtual base.
3107
3108 2001-06-13  Mark Mitchell  <mark@codesourcery.com>
3109
3110         * NEWS: Update release number.
3111
3112 2001-06-12  Nathan Sidwell  <nathan@codesourcery.com>
3113
3114         PR c++/3130, c++/3131, c++/3132
3115         * cp-tree.h (BINFO_UNSHARED_MARKED): New #define.
3116         * class.c (force_canonical_binfo_r): Move
3117         BINFO_UNSHARED_MARKED, BINFO_LOST_PRIMARY_P. Don't move
3118         virtual bases unless they're primary and what they're primary
3119         too has been moved.
3120         (dfs_unshared_virtual_bases): Use BINFO_UNSHARED_MARKED. Cope
3121         with morally virtual bases. Duplicate BINFO_LOST_PRIMARY_P and
3122         BINFO_PRIMARY_BASE_OF. Clear BINFO_VTABLE for all but the most
3123         derived binfo.
3124         (mark_primary_bases): Use BINFO_UNSHARED_MARKED.
3125         (layout_nonempty_base_or_field): Add most derived type
3126         parameter. Adjust.
3127         (layout_empty_base): Likewise.
3128         (build_base_field): Likewise.
3129         (build_base_fields): Likewise.
3130         (propagate_binfo_offsets): Add most derived type
3131         parameter. Skip non canonical virtual bases too.
3132         (dfs_set_offset_for_unshared_vbases): Don't skip primary
3133         bases. Do skip canonical bases.
3134         (layout_virtual_bases): Adjust.
3135         (layout_class_type): Adjust.
3136         (dfs_get_primary_binfo): Build list of virtual primary base
3137         candidates.
3138         (get_primary_binfo): Check that the shared virtual primary
3139         base candidate was found first.
3140         (accumulate_vtbl_inits): Don't do anything for non-vptr
3141         containing binfos. For case 1 primary virtual bases, keep
3142         checking that we've not emerged from the hierarchy of RTTI_BINFO.
3143
3144 2001-06-12  Nathan Sidwell  <nathan@codesourcery.com>
3145
3146         PR c++/3089
3147         * class.c (dfs_accumulate_vtbl_inits): Always walk down the
3148         hierarchy looking for primary bases for a ctor
3149         vtable. Recursively call oneself, if we meet our primary via
3150         this route and haven't met it yet via inheritance graph order.
3151
3152 2001-06-11  Mark Mitchell  <mark@codesourcery.com>
3153
3154         * lang-options.h: Emit documentation for -fno-honor-std, not
3155         -fhonor-std.
3156
3157 2001-06-10  Alexandre Oliva  <aoliva@redhat.com>
3158
3159         * typeck.c (get_member_function_from_ptrfunc) [vbit_in_delta]:
3160         Don't clobber delta.
3161         (expand_ptrmemfunc_cst) [ptrmemfunc_vbit_in_delta]: Adjust pfn.
3162
3163 2001-06-10  Mark Mitchell <mark@codesourcery.com>
3164             Gabriel Dos Reis  <gdr@codesourcery.com>
3165
3166         * Make-lang.in (cp/call.o): Depend on diagnostic.h
3167         (cp/typeck.o): Depend on diagnostic.h
3168         (cp/typeck2.o): Depend on diagnostic.h
3169         (cp/repo.o): Depend on dignostic.h
3170         * typeck.c: #include diagnostic.h
3171         (convert_for_initialization): Remove extern declaration for
3172         warningcount and errorcount.
3173
3174         * call.c: #include diagnostic.h
3175         (convert_like_real): Remove extern declaration for warnincount and
3176         errorcount.
3177
3178         * repo.c: #include diagnostic.h
3179         * typeck2.c: #include diagnostic.h
3180
3181 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
3182
3183         * decl.c (duplicate_decls): Fix DECL_TEMPLATE_RESULT thinko
3184         in previous change.
3185
3186 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
3187
3188         PR c++/2929
3189         * friend.c (do_friend): Use push_decl_namespace for classes at
3190         namespace scope.
3191
3192 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
3193             Jason Merrill <jason_merrill@redhat.com>
3194
3195         PR c++/3061
3196         * class.c (build_secondary_vtable): Use assert, rather than an error
3197         message.
3198         (dfs_fixup_binfo_vtbls): BINFO_VTABLE might be NULL.
3199         (dfs_accumulate_vtbl_inits): A lost primary virtual base may
3200         be between ORIG_BINFO and RTTI_BINFO, but neither of them.
3201         Don't set BINFO_VTABLE for a primary virtual base.
3202
3203 2001-06-07  Mark Mitchell  <mark@codesourcery.com>
3204
3205         * decl.c (duplicate_decls): Update source position information
3206         when a template function is defined.
3207
3208 2001-06-07  Phil Edwards  <pme@sources.redhat.com>
3209
3210         * lang-specs.h:  Move -D_GNU_SOURCE to config/linux.h.
3211
3212 2001-06-07  Nathan Sidwell  <nathan@codesourcery.com>
3213
3214         PR c++/2914
3215         * decl.c (pushtag): Don't push into a complete type's scope.
3216
3217 2001-06-06  Jason Merrill  <jason_merrill@redhat.com>
3218
3219         * cp-tree.h (THUNK_GENERATE_WITH_VTABLE_P): Lose.
3220         (struct lang_decl_flags): Lose generate_with_vtable_p.
3221         (BV_GENERATE_THUNK_WITH_VTABLE_P): Lose.
3222         * class.c (copy_virtuals): Adjust.
3223         * decl2.c (mark_vtable_entries): Adjust.
3224         * method.c (make_thunk, build_vtable_entry): Adjust.
3225         * class.c (update_vtable_entry_for_fn): Only look as far as the
3226         first defining class.
3227         (build_vtbl_initializer): Put nothing in the slot for a function only
3228         defined in a lost primary virtual base.
3229         (add_vcall_offset_vtbl_entries_1): Use the same code for
3230         the lost primary case and the normal case.
3231         (dfs_unshared_virtual_bases): Don't lose a non-virtual primary base.
3232         (get_vfield_offset, get_derived_offset): Lose.
3233         (dfs_find_final_overrider): Use look_for_overrides_here.
3234         (get_matching_virtual): New fn.
3235         * semantics.c (emit_associated_thunks): Check BV_USE_VCALL_INDEX_P,
3236         not BV_VCALL_INDEX.
3237         * search.c (look_for_overrides_here): Split out from...
3238         (look_for_overrides_r): Here.
3239
3240         * class.c (find_final_overrider): Return error_mark_node on error.
3241
3242         * decl2.c (key_method): #if 0 accidental change.
3243
3244 2001-06-06  John David Anglin  <dave@hiauly1.hia.nrc.ca>
3245
3246         * call.c (convert_default_arg): Use INTEGRAL_TYPE_P.
3247         (build_over_call): Likewise.
3248         * decl.c (grokparms): Likewise.
3249         * pt.c (tsubst_decl): Likewise.
3250         * typeck.c (convert_arguments): Likewise.
3251
3252 2001-06-05  Mark Mitchell  <mark@codesourcery.com>
3253
3254         * semantics.c (begin_class_definition): Robustify.
3255
3256         * pt.c (instantiate_decl): Tell the repository code about the
3257         clones, not the cloned functions.
3258         * repo.c (repo_template_used): Explicitly instantiate the cloned
3259         function, not the clones.
3260
3261 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
3262
3263         * call.c (build_user_type_conversion_1): Set ICS_USER_FLAG and
3264         ICS_BAD_FLAG on created conversion.
3265         (compare_ics): Break out rank.
3266
3267 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
3268
3269         * decl.c (xref_tag): Remove extraneous %s on dependent name
3270         lookup warning.
3271
3272 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
3273
3274         * class.c (layout_vtable_decl): Fix off by one error on
3275         build_index_type.
3276         (build_vtt): Likewise.
3277         (build_ctor_vtbl_group): Likewise.
3278
3279 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
3280
3281         * class.c (maybe_indent_hierarchy): New function.
3282         (dump_class_hierarchy_r): Add flags. Dump extra binfo
3283         information, if enabled. Use maybe_indent_hierarchy. Adjust
3284         output format.
3285         (dump_class_hierarchy): Adjust prototype. Adjust output format.
3286         (dump_array, dump_vtable, dump_vtt): New functions.
3287         (finish_struct_1): Adjust hierarchy dumping.
3288         (initialize_vtable): Call dump_vtable.
3289         (build_vtt): Call dump_vtt.
3290         (build_ctor_vtbl_group): Call dump_vtable.
3291         * decl2.c (flag_dump_class_layout): Remove.
3292         (cxx_decode_option): Remove dump translation unit
3293         and dump class hierarchy check. Call dump_switch_p.
3294         (finish_file): Adjust dumping.
3295         (dump.c): Only dump base classes if not TDF_SLIM.
3296         Only dump namespace members if not TDF_SLIM.
3297         * optimize.c (dump_function): New function.
3298         (optimize_function): Call dump_function.
3299         * semantics.c (expand_body): Use dump_enabled_p.
3300
3301 2001-06-01  Nathan Sidwell  <nathan@codesourcery.com>
3302
3303         PR g++/2936
3304         Part missed from first commit
3305         * decl2.c (finish_anon_union): Copy context.
3306
3307 2001-05-30  Nathan Sidwell  <nathan@codesourcery.com>
3308
3309         PR g++/2936
3310         * optimize.c (remap_decl): Remap anonymous aggregate members too.
3311
3312 2001-05-26  Nathan Sidwell  <nathan@codesourcery.com>
3313
3314         PR g++/2823
3315         * semantics.c (expand_body): Don't optimize thunks.
3316
3317 2001-05-25  Sam TH  <sam@uchicago.edu>
3318
3319         * cp-tree.h lex.h: Fix header include guards.
3320
3321 2001-05-25  Mark Mitchell <mark@codesourcery.com>
3322
3323         * decl.c (init_decl_processing): Tweak.
3324
3325 2001-05-24  Mark Mitchell  <mark@codesourcery.com>
3326
3327         * decl.c (duplicate_decls): Tidy.
3328         (init_decl_processing): Always set flag_no_builtin.
3329
3330 2001-05-24  Nathan Sidwell  <nathan@codesourcery.com>
3331
3332         PR c++/2184
3333         * decl2.c (do_local_using_decl): Push the decls, even in a
3334         template.
3335
3336 2001-05-22  Mark Mitchell  <mark@codesourcery.com>
3337
3338         * optimize.c (initialize_inlined_parameters): Don't set
3339         TREE_READONLY for a VAR_DECL taking the place of an inlined
3340         PARM_DECL.
3341
3342 2001-05-22  Jason Merrill  <jason_merrill@redhat.com>
3343
3344         * class.c, cp-tree.h, rtti.c: Remove com_interface attribute support.
3345         * tree.c (cp_valid_lang_attribute): Warn about use of com_interface
3346         attribute.
3347
3348 2001-05-22  Joseph S. Myers  <jsm28@cam.ac.uk>
3349
3350         * parse.y: Refer to compound literals as such, not as
3351         constructor-expressions.
3352
3353 2001-05-21  Mark Mitchell  <mark@codesourcery.com>
3354
3355         * call.c (build_op_delete_call): Ignore exception-specifications
3356         when looking for matching delete operators.
3357         * init.c (build_new_1): Compute whether or not the allocation
3358         function used is a placement allocation function or not, and
3359         communicate this information to build_op_delete_call.
3360
3361 2001-05-21  Jason Merrill  <jason_merrill@redhat.com>
3362
3363         * class.c (build_vtable_entry_ref): Lose vtbl parm.  Fix for new abi.
3364         (build_vtbl_ref): Adjust.
3365         (dfs_accumulate_vtbl_inits): Set TREE_CONSTANT on the vtable address.
3366         * decl2.c (lang_f_options): Remove huge-objects, vtable-thunks.
3367         Re-add vtable-gc.
3368         (unsupported_options): Correspondingly.
3369
3370         * decl2.c (maybe_make_one_only): Check flag_weak, not
3371         supports_one_only().
3372
3373         * cp-tree.def (START_CATCH_STMT): Lose.
3374         * dump.c (cp_dump_tree): Don't dump it.  Do dump HANDLER_PARMS.
3375         * tree.c (cp_statement_code_p): Don't case it.
3376         * semantics.c (cp_expand_stmt): Likewise.
3377         * cp-tree.h (START_CATCH_TYPE): Lose.
3378         (HANDLER_TYPE): New.
3379         * except.c (expand_start_catch_block): Don't start any blocks.
3380         Return the type.
3381         (expand_end_catch_block): Don't end any blocks.
3382         * parse.y (handler): Don't pass anything from finish_handler_parms
3383         to finish_handler.
3384         * pt.c (tsubst_expr): Likewise.
3385         * semantics.c (begin_handler): Call note_level_for_catch here.
3386         (finish_handler_parms): Don't return anything.
3387         (genrtl_catch_block, begin_catch_block): Lose.
3388         (genrtl_handler): Call expand_start_catch here.
3389
3390 2001-05-18  Jason Merrill  <jason_merrill@redhat.com>
3391
3392         * class.c (build_vtable): Set DECL_ASSEMBLER_NAME for vtables here.
3393         (get_vtable_decl, build_vtt): Not here.
3394
3395 2001-05-20  Nathan Sidwell  <nathan@codesourcery.com>
3396
3397         PR c++/2781
3398         * optimize.c (update_cloned_parm): Copy addressability and other
3399         flags.
3400
3401 2001-05-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3402
3403         * pt.c (determine_specialization): Ignore artificial functions.
3404
3405 2001-05-20  Neil Booth  <neil@daikokuya.demon.co.uk>
3406
3407         * cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
3408         (C_RID_CODE): Remove.
3409         * lex.c (cxx_init_options): Call set_identifier_size.  Update.
3410         (init_parse): Don't do it here.
3411
3412 2001-05-18  Diego Novillo  <dnovillo@redhat.com>
3413
3414         * decl2.c (finish_objects): Use the original SYMBOL_REF from the
3415         function declaration to avoid stripping the symbol's attributes.
3416
3417 2001-05-18  Nathan Sidwell  <nathan@codesourcery.com>
3418
3419         * decl.c (pushdecl): Adjust error string.
3420         (xref_tag): Adjust friend class injection warning. Remove the
3421         inherited name from the class shadowed scope.
3422
3423 2001-05-17  Mark Mitchell  <mark@codesourcery.com>
3424
3425         * except.c (cp_protect_cleanup_actions): New function.
3426         (init_exception_processing): Don't set protect_cleanup_actions
3427         here.  Do set lang_protect_cleanup_actions.
3428
3429 2001-05-16  Nathan Sidwell  <nathan@codesourcery.com>
3430
3431         * spew.c (read_token): Call yyerror on all unexpected tokens.
3432
3433 2001-05-16  Nathan Sidwell  <nathan@codesourcery.com>
3434
3435         * init.c (member_init_ok_or_else): Take a tree rather than
3436         string for name.
3437         (expand_member_init): Adjust.
3438
3439 2001-05-14  Nick Clifton  <nickc@cambridge.redhat.com>
3440
3441         * decl.c (duplicate_decls): Suppress warning about duplicate
3442         decls if the first decl is a friend.
3443
3444 2001-05-12  Zack Weinberg  <zackw@stanford.edu>
3445
3446         * except.c (choose_personality_routine): Export.  Add
3447         explanatory comment.  Take an enum languages, not a boolean.
3448         (initialize_handler_parm): Adjust to match.
3449         * cp-tree.h: Prototype choose_personality_routine.
3450         * lex.c (handle_pragma_java_exceptions): New function.
3451         (init_cp_pragma): Register #pragma GCC java_exceptions.
3452
3453 2001-05-12  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
3454
3455         * method.c (build_mangled_C99_name): Remove unused prototype.
3456
3457 2001-05-12  Alexandre Oliva  <aoliva@redhat.com>
3458
3459         * cp-tree.h (ptrmemfunc_vbit_where_t): Declare type.
3460         * typeck.c (get_member_function_from_ptrfunc,
3461         build_ptrmemfunc, expand_ptrmemfunc_cst): Take
3462         TARGET_PTRMEMFUNC_VBIT_LOCATION into account.
3463
3464         Reverted Geoff Keating's 2001-05-03's patch.
3465
3466 2001-05-11  Ira Ruben   <ira@apple.com>
3467
3468         * cp/cp-tree.h (C_EXP_ORIGINAL_CODE): Delete; declared in c-common.h.
3469
3470 2001-05-11  Neil Booth  <neil@daikokuya.demon.co.uk>
3471
3472         * cp-tree.h (finish_label_expr, lookup_label): Delete.
3473         * parse.y: Update for '&&'; don't issue warning here.
3474         * semantics.c (finish_label_expr): Delete.
3475
3476 2001-05-07  Mark Mitchell  <mark@codesourcery.com>
3477
3478         * splay-tree.h (splay_tree_max): New function.
3479         (splay_tree_min): Likewise.
3480
3481 2001-05-03  Geoffrey Keating  <geoffk@redhat.com>
3482
3483         * cp-tree.h (enum cp_tree_index): Add CPTI_PFN_VFLAG_IDENTIFIER.
3484         (pfn_vflag_identifier): Define.
3485         Update comment about layout of pointer functions.
3486         (build_ptrmemfunc1): Update prototype.
3487         (expand_ptrmemfunc_cst): Update prototype.
3488         * decl.c (initialize_predefined_identifiers): Initialize
3489         pfn_vflag_identifier.
3490         (build_ptrmemfunc_type): When FUNCTION_BOUNDARY < 16, add
3491         an extra field to the type.
3492         * expr.c (cplus_expand_constant): Pass 'flag' between
3493         expand_ptrmemfunc_cst and build_ptrmemfunc1.
3494         * typeck.c (get_member_function_from_ptrfunc): When
3495         FUNCTION_BOUNDARY < 16, look at additional field to determine
3496         if a pointer-to-member is a real pointer or a vtable offset.
3497         (build_ptrmemfunc1): Add new parameter to contain extra field.
3498         (build_ptrmemfunc): Pass the extra field around.
3499         (expand_ptrmemfunc_cst): Add new parameter to return extra field.
3500         (pfn_from_ptrmemfunc): Ignore the extra field.
3501
3502 2001-05-03  Mark Mitchell  <mark@codesourcery.com>
3503
3504         * cp-tree.h (flag_inline_trees): Update documentation.
3505         * decl.c (init_decl_processing): Adjust handling of
3506         flag_inline_functions and flag_inline_trees to support -O3.
3507         (grokfndecl): Set DECL_INLINE on all functions if that's what
3508         the user requested.
3509         (save_function_data): Clear DECL_INLINE in
3510         current_function_cannot_inline is non-NULL.
3511         * decl2.c (flag_inline_trees): Update documentation.
3512
3513 2001-05-03  Nathan Sidwell  <nathan@codesourcery.com>
3514
3515         * dump.c (cp_dump_tree, USING_STMT case): New case.
3516         * tree.c (cp_statement_code_p): Add USING_STMT.
3517         * decl2.c (do_using_directive): Add the using directive statement.
3518
3519         * tree.c (walk_tree): Reformat an if block.
3520
3521 2001-05-02  Mark Mitchell  <mark@codesourcery.com>
3522
3523         * decl.c (compute_array_index_type): Don't try to do anything with
3524         the indices when processing a template.
3525
3526 2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3527
3528         * call.c: NULL_PTR -> NULL.
3529         * class.c: Likewise.
3530         * cvt.c: Likewise.
3531         * decl.c: Likewise.
3532         * decl2.c: Likewise.
3533         * except.c: Likewise.
3534         * init.c: Likewise.
3535         * rtti.c: Likewise.
3536         * search.c: Likewise.
3537         * tree.c: Likewise.
3538         * typeck.c: Likewise.
3539         * typeck2.c: Likewise.
3540
3541 2001-05-02  Mark Mitchell  <mark@codesourcery.com>
3542
3543         * decl2.c (do_using_directive): Revert previous patch.
3544
3545 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
3546
3547         * cp-tree.def (USING_STMT): New statement node.
3548         * cp-tree.h (USING_STMT_NAMESPACE): New macro.
3549         * decl2.c (do_using_directive): Add USING_STMT to statement
3550         tree. Don't emit errors when processing template decl.
3551         * pt.c (tsubst_expr, USING_STMT case): New case.
3552         * semantics.c (cp_expand_stmt, USING_STMT case): New case.
3553
3554 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
3555
3556         * call.c (build_new_op): Convert args from reference here.
3557         (build_conditional_expr): Don't convert here.
3558
3559 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
3560
3561         * spew.c (last_token_id): New static variable.
3562         (read_token): Set it here.
3563         (yyerror): Use it here.
3564
3565 2001-04-30  Richard Henderson  <rth@redhat.com>
3566
3567         * cvt.c: Downcase C_PROMOTING_INTEGER_TYPE_P invocations.
3568         * decl.c: Likewise.
3569
3570 2001-04-30  Mark Mitchell  <mark@codesourcery.com>
3571
3572         * gxxint.texi: Remove.
3573         * Make-lang.in: Remove all traces of gxxint.texi.
3574
3575 Mon Apr 30 16:14:10 2001  Mark P Mitchell  <mark@codesourcery.com>
3576
3577         * decl2.c (start_static_initialization_or_destruction): Correct
3578         logic to handle the -fno-use-cxa-atexit case.
3579
3580 2001-04-30  Mark Mitchell  <mark@codesourcery.com>
3581
3582         * optimize.c (update_cloned_parm): New function.
3583         (maybe_clone_body): Use it.  Update the `this' parameter too.
3584
3585 2001-04-29  Joseph S. Myers  <jsm28@cam.ac.uk>
3586
3587         * decl2.c (unsupported_options): Add new-abi.
3588         * lang-options.h: Remove no longer supported options.
3589
3590 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
3591
3592         * except.c (can_convert_eh): Don't check template parms,
3593         typename types etc.
3594
3595 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
3596
3597         * optimize.c (maybe_clone_body): Copy parameter names and locations.
3598
3599 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
3600
3601         * cp-tree.h (adjust_clone_args): Prototype new function.
3602         * class.c (adjust_clone_args): New function.
3603         * decl.c (start_function): Call it for in charge ctors.
3604
3605 2001-04-26  Mark Mitchell  <mark@codesourcery.com>
3606
3607         * method.c (use_thunk): Make sure that thunks really are emitted
3608         when requested.
3609
3610 2001-04-26  Nathan Sidwell <nathan@codesourcery.com>
3611
3612         * mangle.c (write_chars): New macro.
3613         (hwint_to_ascii): New function
3614         (write_number): Use it.
3615         (write_integer_cst): Deal with really big numbers.
3616
3617 2001-04-25  Mark Mitchell  <mark@codesourcery.com>
3618
3619         * optimize.c (maybe_clone_body): Copy TREE_PUBLIC before emitting
3620         the clone.
3621
3622 2001-04-25  Nathan Sidwell  <nathan@codesourcery.com>
3623
3624         * decl.c (grokdeclarator): Set context of namespace scope
3625         TYPE_DECLS.
3626
3627 2001-04-24  Zack Weinberg  <zackw@stanford.edu>
3628
3629         * cp/optimize.c: Include hashtab.h.
3630         (struct inline_data): Add tree_pruner.
3631         (expand_call_inline, expand_calls_inline): Use it when calling
3632         walk_tree.
3633         (optimize_function): Initialize and free tree_pruner.
3634
3635 2001-04-24  Nathan Sidwell <nathan@codesourcery.com>
3636
3637         Lazy __FUNCTION__ generation.
3638         * cp-tree.def (FUNCTION_NAME): Remove.
3639         * cp-tree.h (function_name_declared_p): Remove.
3640         (cp_fname_init): Prototype.
3641         * decl.c (init_decl_processing): Don't generate __FUNCTION__ et al ids,
3642         don't call declare_function_name. Call start_fname_decls.
3643         (cp_make_fname_decl): Adjust parameters. Generate the name. Don't
3644         clobber the line number.
3645         (cp_fname_init): New function.
3646         (start_function): Call start_fname_decls.
3647         (finish_function): Call finish_fname_decls.
3648         * lex.c (reswords): Add slots for __FUNCTION__ et al.
3649         (rid_to_yy): Add mappings for __FUNCTION__ et al.
3650         * optimize.c (maybe_clone_body): Remove function_name_declared_p.
3651         * parse.y (VAR_FUNC_NAME): New token.
3652         (primary): Add VAR_FUNC_NAME.
3653         * pt.c (tsubst_decl): Adjust a DECL_PRETTY_FUNCTION_P's
3654         generation.
3655         (tsubst, FUNCTION_NAME case): Remove.
3656         (tsubst_copy, FUNCTION_NAME case): Remove.
3657         (tsubst_expr, DECL_STMT case): Be careful with a
3658         DECL_PRETTY_FUNCTION_P.
3659         (instantiate_decl): Remove function_name_declared_p.
3660         * semantics.c (begin_compound_statement): Don't call
3661         declare_function_name here.
3662         (setup_vtbl_ptr). Don't save & restore function_name_declared_p.
3663         (finish_translation_unit): Call finish_fname_decls.
3664         (expand_body): Remove function_name_declared_p.
3665         * typeck2.c (digest_init): Allow any ERROR_MARK.
3666
3667 2001-04-24  Nathan Sidwell  <nathan@codesourcery.com>
3668
3669         * pt.c (tsubst_decl): Use VOID_TYPE_P.
3670         * semantics.c: Fix some typos.
3671
3672 2001-04-23  Phil Edwards  <pme@sources.redhat.com>
3673
3674         * cp/decl2.c (flag_honor_std):  Always initialize to 1.
3675
3676 2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3677
3678         * xref.c (GNU_xref_file): Use concat in lieu of xmalloc/sprintf.
3679
3680 2001-04-23  Jason Merrill  <jason_merrill@redhat.com>
3681
3682         * except.c (build_throw): Wrap the initialization of the exception
3683         object in a MUST_NOT_THROW_EXPR.
3684         (do_free_exception): #if 0.
3685
3686 2001-04-20  Mark Mitchell  <mark@codesourcery.com>
3687
3688         * cp-tree.h (finish_enum): Change prototype.
3689         * decl.c (finish_enum): Reorganize.
3690         * parse.y (structsp): Adjust calls to finish_enum.
3691
3692 2001-04-20  Nathan Sidwell  <nathan@codesourcery.com>
3693
3694         * tree.c (cp_tree_equal): Adjust final switch formatting. Add
3695         't' case.
3696
3697 2001-04-20  Nathan Sidwell  <nathan@codesourcery.com>
3698
3699         * class.c (dfs_unshared_virtual_bases): Add ATTRIBUTE_UNUSED.
3700         (layout_empty_base): Return at end flag.
3701         (build_base_field): Likewise.
3702         (build_base_fields): Likewise.
3703         (layout_virtual_bases): Don't add 1 to eoc value.
3704         (end_of_class): Use full size for empty bases.
3705         (layout_class_type): Clear CLASSNEARLY_EMPTY_P if we appended
3706         empty bases. Don't add 1 to eoc value. Only add trailing padding
3707         if we're an empty class with no empty bases.
3708         (dump_class_hierarchy): Dump size and alignment.
3709
3710 2001-04-20  Jakub Jelinek  <jakub@redhat.com>
3711
3712         * call.c (maybe_handle_ref_bind): Copy ICS_USER_FLAG and
3713         ICS_BAD_FLAG.
3714
3715 2001-04-20  Jakub Jelinek  <jakub@redhat.com>
3716
3717         * search.c (lookup_field_r): If looking for type and non-TYPE_DECL
3718         is found, look first if name does not match the structure name.
3719
3720 2001-04-19  Mark Mitchell  <mark@codesourcery.com>
3721
3722         * cp-tree.h (DECL_LANGUAGE): Don't assume DECL_LANG_SPECIFIC is
3723         set.
3724         (SET_DECL_LANGUAGE): New macro.
3725         * decl.c (duplicate_decls): Use SET_DECL_LANGUAGE.
3726         (pushdecl): Likewise.
3727         (build_library_fn_1): Likewise.
3728         (build_cp_library_fn): Likewise.
3729         (grokfndecl): Likewise.
3730         (grokvardecl): Mark `extern "C"' variables as having C linkage.
3731         * decl2.c (grokclassfn): Use SET_DECL_LANGUAGE.
3732         * lex.c (retrofit_lang_decl): Likewise.
3733         * mangle.c (mangle_decl_string): Don't mangle the names of
3734         variables declared with C language linkage.
3735         * semantics.c (finish_member_declaration): Use SET_DECL_LANGUAGE.
3736
3737 2001-04-18  John David Anglin  <dave@hiauly1.hia.nrc.ca>
3738
3739         * semantics.c (simplify_aggr_init_exprs_r): Don't restore
3740         flag_access_control from uninitialized storage.
3741
3742 2001-04-15  Mark Mitchell  <mark@codesourcery.com>
3743
3744         * cp-tree.h (TYPE_PTRMEM_CLASS_TYPE): Improve documentation.
3745         * mangle.c (write_pointer_to_member_type): Fix mangling of
3746         pointers to cv-qualified member function types.
3747
3748         * init.c (build_delete): Create a SAVE_EXPR for the address if
3749         we're going to use it more than once.
3750
3751 2001-04-13  Mark Mitchell  <mark@codesourcery.com>
3752
3753         * cp-tree.h (DELTA2_FROM_PTRMEMFUNC): Remove.
3754         (expand_ptremfunc_cst): Change prototype.
3755         (delta2_from_ptrmemfunc): Remove.
3756         * expr.c (cplus_expand_constant): Adjust call to
3757         expand_ptrmemfunc_cst.
3758         * typeck.c (build_ptrmemfunc1): Simplify.
3759         (build_ptrmemfunc): Make sure that casting a PTRMEM_CST still
3760         results in a constant.
3761         (expand_ptrmemfunc_cst): Remove idx and delta2 parameters.
3762         (delta2_from_ptrmemfunc): Remove.
3763         (pfn_from_ptrmemfunc): Adjust call to expand_ptrmemfunc_cst.
3764
3765 2001-04-12  Jason Merrill  <jason_merrill@redhat.com>
3766
3767         * cp-tree.h (decl_namespace_list): New macro.
3768         (struct saved_scope): Add decl_ns_list.
3769         * decl.c (mark_saved_scope): Mark it.
3770         * decl2.c: Lose static decl_namespace_list.
3771         (init_decl2): Don't save it.
3772
3773 2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3774
3775         * cp-tree.h (warn_return_type, yylex): Delete redundant
3776         declarations.
3777
3778         * decl.c (current_class_depth, global_namespace): Likewise.
3779
3780         * decl2.c (current_class_depth, flag_gnu_xref): Likewise
3781
3782         * repo.c (flag_use_repository): Likewise.
3783
3784 2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3785
3786         * cp-tree.h (pedantic, convert, global_bindings_p, insert_block,
3787         set_block, pushdecl, getdecls, gettags, init_decl_processing,
3788         maybe_build_cleanup, copy_lang_decl, prep_stmt, lvalue_p,
3789         lvalue_or_else, print_lang_statistics, comp_target_types,
3790         unsigned_type, signed_type, signed_or_unsigned_type,
3791         build_function_call, mark_addressable, incomplete_type_error):
3792         Delete redundant declarations.
3793
3794 2001-04-11  Jason Merrill  <jason_merrill@redhat.com>
3795
3796         * cp-tree.h (TYPE_LINKAGE_IDENTIFIER): New macro.
3797         (TYPE_ANONYMOUS_P): New macro.
3798         (TAGGED_TYPE_P): New macro.
3799         * decl.c (check_tag_decl): Use TYPE_ANONYMOUS_P.
3800         (grokfndecl, grokvardecl, grokdeclarator): Likewise.
3801         * tree.c (no_linkage_helper): Likewise.
3802         * semantics.c (begin_class_definition): Likewise.
3803         * pt.c (convert_template_argument): Likewise.
3804         * lex.c (check_for_missing_semicolon): Likewise.
3805
3806 2001-04-12  Nathan Sidwell  <nathan@codesourcery.com>
3807
3808         * class.c (dfs_unshared_virtual_bases): New function.
3809         (mark_primary_bases): Call it.
3810         (check_bases): Ignore virtual bases when determining
3811         nearly-emptiness.
3812
3813 2001-04-12  Nathan Sidwell  <nathan@codesourcery.com>
3814
3815         * method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
3816
3817 2001-04-11  Mark Mitchell  <mark@codesourcery.com>
3818
3819         * optimize.c (maybe_clone_body): Copy DECL_NUM_STMTS from the
3820         cloned function to the clone.
3821
3822 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3823
3824         * Make-lang.in (cp/semantics.o): Depend on $(EXPR_H).
3825
3826         * semantics.c: Include expr.h.
3827
3828 2001-04-11  Nathan Sidwell  <nathan@codesourcery.com>
3829
3830         * method.c (implicitly_declare_fn): Commonize code for copy ctor
3831         and assignment op. Set TREE_USED for parameter.
3832
3833 2001-04-10  Mark Mitchell  <mark@codesourcery.com>
3834
3835         * class.c (find_final_overrider_data): Add `candidates'.
3836         (dfs_find_final_overrider): Don't issue error messages
3837         prematurely.
3838         (find_final_overrider): Issue error messages here.
3839         (build_base_field): Don't warn about amgibuous direct bases here.
3840         (warn_about_ambiguous_direct_bases): New function.
3841         (layout_class_type): Use it.
3842
3843 2001-04-10  Richard Henderson  <rth@redhat.com>
3844
3845         * typeck.c (build_array_ref): Push the array reference inside
3846         COMPOUND_EXPR and COND_EXPR.
3847
3848 2001-04-05  Mark Mitchell  <mark@codesourcery.com>
3849
3850         * cp-tree.h (DECL_THIS_INLINE): Rename to DECL_DECLARED_INLINE_P.
3851         * decl.c (duplicate_decls): Adjust accordingly.
3852         (maybe_commonize_var): Likewise.
3853         (grokfndecl): Likewise.
3854         (start_function): Likewise.
3855         (start_method): Likewise.
3856         * decl2.c (key_method): Likewise.
3857         (import_export_decl): Likewise.
3858         * method.c (implicitly_declare_fn): Likewise.
3859         * optimize.c (maybe_clone_body): Likewise.
3860
3861 2001-04-05  Benjamin Kosnik  <bkoz@redhat.com>
3862
3863         * lang-specs.h: Add __DEPRECATED.
3864
3865 Thu Apr  5 16:54:29 2001  J"orn Rennecke <amylaar@redhat.com>
3866
3867         * search.c (get_dynamic_cast_base_type): When building a new
3868         constant, set its type to ssizetype.
3869
3870 2001-04-04  Jakub Jelinek  <jakub@redhat.com>
3871
3872         * optimize.c (expand_call_inline): Only add newly inlined statements
3873         into inlined_stmts.
3874
3875 2001-04-03  Mark Mitchell  <mark@codesourcery.com>
3876
3877         * cp-tree.h (OPERATOR_ASSIGN_FORMAT): Remove.
3878         (OPERATOR_FORMAT): Likewise.
3879         (OPERATOR_TYPENAME_FORMAT): Likewise.
3880         * operators.def: Remove old name-mangling information.
3881         * decl.c (grok_op_properties): Adjust accordingly.
3882         * lex.c (init_operators): Likewise.
3883         * rtti.c (get_tinfo_decl): Issue error messages about types that
3884         have variable size.
3885
3886 2001-04-03  Mark Mitchell  <mark@codesourcery.com>
3887
3888         * decl2.c (import_export_decl): Don't call import_export_class
3889         when processing an inline member function.
3890         * semantics.c (expand_body): Call import_export_decl before
3891         emitting inline functions.
3892
3893 2001-03-28  Richard Henderson  <rth@redhat.com>
3894
3895         IA-64 ABI Exception Handling:
3896         * cp-tree.def (EH_SPEC_BLOCK): New.
3897         (MUST_NOT_THROW_EXPR): New.
3898         * cp-tree.h: Update changed function declarations.
3899         (CPTI_PUSH_EXCEPTION_IDENTIFIER): Remove.
3900         (CPTI_CALL_UNEXPECTED): New.
3901         (struct cp_language_function): Rename x_eh_spec_try_block
3902         to x_eh_spec_block.
3903         (EH_SPEC_STMTS, EH_SPEC_RAISES): New.
3904         * decl.c (current_binding_level): If no current function
3905         bindings, revert to scope_chain.
3906         (initialize_predefined_identifiers): Remove __cp_push_exception.
3907         (store_parm_decls): Use begin_eh_spec_block.
3908         (finish_function): Use finish_eh_spec_block.
3909         (mark_lang_function): Update for name changes.
3910         * decl2.c (finish_file): No mark_all_runtime_matches.
3911         * dump.c (cp_dump_tree): Handle new tree codes.
3912         * error.c (dump_expr) [BIND_EXPR]: Fix typo.
3913         * except.c (catch_language_init, catch_language): Remove.
3914         (init_exception_processing): Don't set language code.
3915         Initialize call_unexpected_node, protect_cleanup_actions,
3916         eh_personality_libfunc, lang_eh_runtime_type.
3917         (call_eh_info, push_eh_info, get_eh_info, get_eh_value): Remove.
3918         (get_eh_type, get_eh_caught, get_eh_handlers): Remove.
3919         (prepare_eh_type): Split out type canonicalizations ...
3920         (build_eh_type_type): ... from here.
3921         (build_eh_type_type_ref): Remove.
3922         (mark_all_runtime_matches): Remove.
3923         (build_exc_ptr): New.
3924         (do_begin_catch, do_end_catch): New.
3925         (do_pop_exception): Remove.
3926         (build_terminate_handler): Remove.
3927         (choose_personality_routine): Split out language choice from ...
3928         (initialize_handler_parm): ... here.
3929         Use MUST_NOT_THROW_EXPR.
3930         (expand_start_catch_block): Use do_begin_catch.  Simplify Java
3931         exception object handling.
3932         (expand_start_eh_spec, expand_end_eh_spec): Remove.
3933         (expand_exception_blocks, alloc_eh_object): Remove.
3934         (begin_eh_spec_block, finish_eh_spec_block): New.
3935         (do_allocate_exception, do_free_exception): New.
3936         (expand_throw): Merge into ...
3937         (build_throw): ... here.  Update for abi.
3938         * expr.c (cplus_expand_expr): No expand_internal_throw.
3939         Handle MUST_NOT_THROW_EXPR.
3940         * pt.c (tsubst_expr): Handle EH_SPEC_BLOCK.
3941         * semantics.c (*) Update for except.h name changes.
3942         (genrtl_try_block): No protect_with_terminate.
3943         (genrtl_eh_spec_block): New.
3944         (genrtl_handler): Don't emit the goto here.
3945         (cp_expand_stmt): Handle EH_SPEC_BLOCK.
3946         (genrtl_finish_function): Don't expand_exception_blocks.
3947         * tree.c (cp_statement_code_p): Handle EH_SPEC_BLOCK.
3948
3949 2001-03-28  Richard Henderson  <rth@redhat.com>
3950
3951         * decl.c (struct named_label_list): Rename eh_region to
3952         in_try_scope, add in_catch_scope.
3953         (struct binding_level): Rename eh_region to is_try_scope,
3954         add is_catch_scope.
3955         (note_level_for_try): Rename from note_level_for_eh.
3956         (note_level_for_catch): New.
3957         (poplevel): Copy both is_try_scope and is_catch_scope to
3958         the named_label_list struct.
3959         (check_previous_goto_1): Don't check for catch block via
3960         DECL_ARTIFICIAL; use in_try_scope instead.
3961         (check_goto): Likewise.
3962         * cp-tree.h (note_level_for_try, note_level_for_catch): Declare.
3963         * except.c (expand_start_catch_block): Call note_level_for_catch.
3964         * semantics.c (begin_compound_stmt): Update for note_level_for_try.
3965
3966 2001-03-27  Richard Henderson  <rth@redhat.com>
3967
3968         * except.c: Use USING_SJLJ_EXCEPTIONS instead of
3969         exceptions_via_longjmp.
3970
3971 2001-03-27  Phil Edwards  <pme@sources.redhat.com>
3972
3973         * pt.c (check_default_tmpl_args):  Make error messages clearer.
3974
3975 2001-03-26  Phil Edwards  <pme@sources.redhat.com>
3976
3977         * error.c:  Also undefine 'A' macro used for cp_printers definition.
3978
3979 2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3980
3981         * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
3982
3983 2001-03-26  Mike Yang <yang@research.att.com>
3984             Mark Mitchell  <mark@codesourcery.com>
3985
3986         * dump.c (dump_access): New function.
3987         (cp_dump_tree): Use it.  Dump basetype information for class
3988         types.
3989
3990 2001-03-26  Mark Mitchell  <mark@codesourcery.com>
3991
3992         * Makefile.in (optimize.o): Depend on params.h.
3993         (duplicate_decls): Copy DECL_NUM_STMTS, not DECL_FRAME_SIZE.
3994         (init_decl_processing): Set flag_no_inline when doing
3995         inlining-on-trees.
3996         * optimize.c: Include params.h.
3997         (struct inline_data): Improve documentation of FNS.  Add
3998         FIRST_INLINED_FN, INLINED_STMTS, and CLONING_P.
3999         (INSNS_PER_STMT): New macro.
4000         (remap_block): Use CLONING_P.
4001         (inlinable_function_p): Don't inline big functions.
4002         (expand_call_inline): Keep track of how much inlining we've done.
4003         (optimize_function): Set FIRST_INLINED_FN.
4004         (maybe_clone_body): Set CLONING_P.
4005         * semantics.c (simplify_aggr_init_exprs_r): Fix typing problems in
4006         tree nodes.
4007         (genrtl_finish_function): Clear DECL_DEFER_OUTPUT before calling
4008         rest_of_compilation.  Clear DECL_RTL for local variables
4009         afterwards.
4010         (clear_decl_rtl): New function.
4011
4012 2001-03-26  Nathan Sidwell  <nathan@codesourcery.com>
4013
4014         Implement DR 209
4015         * cp-tree.h (skip_type_access_control,
4016         reset_type_access_control): Prototype.
4017         * decl.c (grokdeclarator): Access of friends is not checked.
4018         * parse.y (component_decl_list): Reset type access control.
4019         * semantics.c (decl_type_access_control): Clear
4020         current_type_lookups.
4021         (save_type_access_control): Don't save if not deferring.
4022         (skip_type_access_control, reset_type_access_control): New
4023         functions.
4024         (begin_class_definition): Do type access control for basetypes.
4025         Start deferred access control.
4026         (finish_class_definition): Resume immediate access control if
4027         this is a local class.
4028
4029 2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4030
4031         * class.c (add_method): Use memcpy/memmove, not bcopy.
4032
4033         * decl.c (duplicate_decls): Likewise.
4034
4035 2001-03-23  Jakub Jelinek  <jakub@redhat.com>
4036
4037         * mangle.c (write_discriminator): Use `_0' for discriminator 1,
4038         not `_'.
4039
4040 2001-03-23  Jakub Jelinek  <jakub@redhat.com>
4041
4042         * decl.c (local_names): Define.
4043         (push_local_name): New.
4044         (grok_reference_init): Return init if initializing static reference
4045         variable with non-constant instead of emitting it.
4046         Move expand_static_init call to cp_finish_decl.
4047         (layout_var_decl): Call push_local_name.
4048         (maybe_commonize_var): Allow inlining functions even if they have
4049         static local variables, use comdat_linkage for them if flag_weak.
4050         (check_initializer): Call obscure_complex_init if
4051         grok_reference_init returned non-zero.
4052         (save_function_data): Clear x_local_names.
4053         (pop_cp_function_context): Free x_local_names.
4054         (mark_inlined_fns): Remove.
4055         (mark_lang_function): Mark x_local_names.
4056         (lang_mark_tree): Don't mark DECL_ACCESS for DECL_DISCRIMINATOR_P.
4057         Mark inlined_fns as tree, remove call to mark_inlined_fns.
4058         * class.c (alter_access): Ensure DECL_ACCESS is never set if
4059         DECL_DISCRIMINATOR_P.
4060         * cp-tree.h (cp_language_function): Add x_local_names.
4061         (lang_decl_flags): Add discriminator into u2.
4062         (lang_decl_inlined_fns): Remove.
4063         (lang_decl): inlined_fns is now a TREE_VEC.
4064         (DECL_DISCRIMINATOR_P, DECL_DISCRIMINATOR): Define.
4065         * optimize.c (inlinable_function_p): DECL_INLINED_FNS is now a
4066         TREE_VEC, not a custom structure.
4067         (optimize_function): Likewise.
4068         * mangle.c (discriminator_for_local_entity): Discriminate among
4069         VAR_DECL local entities.
4070         * search.c (dfs_access_in_type): If DECL_DISCRIMINATOR_P, DECL_ACCESS
4071         is not valid.
4072
4073 2001-03-22  Bryce McKinlay  <bryce@albatross.co.nz>
4074
4075         Add support for Java interface method calls.
4076         * cp-tree.h (struct lang_type): Add java_interface flag.
4077         (TYPE_JAVA_INTERFACE): New macro.
4078         * tree.c (cp_valid_lang_attribute): Handle "java_interface" attribute
4079         by setting TYPE_JAVA_INTERFACE.
4080         * call.c (java_iface_lookup_fn): New static.
4081         (build_over_call): If calling a method declared in a
4082         TYPE_JAVA_INTERFACE, call build_java_interface_fn_ref to generate the
4083         expression which resolves the function address.
4084         (build_java_interface_fn_ref): New function.
4085
4086 2001-03-22  Richard Henderson  <rth@redhat.com>
4087
4088         * Make-lang.in (cp/except.o): Don't depend on insn-flags.h.
4089         * except.c: Don't include it.
4090
4091 2001-03-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
4092             based on an idea from Joe Buck <jbuck@synopsys.com>
4093
4094         * parse.y (bad_decl, template_arg_list_ignore, arg_list_ignore):
4095         New nonterminals.
4096         (data_def, component_decl): Add reductions to bad_decl.
4097
4098 2001-03-22  Jakub Jelinek  <jakub@redhat.com>
4099
4100         * method.c (do_build_assign_ref): Don't use build_modify_expr for
4101         anonymous aggregates, since they don't have assignment operator
4102         method.
4103         * decl.c (fixup_anonymous_aggr): Disallow ctors, dtors and copy
4104         assignment operators for anonymous structure fields.
4105
4106 2001-03-21  Jason Merrill  <jason@redhat.com>
4107
4108         * pt.c (instantiate_decl): Abort if we see a member constant
4109         instantiation that doesn't already have its initializer.
4110         Downgrade explicit instantiation without definition to pedwarn.
4111
4112         * cp-tree.h (DECL_TINFO_FN_P, SET_DECL_TINFO_FN_P): Remove.
4113         * class.c (build_vtable_entry): Don't check DECL_TINFO_FN_P.
4114         (import_export_decl): Check tinfo_decl_p, not DECL_TINFO_FN_P.
4115
4116         * cp-tree.h (CLASSTYPE_VTABLE_NEEDS_WRITING): Remove.
4117         (pending_vtables): Remove.
4118         * decl2.c (pending_vtables): Remove.
4119         (import_export_vtable): Use CLASSTYPE_INTERFACE_ONLY, not
4120         CLASSTYPE_VTABLE_NEEDS_WRITING.
4121         (import_export_class): Likewise.
4122         (init_decl2): Don't mark pending_vtables.
4123         * lex.c (handle_pragma_vtable): Just sorry.
4124         * pt.c (instantiate_class_template): Don't mess with
4125         CLASSTYPE_VTABLE_NEEDS_WRITING.
4126         (mark_class_instantiated): Likewise.
4127         * ptree.c (print_lang_type): Don't print it.
4128         * semantics.c (begin_class_definition): Don't set it.
4129
4130         * pt.c (template_tail): Replace with last_pending_template.
4131         (maybe_templates, maybe_template_tail): Remove.
4132         (add_pending_template): Adjust.
4133         (instantiate_pending_templates): Adjust.
4134
4135         * cp-tree.h (struct saved_scope): Remove lang_stack field.
4136         (current_lang_stack): Remove.
4137         * decl.c (maybe_push_to_top_level): Don't initialize it.
4138         (duplicate_decls): Use current_lang_depth.
4139         (xref_basetypes): Likewise.
4140         * class.c (current_lang_depth): New fn.
4141         (push_lang_context): Use more varray functionality.
4142         (pop_lang_context): Likewise.
4143
4144         * error.c (GLOBAL_THING): Always use '__'.
4145
4146 2001-03-21  Mark Mitchell  <mark@codesourcery.com>
4147
4148         * class.c (build_clone): Clear DECL_ASSEMBLER_NAME.
4149
4150         * mangle.c (mangle_decl_string): Mangle the names of overloaded
4151         operators, even when they have `extern "C"' linkage.
4152
4153 2001-03-19  Mark Mitchell  <mark@codesourcery.com>
4154
4155         * class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
4156         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
4157         where it's not necessary.
4158         (add_method): Remove optimization involving comparison of
4159         DECL_ASSEMBLER_NAME.
4160         (build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
4161         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
4162         where it's not necessary.
4163         (check_methods): Likewise.
4164         (build_clone): Likewise.
4165         (built_vtt): Likewise.
4166         * cp-tree.h (DECL_NEEDED_P): Likewise.
4167         * decl.c (pushtag): Likewise.
4168         (duplicate_decls): Likewise.
4169         (pushdecl): Likewise.
4170         (builtin_function): Likewise.
4171         (build_library_fn_1): Set DECL_LANGUAGE for library functions.
4172         (build_cp_library_fn): Likewise.
4173         (maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
4174         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
4175         where it's not necessary.
4176         (make_rtl_for_nonlocal_decl): Likewise.
4177         (cp_finish_decl): Likewise.
4178         (grokfndecl): Likewise.
4179         (grokvardecl): Likewise.
4180         (grokdeclarator): Likewise.
4181         (start_function): Likewise.
4182         (cp_missing_return_ok_p): Likewise.
4183         * decl2.c (grokclassfn): Likewise.
4184         (check_classfn): Likewise.
4185         (finish_static_data_member_decl): Likewise.
4186         (grokfield): Likewise.
4187         * error.c (GLOBAL_IORD_P): Remove.
4188         (dump_global_iord): Improve output.
4189         (dump_decl): Avoid using DECL_ASSEMBLER_NAME.
4190         * except.c (nothrow_libfn_p): Summarily reject any function not in
4191         namespace-scope.
4192         * init.c (build_java_class_ref): Don't explicitly set
4193         DECL_ASSEMBLER_NAME after calling mangle_decl.
4194         * mangle.c (mangle_decl_string): Handle extern "C" functions.
4195         (mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
4196         * method.c (set_mangled_name_for_decl): Don't explicitly set
4197         DECL_ASSEMBLER_NAME after calling mangle_decl.
4198         (make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
4199         IDENTIFIER_GLOBAL_VALUE for the thunk.
4200         * pt.c (set_mangled_name_for_template_decl): Remove.
4201         (check_explicit_specialization): Don't use it.
4202         (looup_template_class): Don't set DECL_ASSEMBLER_NAME.
4203         (tsubst_friend_function): Likewise.
4204         (tsubst_decl): Likewise.
4205         (regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
4206         * rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
4207         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
4208         where it's not necessary.
4209         (tinfo_base_init): Likewise.
4210         (create_real_tinfo_var): Likewise.
4211         * search.c (looup_field_1): Likewise.
4212         * semantics.c (finish_named_return_value): Likewise.
4213         * tree.c (init_tree): Set lang_set_decl_assembler_name.
4214
4215 2001-03-15  Gabriel Dos Reis  <gdr@codesourcery.com>
4216
4217         Correct semantics restrictions checking in throw-expression.
4218         * except.c (is_admissible_throw_operand): New function.
4219         (build_throw): Use it.
4220
4221 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
4222
4223         * decl.c (cp_make_fnname_decl): Set DECL_IGNORED_P on __FUNCTION__
4224         and its ilk.
4225
4226 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
4227
4228         * class.c (build_clone): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
4229         * cp-tree.h (DECL_IN_MEMORY_P): Likewise.
4230         * decl.c (duplicate_decls): Likewise.
4231         (builtin_function): Likewise.
4232         (build_library_fn): Likewise.
4233         (build_cp_library_fn): Likewise.
4234         (check_initializer): Likewise.
4235         (cp_finish_decl): Likewise.
4236         * decl2.c (grokfield): Likewise.
4237         (grok_function_init): Remove #if 0'd code.
4238         (finish_anon_union): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
4239         * friend.c (do_friend): Likewise.
4240         * init.c (get_temp_regvar): Likewise.
4241         * method.c (make_thunk): Likewise.
4242         * pt.c (tsubst_friend_function): Likewise.
4243         (tsubst_decl): Likewise.
4244         (regenerate_decl_from_template): Likewise.
4245         * semantics.c (genrtl_named_return_value): Likewise.
4246         (expand_body): Likewise.
4247         (genrtl_finish_function): Likewise.
4248         * tree.c (cp_tree_equal): Likewise.
4249
4250 2001-03-12  Nathan Sidwell  <nathan@codesourcery.com>
4251
4252         * call.c (convert_like_real): Add extra semantics to INNER
4253         parameter. Don't convert to temporary if a user conversion
4254         gives us an lvalue that we're about to bind to a reference.
4255         Set INNER to indicate pending reference binding on recursive
4256         calls.
4257
4258 2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>
4259
4260         * cp/lex.c: Delete duplicate pending_lang_change.
4261
4262 2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>
4263
4264         * cp/lex.c (handle_pragma_interface, handle_pragma_implementation):
4265         Similarly.
4266         * cp/repo.c (get_base_filename, open_repo_file): Similarly.
4267         * cp/cp-tree.h: Remove file_name_nondirectory prototype.
4268
4269 2001-03-09  Zack Weinberg  <zackw@stanford.edu>
4270
4271         * Make-lang.in: Add dependencies on $(TM_P_H) as appropriate.
4272
4273 2001-03-08  Stan Shebs  <shebs@apple.com>
4274
4275         * cp-tree.h (set_identifier_local_value): Remove unused decl.
4276
4277 2001-03-06  Zack Weinberg  <zackw@stanford.edu>
4278
4279         * spew.c: Remove references to CPP_OSTRING.
4280
4281 2001-03-06  Andrew Haley  <aph@redhat.com>
4282
4283         * typeck.c (convert_arguments): Check that we have an fndecl.
4284
4285 2001-03-05  Andrew Haley  <aph@redhat.com>
4286
4287         * typeck.c (convert_arguments): Don't do ellipsis conversion for
4288         __built_in_constant_p.
4289
4290 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
4291
4292         * typeck.c (build_static_cast): Allow enum to enum conversions
4293         as per DR 128.
4294
4295 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
4296
4297         * class.c (check_field_decls): Pointers to member do not a
4298         non-pod struct make, as per DR 148.
4299
4300 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
4301
4302         * call.c (joust): cp_pedwarn when using gnu extension concerning
4303         worst conversion sequences.
4304
4305 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
4306
4307         * decl.c: Replace all uses of 'boolean' with 'bool'.
4308
4309 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
4310
4311         * lang-specs.h: Add zero initializer for cpp_spec field to
4312         all array elements that need one.  Don't put an #ifdef inside
4313         the initializer list; set a default for CPLUSPLUS_CPP_SPEC and
4314         use it.
4315
4316 2001-03-01  Nathan Sidwell  <nathan@codesourcery.com>
4317
4318         Implement using decls inside template functions.
4319         * decl2.c (validate_nonmember_using_decl): Don't special case
4320         fake_std_node in the global namespace. Don't reject early when
4321         processing a template.
4322         (do_local_using_decl): Add to statement tree. Don't do further
4323         processing when building a template.
4324         * pt.c (tsubst_expr, DECL_STMT case): Deal with USING_DECLs.
4325
4326 2001-03-01  Nathan Sidwell  <nathan@codesourcery.com>
4327
4328         * decl2.c (do_nonmember_using_decl): Don't complain if we find
4329         same function. Do complain about ambiguating extern "C"
4330         declarations.
4331
4332 2001-02-28  Nathan Sidwell  <nathan@codesourcery.com>
4333
4334         Remove floating point and complex type template constant parms.
4335         * pt.c (convert_nontype_argument): Remove REAL_TYPE and
4336         COMPLEX_TYPE extensions.
4337         (invalid_nontype_parm_type_p): Likewise.
4338
4339 2001-02-27  Jeffrey Oldham  <oldham@codesourcery.com>
4340
4341         * except.c (call_eh_info): Revert "match_function"'s type.
4342
4343 2001-02-27  Nathan Sidwell  <nathan@codesourcery.com>
4344
4345         Fix ctor vtable vcall offsets.
4346         * class.c (struct vtbl_init_data_s): Add rtti_binfo member.
4347         (build_rtt_vtbl_entries): Lose RTTI_BINFO parameter.
4348         (get_matching_base): Remove.
4349         (get_original_base): New function.
4350         (build_vtbl_initializer): Initialize vid.rtti_binfo.
4351         Use a virtual thunk for a ctor vtable with an index
4352         (add_vcall_offset_vtbl_entries_1): Check if binfo has lost a
4353         primary base within a constructor vtable. Only set
4354         BV_VCALL_INDEX when not a constructor vtable. Adjust vcall offset
4355         when primary base has been lost.
4356         * cp-tree.h (BINFO_VIRTUALS): Remove ambiguity from comment.
4357
4358 2001-02-26  Jeffrey Oldham  <oldham@codesourcery.com>
4359
4360         * call.c (joust): Ensure more_specialized()'s argument length
4361         parameter has correct value for constructors.
4362
4363 2001-02-26  Nathan Sidwell  <nathan@codesourcery.com>
4364
4365         * except.c (call_eh_info): Cleanup generation of cp_eh_info struct.
4366
4367         * decl.c (mark_inlined_fns): Prototype.
4368
4369 2001-02-22  Mark Mitchell  <mark@codesourcery.com>
4370
4371         * spew.c (yylex): Correct handling of friends.
4372
4373 2001-02-22  Mark Mitchell  <mark@codesourcery.com>
4374
4375         * mangle.c (write_encoding): Pass write_function_type the
4376         FUNCTION_DECL for the function being encoded.
4377         (write_function_type): Pass it along to write_bare_function_type.
4378         (write_bare_function_type): Pass it along to write_method_parms.
4379         (write_method_parms): Don't mangle the compiler-generated
4380         parameters to a constructor or destructor.
4381
4382 2001-02-22  Andreas Jaeger  <aj@suse.de>
4383
4384         * optimize.c: Include toplev.h for
4385         note_deferral_of_defined_inline_function prototype.
4386
4387 2001-02-22  Jakub Jelinek  <jakub@redhat.com>
4388
4389         * cp-tree.h (struct lang_decl_inlined_fns): New.
4390         (struct lang_decls): Add inlined_fns.
4391         (DECL_INLINED_FNS): New macro.
4392         * optimize.c (struct inline_data): Add inlined_fns.
4393         (declare_return_variable): Use VARRAY_ACTIVE_SIZE macro.
4394         (inlinable_function_p): Likewise, fix typo in comment,
4395         function is not inlinable if it already inlined function currently
4396         being optimized.
4397         (expand_call_inline): Add fn to inlined_fns if necessary.
4398         (optimize_function): Initialize inlined_fns.
4399         Save inlined_fns into DECL_INLINED_FNS after expanding inlines.
4400         * decl.c (mark_inlined_fns): New function.
4401         (lang_mark_tree): Call it.
4402
4403 2001-02-21  Jason Merrill  <jason@redhat.com>
4404
4405         * cp-tree.h (struct lang_decl_flags): Remove uninlinable flag.
4406         (DECL_UNINLINABLE): Move to middle-end.
4407
4408         * class.c (clone_function_decl): Set DECL_ABSTRACT on original fn.
4409         * decl.c (duplicate_decls): Preserve DECL_ABSTRACT.
4410         * class.c (build_clone): Set DECL_ABSTRACT_ORIGIN for the clone.
4411         * optimize.c (maybe_clone_body): Set DECL_ABSTRACT_ORIGIN for the
4412         parms and outer BLOCK.  note_deferral_of_defined_inline_function.
4413
4414         * method.c (implicitly_declare_fn): Don't set DECL_ARTIFICIAL on
4415         second parm of op=.
4416
4417 2001-02-19  Mark Mitchell  <mark@codesourcery.com>
4418
4419         * decl2.c (set_decl_namespace): Allow explicit instantiations in
4420         any namespace.
4421
4422 2001-02-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4423
4424         * optimize.c (expand_call_inline): Don't walk subtrees of type
4425         nodes.
4426
4427 2001-02-18  Mark Mitchell  <mark@codesourcery.com>
4428
4429         * class.c (add_vcall_offset_vtbl_entries_1): Only add one entry
4430         for a destructor.
4431
4432 2001-02-18  Jason Merrill  <jason@redhat.com>
4433
4434         Do put the VTT parameter in DECL_ARGUMENTS.
4435         * cp-tree.h (struct cp_language_function): Add x_vtt_parm.
4436         (current_vtt_parm): New macro.
4437         (struct lang_decl_flags): Add has_vtt_parm_p, remove vtt_parm.
4438         (DECL_HAS_VTT_PARM_P): New macro.
4439         (DECL_VTT_PARM): Remove.
4440         (FUNCTION_FIRST_USER_PARMTYPE, FUNCTION_FIRST_USER_PARM): New macros.
4441         * decl.c (duplicate_decls): Only copy the operator code if
4442         appropriate.
4443         (start_function): Set current_vtt_parm.
4444         (lang_mark_tree): Don't mark vtt_parm.
4445         * decl2.c (maybe_retrofit_in_chrg): Do add the VTT parm to
4446         DECL_ARGUMENTS.  Set DECL_HAS_VTT_PARM_P.
4447         * class.c (build_clone): Maybe remove the VTT parm.
4448         * optimize.c (maybe_clone_body): Set up the VTT parm.
4449         * pt.c (copy_default_args_to_explicit_spec): Preserve the VTT parm.
4450         * call.c (build_over_call): Just allow the VTT arg.
4451         * method.c (make_thunk): Don't set DECL_VTT_PARM.
4452         (do_build_copy_constructor): Use FUNCTION_FIRST_USER_PARM.
4453         (synthesize_method): Use FUNCTION_FIRST_USER_PARMTYPE.
4454         * decl.c (grokdeclarator, copy_args_p, grok_ctor_properties): Likewise.
4455         * error.c (dump_function_decl): Likewise.
4456         * call.c (build_user_type_conversion_1, convert_like_real): Abort
4457         if we try to call a constructor with in-charge or VTT parms.
4458         * method.c (skip_artificial_parms_for): New fn.
4459         * call.c (add_function_candidate, build_over_call): Call it.
4460         * call.c (build_new_method_call): Use current_vtt_parm.
4461         * init.c (expand_virtual_init): Likewise.
4462         * class.c (same_signature_p): No longer static.
4463         * cp-tree.h: Declare it.
4464         * search.c (look_for_overrides_r): Use it.
4465
4466 2001-02-17  Mark Mitchell  <mark@codesourcery.com>
4467
4468         * cp-tree.h (new_abi_rtti_p): Remove.
4469         (name_mangling_version): Likewise.
4470         (flag_do_squangling): Likewise.
4471         * class.c (build_rtti_vtbl_entries): Remove old ABI support.
4472         * decl.c (grokfndecl): Likewise.
4473         * decl2.c (name_mangling_version): Remove.
4474         (flag_do_squangling): Likewise.
4475         (lang_f_options): Remove `squangle'.
4476         (unsupported_options): Add `squangle'.
4477         (cxx_decode_option): Issue a warning about uses of
4478         -fname-mangling-version.
4479         (finish_file): Remove old ABI support.
4480         * pt.c (check_explicit_specialization): Likewise.
4481         (tsubst_decl): Likewise.
4482         * rtti.c (init_rtti_processing): Likewise.
4483         (build_headof): Likewise.
4484         (get_tinfo_decl_dynamic): Likewise.
4485         (tinfo_from_decl): Likewise.
4486         (build_dynamic_cast_1): Likewise.
4487         (synthesize_tinfo_var): Likewise.
4488         * init.c (build_new): Allow enumeration types for the array-bounds
4489         in a direct-new-declarator.
4490
4491         * semantics.c (finish_typeof): Resolve OFFSET_REFs.
4492
4493         * pt.c (check_explicit_specialization): Copy TREE_PRIVATE and
4494         TREE_PROTECTED from the template being specialized.
4495
4496 2001-02-17  Jason Merrill  <jason@redhat.com>
4497
4498         * decl2.c (build_artificial_parm): Set TREE_READONLY.
4499
4500         * decl.c (bad_specifiers): Allow throw specs on things with
4501         pointer-to-function or -member-function type.
4502         * init.c (build_default_init): Don't use a CONSTRUCTOR to initialize
4503         a pmf.
4504
4505 2001-02-17  Mark Mitchell  <mark@codesourcery.com>
4506
4507         * call.c (check_dtor_name): Handle template names correctly.
4508
4509 2001-02-16  Jason Merrill  <jason@redhat.com>
4510
4511         * cp-tree.h (DECL_USE_VTT_PARM): Remove.
4512         * decl2.c (maybe_retrofit_in_chrg): Don't create it.
4513         * optimize.c (maybe_clone_body): Don't substitute it.
4514         * call.c (build_new_method_call): Check in_chrg instead.
4515         * init.c (expand_virtual_init): Likewise.
4516
4517 2001-02-16  Gabriel Dos Reis  <gdr@codesourcery.com>
4518
4519         * decl.c (check_tag_decl): Make sure a typedef for an anonymous
4520         class-type introduces at least a type-name.
4521
4522 2001-02-16  Jakub Jelinek  <jakub@redhat.com>
4523
4524         * call.c (convert_like_real): Create a temporary for non-lvalue.
4525
4526 2001-02-16  Jeffrey Oldham  <oldham@codesourcery.com>
4527
4528         * cp-tree.h: Fix typos in comments.
4529
4530 2001-02-16  Jason Merrill  <jason@redhat.com>
4531
4532         * optimize.c (remap_block): If we're compiling a clone, pass the
4533         new block to insert_block.
4534
4535 2001-02-16  Mark Mitchell  <mark@codesourcery.com>
4536
4537         * semantics.c (finish_asm_stmt): Robustify.
4538
4539 2001-02-15  Mark Mitchell  <mark@codesourcery.com>
4540
4541         * pt.c (push_template_decl_real): Don't remangle the name of a
4542         class template.
4543
4544 2001-02-15  Jim Meyering  <meyering@lucent.com>
4545
4546         * Make-lang.in (c++.install-common): Depend on installdirs.
4547         (c++.install-info): Likewise.
4548         (c++.install-man): Likewise.
4549
4550 2001-02-15  Mark Mitchell  <mark@codesourcery.com>
4551
4552         * typeck2.c (build_m_component_ref): Robustify.
4553
4554 2001-02-15  Alexandre Oliva  <aoliva@redhat.com>
4555
4556         * friend.c (do_friend): Don't take the nested [template] class
4557         into account when deciding whether to warn about the friend
4558         function not referring to a template function.
4559
4560 2001-02-14  Jakub Jelinek  <jakub@redhat.com>
4561
4562         * typeck.c (build_unary_op): Clarify error message.
4563
4564 2001-02-08  Aldy Hernandez  <aldyh@redhat.com>
4565
4566         * parse.y (component_constructor_declarator): allow optional
4567         parentheses around constructor class name.
4568
4569 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
4570
4571         * cp-tree.h (setup_vtbl_ptr): Move prototype to semantics.c
4572         section.
4573         * init.c (emit_base_init): Remove incorrect comment about
4574         virtual bases.
4575         * method.c (make_thunk): Fix comment alignment.
4576
4577 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
4578
4579         Kill remnants of this is variable.
4580         * cp-tree.h (flag_this_is_variable): Remove.
4581         * decl2.c (flag_this_is_variable): Remove.
4582         * class.c (fixed_type_or_null): Add cdtor parm. Adjust.
4583         (build_vbase_path): The path is non-static, even in a cdtor.
4584         (resolves_to_fixed_type_p): Add additional return value.
4585         * search.c (init_vbase_pointers): Adjust.
4586         * tree.c (lvalue_p_1): Adjust.
4587         * typeck.c (mark_addressable): Adjust.
4588
4589 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
4590
4591         * pt.c (unify): Don't check cv quals of array types.
4592
4593 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
4594
4595         * tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to
4596         check whether we already have the type.
4597
4598 2001-02-13  Mark Mitchell  <mark@codesourcery.com>
4599
4600         * cp-tree.h (CLASSTYPE_DESTRUCTORS): Fix typo in comment.
4601         * call.c (build_op_delete_call): Simplify to remove duplicate
4602         code.
4603         * class.c (clone_function_decl): Don't build the deleting variant
4604         of a non-virtual destructor.
4605         * decl.c (finish_destructor_body): Don't call delete if this is a
4606         non-virtual destructor.
4607         * init.c (build_delete): Explicitly call `operator delete' when
4608         deleting an object with a non-virtual destructor.
4609
4610 2001-02-13  Jason Merrill  <jason@redhat.com>
4611
4612         * lang-specs.h: Add more __EXCEPTIONS.
4613
4614 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
4615
4616         * typeck2.c (process_init_constructor): Check
4617         TREE_HAS_CONSTRUCTOR before issuing missing init warning.
4618
4619 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
4620
4621         * pt.c (maybe_adjust_types_for_deduction, DEDUCE_ORDER case):
4622         Remove spurious information in comment. Allow further
4623         adjustments of REFERENCE_TYPE args.
4624
4625 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
4626
4627         * errfn.c (cp_deprecated): Tweak diagnostic text.
4628         * parse.y (new_initializer): Deprecate initializer lists
4629         extension.
4630
4631 2001-02-12  Mark Mitchell  <mark@codesourcery.com>
4632
4633         Remove old ABI support.
4634
4635 2001-02-11  Mark Mitchell  <mark@codesourcery.com>
4636
4637         * decl2.c (flag_vtable_thunks): Always set it to 1.
4638         (flag_new_abi): Likewise.
4639         * lang-specs.h: Remove conditional on ENABLE_NEW_GXX_ABI.
4640
4641         * Makefile.in (g++spec.o): Fix typo.
4642
4643 2001-02-09  Jason Merrill  <jason@redhat.com>
4644
4645         * lang-specs.h: Restore definition of __EXCEPTIONS.
4646
4647 2001-02-08  Jason Merrill  <jason@redhat.com>
4648
4649         * search.c (shared_member_p): New function.
4650         (lookup_field_r): Use it.
4651         * cp-tree.h (SHARED_MEMBER_P): Remove.
4652
4653         * method.c (process_overload_item): Handle template-dependent array
4654         bounds.
4655         * pt.c (type_unification_real): If we end up with undeduced nontype
4656         parms, try again.
4657
4658         * decl.c (lookup_name_real): Tweak warning to refer to decls, not
4659         types.
4660
4661         * typeck2.c (friendly_abort): Don't say anything if we have
4662         earlier errors or sorries.
4663
4664         * decl.c (check_tag_decl): Notice attempts to redefine bool and
4665         wchar_t.  Ignore if in_system_header.
4666
4667         * decl.c (maybe_push_cleanup_level): New fn...
4668         (start_decl_1): ...split out from here.
4669         * cvt.c (build_up_reference): Use it.
4670         * cp-tree.h: Declare it.
4671
4672 2001-02-07  Mark Mitchell  <mark@codesourcery.com>
4673
4674         * lang-specs.h: Use CPLUSPLUS_CPP_SPEC for the preprocessor
4675         spec.
4676
4677 2001-02-06  Nathan Sidwell  <nathan@codesourcery.com>
4678
4679         * pt.c (lookup_template_class): Make sure it's a primary
4680         template or template_template_parm when called from the parser.
4681         (instantiate_template_class): Add assertion.
4682
4683 2001-02-05  Alexandre Oliva  <aoliva@redhat.com>
4684
4685         * method.c (build_mangled_name) [old abi]: Protect flush_repeats()
4686         from error_mark_node.
4687
4688 2001-02-05  Nathan Sidwell  <nathan@codesourcery.com>
4689
4690         Fix specification and implementation bugs in V3 ABI
4691         construction vtables.
4692         * cp-tree.h (flag_dump_class_layout): New flag.
4693         (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH_P): Remove.
4694         (BINFO_LOST_PRIMARY_P): New flag.
4695         (SET_BINFO_NEW_VTABLE_MARKED): Adjust asserts.
4696         (BINFO_PRIMARY_MARKED_P): Rename to ...
4697         (BINFO_PRIMARY_P): ... here.
4698         (binfo_via_virtual): New prototype.
4699         * decl2.c (flag_dump_class_layout): New flag.
4700         (cxx_decode_option): Set it. Adjust -fdump-translation-unit to
4701         use `=' as a file name separator.
4702         * init.c (dfs_initialize_vtbl_ptrs): Walk into virtual primary
4703         bases.
4704         (build_vtbl_address): If this is a virtual primary base, then
4705         get the vtbl of what it is ultimately primary for.
4706         * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Adjust
4707         for BINFO_PRIMARY_P.
4708         (dfs_skip_nonprimary_vbases_markedp): Likewise.
4709         (get_shared_vbase_if_not_primary): Likewise.
4710         (dfs_get_pure_virtuals): Likewise.
4711         (expand_upcast_fixups): Likewise.
4712         (fixup_virtual_upcast_offsets): Likewise.
4713         (dfs_find_vbase_instance): Likewise.
4714         (find_vbase_instance): Likewise.
4715         (binfo_from_vbase): Adjust comment to reflect reality.
4716         (binfo_via_virtual): New function.
4717         * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): New macros
4718         for binfo walking during VTT construction.
4719         (dfs_mark_primary_bases): Remove.
4720         (force_canonical_binfo_r): New function.
4721         (force_canonical_binfo): New function.
4722         (mark_primary_virtual_base): New function.
4723         (mark_primary_bases): Walk in inheritance graph order, use
4724         mark_primary_virtual_base.
4725         (determine_primary_base): Use some more intermediate variables.
4726         (dfs_find_final_overrider): Don't check for overriding along a
4727         virtual path.
4728         (dfs_modify_vtables): Walk into primary virtual bases too.
4729         (walk_subobject_offsets): Adjust for BINFO_PRIMARY_P.
4730         (build_base_fields): Likewise.
4731         (dfs_set_offset_for_unshared_vbases): Likewise.
4732         (layout_virtual_bases): Likewise.
4733         (end_of_class): Likewise.
4734         (finish_struct_1): Call dump_class_hierarchy, if requested.
4735         (dfs_get_primary_binfo): Use BINFO_TYPE for binfos.
4736         (dump_class_hierarchy_r): Add stream parameter. Emit more information.
4737         (dump_class_hierarchy): Add file parameter. Append to file, if
4738         required.
4739         (finish_vtbls): Adjust accumulate_vtbl_inits call.
4740         Use canonical base for virtual bases.
4741         (build_vtt): Add more comments. Adjust build_vtt_inits call.
4742         (build_vtt_inits): Remove VIRTUAL_VTTS_P parm.
4743         Only set BINFO_VPTR_INDEX on top level. Use VTT_TOP_LEVEL_P,
4744         VTT_MARKED_BINFO_P for binfo walking. Use canonical vbase for
4745         virtual VTTs.
4746         (dfs_build_secondary_vptr_vtt_inits): Extract VTT_TOP_LEVEL_P
4747         from DATA.  We want virtual primary bases and all bases via virtual.
4748         Only set BINFO_VPTR_INDEX for top level. Look up from a primary
4749         virtual base when not a construction vtable.
4750         (dfs_ctor_vtable_bases_queue_p): New DFS predicate.
4751         (build_ctor_vtbl_group): Adjust accumulate_vtbl_inits call.
4752         Use canonical bases when processing virtual bases.
4753         (accumulate_vtbl_inits): We're interested in any base via a
4754         virtual path.
4755         (dfs_accumulate_vtbl_inits): If this is a primary virtual base
4756         within a construction vtable, determine what is being overridden.
4757         (build_vtbl_initializer): Add more comments
4758         (add_vcall_offset_vtbl_entries_1): Adjust comment.
4759         (build_rtti_vtbl_entries): Check if the base has lost its
4760         primary.
4761
4762 2001-02-05  Mark Mitchell  <mark@codesourcery.com>
4763
4764         * Makefile.in (g++spec.o): Adjust use of DRIVER_DEFINES.
4765
4766 Sun Feb  4 15:52:44 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4767
4768         * decl.c (pushdecl): Call abort instead of fatal.
4769         * except.c (decl_is_java_type): Call fatal_error instead of fatal.
4770         * init.c (build_new_1): Likewise.
4771         (build_java_class_ref): Call internal_error and fatal_error, not fatal.
4772         * decl.c (build_typename_type): hash_table_init now returns void.
4773         decl.c (init_decl_processing): Make an error non-fatal.
4774
4775 2001-02-04  Mark Mitchell  <mark@codesourcery.com>
4776
4777         * cp-tree.h (CLASSTYPE_INTERFACE_UNKNOWN): Fix formatting.
4778         Document.
4779         (CLASSTYPE_INTERFACE_KNOWN): Likewise.
4780         (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
4781         (SET_CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
4782         (SET_CLASSTYPE_INTERFACE_KNOWN): Likewise.
4783         * decl.c (maybe_commonize_var): Use the new name-mangling where
4784         appropriate.
4785         * decl2.c (comdat_linkage): Enhance comments.  Make all
4786         compiler-generated things static, if COMDAT is not available.
4787         (get_tinfo_decl): Do not make typeinfo objects that belong in the
4788         library COMDAT.
4789         (tinfo_base_init): Use the correct mangled name for typeinfo
4790         strings, and push them into the global scope.
4791         (typeinfo_in_lib_p): New function.
4792         (synthesize_tinfo_var): Use it.
4793         (create_real_tinfo_var): Likewise.
4794
4795 2001-02-03  Jakub Jelinek  <jakub@redhat.com>
4796
4797         * decl.c (push_class_binding): Use context_for_name_lookup instead
4798         of CP_DECL_CONTEXT.
4799         * search.c (context_for_name_lookup): Remove static.  Check for NULL
4800         context in the loop.
4801         * cp-tree.h (context_for_name_lookup): Add prototype.
4802
4803 2001-02-02  Jakub Jelinek  <jakub@redhat.com>
4804
4805         * cp-tree.h (build_expr_ptr_wrapper, can_free): Remove.
4806         * tree.c (build_expr_ptr_wrapper, can_free, permanent_obstack):
4807         Remove.
4808         * call.c (convert_class_to_reference, build_user_type_conversion_1,
4809         add_warning): Change build_expr_ptr_wrapper to build_ptr_wrapper.
4810
4811 2001-02-02  Mark Mitchell  <mark@codesourcery.com>
4812
4813         * Make-lang.in (g++spec.o): Add DRIVER_DEFINES to the list
4814         of macros used when compiling g++spec.c.
4815         * g++spec.c (lang_specific_driver): Link with the shared
4816         libgcc by default.
4817
4818 2001-01-29  Joseph S. Myers  <jsm28@cam.ac.uk>
4819
4820         * decl2.c (build_expr_from_tree), lex.c (make_pointer_declarator,
4821         make_reference_declarator, make_call_declarator), method.c
4822         (implicitly_declare_fn), parse.y (namespace_using_decl,
4823         notype_unqualified_id, expr_or_declarator, new_type_id,
4824         after_type_declarator, direct_after_type_declarator,
4825         notype_declarator, complex_notype_declarator,
4826         complex_direct_notype_declarator, qualified_id,
4827         notype_qualified_id, overqualified_id, direct_new_declarator,
4828         absdcl, direct_abstract_declarator, conversion_declarator), pt.c
4829         (tsubst), semantics.c (begin_constructor_declarator): Use build_nt
4830         instead of build_parse_node.
4831
4832 2001-01-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4833
4834         * cp-tree.h (cp_tree_index): Delete CPTI_MINUS_ONE.
4835         (minus_one_node): Moved to top level gcc directory.  Renamed
4836         to integer_minus_one_node.
4837
4838         * init.c (init_init_processing): Don't set minus_one_node.
4839         (build_vec_init): Use integer_minus_one_node.
4840
4841         * rtti.c (get_tinfo_decl_dynamic): Likewise.
4842
4843 2001-01-28  Jakub Jelinek  <jakub@redhat.com>
4844
4845         * optimize.c (copy_body_r): If MODIFY_EXPR has both arguments
4846         identical and they would be replaced with constant, remove
4847         MODIFY_EXPR from the tree.
4848
4849 2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4850
4851         * Make-lang.in: Remove all dependencies on defaults.h.
4852         * call.c: Don't include defaults.h.
4853         * decl.c: Likewise.
4854         * decl2.c: Likewise.
4855         * except.c: Likewise.
4856         * pt.c: Likewise.
4857         * rtti.c: Likewise.
4858         * tree.c: Likewise.
4859         * typeck.c: Likewise.
4860
4861 2001-01-25  Jakub Jelinek  <jakub@redhat.com>
4862
4863         * mangle.c (write_mangled_name, write_encoding): Mangle overloaded
4864         operators even in "C" linkage.
4865         * method.c (set_mangled_name_for_decl): Likewise.
4866         * decl.c (grokfndecl): Call set_mangled_name_for_decl even for
4867         overloaded operators in "C" linkage.
4868
4869 2001-01-24  Nathan Sidwell  <nathan@codesourcery.com>
4870
4871         * pt.c (tsubst_decl): Remove IN_DECL parameter.
4872         (tsubst_arg_types): Check parameter is not void.
4873         (tsubst): Adjust tsubst_decl call.
4874
4875 2001-01-24  Nathan Sidwell  <nathan@codesourcery.com>
4876
4877         * call.c (add_builtin_candidate): Quote std properly, from
4878         previous change.
4879
4880 2001-01-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4881
4882         * pt.c (check_explicit_specialization): Clone constructors and
4883         destructors.
4884
4885 2001-01-23  Nathan Sidwell  <nathan@codesourcery.com>
4886
4887         * decl.c (grokdeclarator): Don't presume DECL_LANG_SPECIFIC
4888         indicates anything special about template depth. Make sure we
4889         only count the user visible template classes.
4890
4891 2001-01-23  Nathan Sidwell  <nathan@codesourcery.com>
4892
4893         * call.c (build_conv): Typo in comment.
4894         (add_builtin_candidate): Add more explanation.
4895         Remove extra test for ENUMERAL_TYPE in {PRE,POST}INCREMENT_EXPR.
4896         Allow ENUMERAL_TYPEs for relops and eqops. Add both candidates
4897         when we have enumeral types.
4898         (add_builtin_candidates): Add more explanation. Add ENUMERAL_TYPE
4899         candidates for relops and eqops.
4900         (joust): Simplify control flow. Allow a non-template user
4901         function to hide a builtin.
4902
4903 2001-01-22  Nathan Sidwell  <nathan@codesourcery.com>
4904
4905         * cp-tree.h (unification_kind_t): Add DEDUCE_ORDER.
4906         (more_specialized): Add deduction parameter.
4907         * call.c (joust): Adjust more_specialized call.
4908         * pt.c (UNIFY_ALLOW_OUTER_MORE_CV_QUAL,
4909         UNIFY_ALLOW_OUTER_LESS_CV_QUAL): New unify flags.
4910         (get_bindings_order): Remove.
4911         (get_bindings_real): Add DEDUCE parameter.
4912         (maybe_adjust_types_for_deduction): Return extra unify flags. Do
4913         REFERENCE_TYPE jig for DEDUCE_ORDER.
4914         (type_unification_real): Deal with DEDUCE_ORDER. Use result of
4915         maybe_adjust_types_for_deduction.
4916         (more_specialized): Add DEDUCE parameter. Call get_bindings_real
4917         directly.
4918         (try_one_overload): Use result of maybe_adjust_types_for_deduction.
4919         (check_cv_quals_for_unify): Use new unify qualifier flags.
4920         (unify): Clear new unify qualifier flags.
4921         (get_bindings_real): Add DEDUCE parameter.
4922         (get_bindings): Adjust call to get_bindings_real.
4923         (get_bindings_overload): Likewise.
4924         (most_specialized_instantiation): Adjust call to
4925         more_specialized.
4926
4927 2001-01-19  Jason Merrill  <jason@redhat.com>
4928
4929         * decl2.c (flag_vtable_thunks): Also depend on ENABLE_NEW_GXX_ABI.
4930
4931         * decl.c (init_decl_processing): Just force -fvtable-thunks on if
4932         -fnew-abi.
4933
4934 2001-01-19  Ute Pelkmann  <scope.muc@t-online.de>
4935
4936         * decl2.c (arg_assoc_class): Fix double iteration logic.
4937
4938 2001-01-19  Jason Merrill  <jason@redhat.com>
4939
4940         * init.c (build_delete): Always call convert_force to strip cv-quals.
4941
4942         * decl2.c (flag_new_abi): Depend on ENABLE_NEW_GXX_ABI.
4943         * lang-specs.h: Default ABI depends on ENABLE_NEW_GXX_ABI.
4944         * g++spec.c: Don't look at ENABLE_NEW_GXX_ABI.
4945
4946 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
4947
4948         * search.c (get_vbase_1): Count only virtual bases.
4949
4950 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
4951
4952         * class.c (duplicate_tag_error): Robustify flag clearing.
4953
4954 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
4955
4956         * cp-tree.h (lookup_template_class): Add complain parm.
4957         * decl.c (lookup_namespace_name): Adjust call to
4958         lookup_template_class.
4959         (make_typename_type): Likewise.
4960         * semantics.c (finish_template_type): Likewise.
4961         * pt.c (lookup_template_class): Add complain parm. Adjust.
4962         (tsubst_aggr_type): Pass COMPLAIN down to lookup_template_class.
4963         (tsubst): Likewise.
4964
4965 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
4966
4967         * pt.c (copy_default_args_to_explicit_spec): Preserve
4968         object's CV quals. Reorganize.
4969
4970 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
4971
4972         * typeck.c (build_modify_expr): Say `initialization' for
4973         INIT_EXPRs.
4974         * init.c (build_default_init): Convert to enumeral type, if
4975         needed.
4976
4977 2001-01-18  Jakub Jelinek  <jakub@redhat.com>
4978
4979         * parse.y (nomods_initdcl0): Properly set things up for
4980         initdcl0_innards.
4981
4982 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
4983
4984         * pt.c (UNIFY_ALLOW_OUTER_LEVEL): New unify flag.
4985         (type_unification_real): Set it.
4986         (unify): Use it.
4987
4988 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
4989
4990         * decl.c (finish_destructor_body): Convert to vbase pointer here.
4991
4992 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
4993
4994         * semantics.c (begin_class_definition): Check we're not inside a
4995         template parm list.
4996
4997 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
4998
4999         * tree.c (walk_tree, TREE_LIST): Don't walk the TREE_PURPOSE of
5000         BASELINK_P.
5001
5002 2001-01-16  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5003
5004         * typeck.c (build_function_call_real): Call fold on the CALL_EXPR.
5005         * call.c (build_over_call): Add comment.
5006
5007 2001-01-16 Daniel Berlin <dberlin@redhat.com>
5008
5009         * cvt.c (ocp_convert): Handle vector type conversion
5010         * typeck2.c (digest_init): Handle vector type initializations
5011
5012 2001-01-16  Phil Edwards  <pme@sources.redhat.com>
5013
5014         * g++spec.c:  Don't add libraries needlessly if -fsyntax-only
5015           was given.
5016
5017 2001-01-15  Nathan Sidwell  <nathan@codesourcery.com>
5018
5019         * pt.c (check_nontype_parm): Rename to ...
5020         (invalid_nontype_parm_type_p): ... here.
5021         (process_template_parm): Adjust.
5022         (convert_template_argument): Adjust.
5023
5024 2001-01-15  Nathan Sidwell  <nathan@codesourcery.com>
5025
5026         * pt.c (check_nontype_parm): New function.
5027         (process_template_parm): Use it.
5028         (convert_template_argument): Use it.
5029         (convert_nontype_argument, RECORD_TYPE): Assert it's a ptr to
5030         member.
5031
5032 2001-01-14  Jeffrey Oldham  <oldham@codesourcery.com>
5033
5034         * tree.c: Add defaults.h
5035         (cp_valid_lang_attribute): Incorporate SUPPORTS_INIT_PRIORITY.
5036         * Make-lang.in (cp/tree.o): Add defaults.h.
5037
5038 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
5039
5040         * Make-lang.in (CXX_C_OBJS): Add c-format.o.
5041
5042 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
5043
5044         * g++.1: Change to be ".so man1/gcc.1".
5045
5046 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
5047
5048         * Make-lang.in (c++.info, c++.install-info): Build and install g++
5049         internals info.
5050         (c++.uninstall, c++.maintainer-clean): Remove g++ internals info.
5051         ($(srcdir)/cp/g++int.info): New target.
5052         * gxxint.texi: Add info directory entry.  Use @@ in email address.
5053         * .cvsignore: Update.
5054
5055 2001-01-12  Nathan Sidwell  <nathan@codesourcery.com>
5056
5057         * typeck.c (build_c_cast): Do template processing earlier.
5058         Always pedwarn on array casts.
5059
5060 2001-01-12  Nathan Sidwell  <nathan@codesourcery.com>
5061
5062         * friend.c (make_friend_class): Make sure a templated class is
5063         actually a template.
5064
5065 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
5066
5067         * decl2.c (get_guard): Set linkage from guarded decl.
5068
5069 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
5070
5071         * call.c (convert_default_arg): Check for unprocessed
5072         DEFAULT_ARG.
5073         * cp-tree.h (replace_defarg): Move to spew.c.
5074         (maybe_snarf_defarg, add_defarg_fn, do_pending_defargs): Move to
5075         spew.c, which is where they really are.
5076         (done_pending_defargs): Declare.
5077         (unprocessed_defarg_fn): Declare.
5078         * decl.c (replace_defarg): Move to spew.c
5079         * parse.y (structsp): Call done_pending_defargs.
5080         * spew.c (defarg_fns): Rearrange list structure.
5081         (defarg_fnsdone): New static variable.
5082         (defarg_depfns): New static variable.
5083         (init_spew): Adjust.
5084         (add_defarg_fn): Store the type in TREE_TYPE.
5085         (do_pending_defargs): Detect and deal with ordering constraints
5086         and circularity.
5087         (done_pending_defargs): New function.
5088         (unprocessed_defarg_fn): New function.
5089         (replace_defarg): Moved from decl.c. Robustify. Don't save
5090         if circularity detected.
5091
5092 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
5093
5094         * pt.c (unify): Check array has a domain, before checking
5095         whether it is variable sized.
5096
5097 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
5098
5099         * decl.c (grokparms): Unobfuscate and get correct diagnostic for
5100         parameters with pointers to arrays of unknown bound.
5101
5102 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
5103
5104         * parse.y (template_parm_header, template_spec_header): New
5105         reductions. Split out from ...
5106         (template_header): ... here. Use them.
5107         (template_template_parm): Use template_parm_header.
5108         * semantics.c (finish_template_template_parm): Add assert.
5109
5110 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
5111
5112         * mangle.c (write_builtin_type): Fix thinko.
5113
5114         * pt.c (copy_default_args_to_explicit_spec_1): New function.
5115         (copy_default_args_to_explicit_spec): Likewise.
5116         (check_explicit_specialization): Use it.
5117
5118         * class.c (finish_struct_1):  Remove last argument in call to
5119         make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
5120         * decl.c (builtin_function): Likewise.
5121         (build_cp_library_fn): Likewise.
5122         (check_initializer): Likewise.
5123         (make_rtl_for_nonlocal_decl): Likewise.
5124         (cp_finish_decl): Likewise.
5125         (start_function): Likewise.
5126         * decl2.c (finish_anon_union): Likewise.
5127         * friend.c (do_friend): Likewise.
5128         * init.c (build_java_class_ref): Likewise.
5129         * method.c (make_thunk): Likewise.
5130         * pt.c (tsubst_friend_function): Likewise.
5131         * semantics.c (expand_body): Likewise.
5132
5133 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
5134
5135         * cp-tree.h (DECL_CLONED_FUNCTION_P): Avoid wild reads by not
5136         looking at DECL_CLONED_FUNCTION for non-functions.
5137
5138 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
5139
5140         * error.c (dump_template_parameter): Use parm to determine how
5141         to print default value.
5142
5143 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
5144
5145         * class.c (duplicate_tag_error): Clear more flags.
5146
5147 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
5148
5149         * call.c (build_new_method_call): Use binfo_for_vbase.
5150
5151 2001-01-10  Joseph S. Myers  <jsm28@cam.ac.uk>
5152
5153         * cp-tree.h (flag_cond_mismatch): Don't declare.
5154         * decl2.c (flag_cond_mismatch): Don't define.
5155         (lang_f_options): Remove cond-mismatch.
5156         (unsupported_options): Add cond-mismatch.
5157
5158 2001-01-09  Nathan Sidwell  <nathan@codesourcery.com>
5159
5160         * class.c (handle_using_decl): Reject using of constructor name
5161         of sourcing class. Allow injecting of a method with same name as
5162         nested class. Fixup error messages.
5163
5164 2001-01-09  Joseph S. Myers  <jsm28@cam.ac.uk>
5165
5166         * decl2.c (lang_decode_option): Handle -Wformat=2.
5167
5168 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
5169
5170         * cp-tree.h (lang_decl_flags): Rename defined_in_class to
5171         initialized_in_class.
5172         (DECL_DEFINED_IN_CLASS_P): Rename to ...
5173         (DECL_INITIALIZED_IN_CLASS_P): ... here, to reflect true meaning.
5174         * decl.c (duplicate_decls): Preseve DECL_INITIALIZED_IN_CLASS_P.
5175         (cp_finish_decl): Adjust for DECL_INITIALIZED_IN_CLASS_P.
5176         * pt.c (check_default_tmpl_args): Adjust for
5177         DECL_INITIALIZED_IN_CLASS_P.
5178         (instantiate_class_template): Likewise.
5179         (instantiate_decl): Check DECL_INITIALIZED_IN_CLASS_P.
5180
5181         * class.c (finish_struct): Constify saved_filename.
5182
5183 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
5184
5185         * class.c (duplicate_tag_error): Adjust diagnostic.
5186         (finish_struct): Locally set location to start of struct.
5187         * decl.c (fixup_anonymous_aggr): Use cp_error_at.
5188
5189 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
5190
5191         * decl.c (struct binding_level): Adjust class_shadowed comments
5192         to reflect reality.
5193         (push_class_level_binding): Adjust comments to reflect reality.
5194         Set IDENTIFIER_CLASS_VALUE when replacing an existing binding.
5195         Don't set TREE_VALUE on the class_shadowed list.
5196
5197 2001-01-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5198
5199         * decl2.c (acceptable_java_type): Allow references too.
5200         * init.c (build_java_class_ref): When using the new ABI, search
5201         `class$' and have it mangled with `mangle_decl.'
5202         * mangle.c (write_java_integer_type_codes): New function.
5203         (write_builtin_type): Detect and mangle Java integer and real
5204         types.
5205
5206 2001-01-07  Mark Mitchell  <mark@codesourcery.com>
5207
5208         * decl2.c (grokfield): Don't accept `asm' specifiers for
5209         non-static data members.
5210
5211 2001-01-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5212
5213         * expr.c (cplus_expand_expr): Don't reset `target'.
5214
5215 2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>
5216
5217         * cp/decl2.c (cxx_post_options): Call cpp_post_options.
5218
5219 2001-01-05  Nathan Sidwell  <nathan@codesourcery.com>
5220
5221         * parse.y (template_datadef): Check for error_mark_node.
5222
5223 2001-01-05  Nathan Sidwell  <nathan@codesourcery.com>
5224
5225         * cp-tree.def (DEFAULT_ARG): Make `x' class.
5226
5227 2001-01-04  Joseph S. Myers  <jsm28@cam.ac.uk>
5228
5229         * decl.c (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Don't define.
5230         (record_builtin_type): Make non-static.
5231         (flag_short_double): Don't declare.
5232         (init_decl_processing): Remove the creation of many tree nodes now
5233         in c_common_nodes_and_builtins.
5234         (build_void_list_node): New function.
5235         * decl2.c (flag_short_double, flag_short_wchar): Don't define.
5236         * cp-tree.h (flag_short_wchar): Don't declare.
5237
5238 2001-01-04  Mark Mitchell  <mark@codesourcery.com>
5239
5240         * call.c (build_conv): Don't use build1 for USER_CONV.
5241         * pt.c (tsubst_copy): Or for PREINCREMENT_EXPR and similar nodes.
5242
5243 2001-01-03  Joseph S. Myers  <jsm28@cam.ac.uk>
5244
5245         * lex.c (lang_init): Call c_common_lang_init.
5246
5247 2001-01-03  Nathan Sidwell  <nathan@codesourcery.com>
5248
5249         * search.c (lookup_fnfields_here): Remove.
5250         (look_for_overrides_r): Use lookup_fnfields_1.
5251         Ignore functions from using declarations.
5252
5253 2001-01-03  Nathan Sidwell  <nathan@codesourcery.com>
5254
5255         Implement exceptions specifiers for implicit member functions.
5256         * cp-tree.h (merge_exceptions_specifiers): Declare new function.
5257         * method.c (synthesize_exception_spec): New function.
5258         (locate_dtor, locate_ctor, locate_copy): New functions.
5259         (implicitly_declare_fn): Generate the exception spec too.
5260         * search.c (check_final_overrider): Check artificial functions
5261         too.
5262         * typeck2.c (merge_exception_specifiers): New function.
5263
5264 2001-01-03  Jason Merrill  <jason@redhat.com>
5265
5266         * init.c (build_default_init): New fn.
5267         (perform_member_init): Split out from here.
5268         (build_new_1): Use it.  Simplify initialization logic.
5269         (build_vec_init): Take an array, rather than a pointer and maxindex.
5270         Speed up simple initializations.  Don't clean up if we're assigning.
5271         * cp-tree.h: Adjust.
5272         * decl2.c (do_static_initialization): Remove TREE_VEC case.
5273         * parse.y (new_initializer): Return void_zero_node for ().
5274         * typeck.c (build_modify_expr): Handle getting a CONSTRUCTOR.
5275         * typeck2.c (digest_init): Only complain about user-written
5276         CONSTRUCTORs.
5277
5278 2000-12-22  Mike Stump  <mrs@wrs.com>
5279
5280         * decl2.c: (max_tinst_depth): Increase to 50.
5281
5282 2001-01-02  Mark Mitchell  <mark@codesourcery.com>
5283
5284         * class.c (invalidate_class_lookup_cache): Zero the
5285         previous_class_values.
5286         * cp-tree.h (TMPL_PARMS_DEPTH): Use TREE_INT_CST_LOW, not
5287         TREE_INT_CST_HIGH.
5288         (CLASSTYPE_TEMPLATE_LEVEL): Likewise.
5289         * decl.c (free_bindings): New variable.
5290         (push_binding): Don't create a new binding if we have one on the
5291         free list.
5292         (pop_binding): Put old bindings on the free list.
5293         (init_decl_processing): Use size_int, not build_int_2.
5294         Register free_bindings as a GC root.
5295         (cp_make_fname_decl): Use size_int, not build_int_2.
5296         (push_inline_template_parms_recursive): Likewise.
5297         (end_template_parm_list): Likewise.
5298         (for_each_tempalte_parm): Do not use walk_tree_without_duplicates.
5299         (tsubst_template_parms): Use size_int, not build_int_2.
5300         (tsubst): Likewise.
5301         * rtti.c (get_vmi_pseudo_type_info): Likewise.
5302
5303 2001-01-02  Richard Henderson  <rth@redhat.com>
5304
5305         * parse.y (asm): Set ASM_INPUT_P.
5306
5307 2001-01-02  Jason Merrill  <jason@redhat.com>
5308
5309         * tree.c (cp_valid_lang_attribute): Don't set CLASSTYPE_COM_INTERFACE
5310         for v3 ABI.
5311
5312         * typeck.c (cp_truthvalue_conversion): New fn.
5313         * cvt.c (ocp_convert): Use it.
5314
5315         * cp-tree.h: Lose c-common.c decls.
5316
5317         * typeck.c (build_unary_op): Restore old &a.f diagnostic code.
5318         * cvt.c (convert_to_void): Use type_unknown_p.
5319
5320         * typeck.c (strip_all_pointer_quals): Also strip quals from
5321         pointer-to-member types.
5322
5323         * Make-lang.in (cp/TAGS): Use --no-globals.  Ignore parse.c, and treat
5324         parse.y as C.
5325
5326         * call.c (build_new_method_call): Do evaluate the object parameter
5327         when accessing a static member.
5328         * typeck.c (build_component_ref): Likewise.
5329
5330 2001-01-02  Andreas Jaeger  <aj@suse.de>
5331
5332         * decl.c (cp_missing_noreturn_ok_p): New.
5333         (init_decl_processing): Set lang_missing_noreturn_ok_p.
5334
5335 2000-12-29  Jakub Jelinek  <jakub@redhat.com>
5336
5337         * decl.c (init_decl_processing): Fix sign of wchar_type_node.
5338
5339 2000-12-29  Mark Mitchell  <mark@codesourcery.com>
5340
5341         * class.c (pushclass): Remove #if 0'd code.
5342         * cp-tree.h (overload_template_name): Remove.
5343         * decl.c (store_bindings): Simplify.
5344         (pop_from_top_level): Likewise.
5345         * pt.c (overload_template_name): Remove.
5346         (instantiate_decl): Don't call push_to_top_level if it's not
5347         needed.
5348
5349 2000-12-28  Mark Mitchell  <mark@codesourcery.com>
5350
5351         * pt.c (register_local_specialization): Don't return a value.
5352         (lookup_template_class): Use move-to-front heuristic when looking
5353         up template instantiations.
5354         (instantiate_decl): Only push_to_top_level when we're actually
5355         going to instantiate the template.
5356
5357 2000-12-29  Hans-Peter Nilsson  <hp@bitrange.com>
5358
5359         * search.c (binfo_for_vtable): Return least derived class, not
5360         most.  Handle secondary vtables.
5361
5362 2000-12-22  Jason Merrill  <jason@redhat.com>
5363
5364         * pt.c (more_specialized): Don't optimize len==0.
5365         (fn_type_unification): If we're adding the return type, increase len.
5366
5367         * typeck.c (build_binary_op): Fix pmf comparison logic.
5368
5369         * call.c (joust): Use DECL_NONSTATIC_MEMBER_FUNCTION_P, not
5370         DECL_STATIC_FUNCTION_P.
5371
5372         * semantics.c (genrtl_finish_function): Don't try to jump to
5373         return_label unless it exists.
5374
5375         In partial ordering for a call, ignore parms for which we don't have
5376         a real argument.
5377         * call.c (joust): Pass len to more_specialized.
5378         (add_template_candidate_real): Strip 'this', pass len.
5379         * pt.c (more_specialized): Pass len down.  Lose explicit_args parm.
5380         (get_bindings_order): New fn.  Pass len down.
5381         (get_bindings_real): Strip 'this', pass len.
5382         (fn_type_unification): Likewise.
5383         (type_unification_real): Succeed after checking 'len' args.
5384         (most_specialized_instantiation): Lose explicit_args parm.
5385         * class.c (resolve_address_of_overloaded_function): Strip 'this',
5386         pass len.
5387
5388 2000-12-21  Jason Merrill  <jason@redhat.com>
5389
5390         * pt.c (tsubst_decl): A FUNCTION_DECL has DECL_RESULT, not
5391         DECL_TEMPLATE_RESULT.
5392
5393         * search.c (lookup_field_r): Call lookup_fnfields_1, not
5394         lookup_fnfields_here.
5395
5396         * parse.y (typename_sub2): Return the TYPE_DECL, not the type.
5397
5398         * call.c (build_object_call): Also allow conversions that return
5399         reference to pointer to function.
5400         (add_conv_candidate): Handle totype being ref to ptr to fn.
5401         (build_field_call): Also allow members of type reference to function.
5402         Lose support for calling pointer to METHOD_TYPE fields.
5403
5404         * error.c (dump_expr): Handle *_CAST_EXPR.
5405
5406         * typeck2.c (build_scoped_ref): Always convert to the naming class.
5407
5408         * tree.c (break_out_cleanups): Lose.
5409         * cp-tree.h: Remove prototype.
5410         * typeck.c (build_component_ref): Don't break_out_cleanups.
5411         (build_compound_expr): Likewise.
5412         * semantics.c (finish_expr_stmt): Likewise.
5413
5414 2000-12-20  Richard Henderson  <rth@redhat.com>
5415
5416         * cp-tree.h: Update declarations.
5417         * decl.c (finish_case_label): Return the new stmt node.
5418         * semantics.c (finish_goto_stmt): Likewise.
5419         (finish_expr_stmt, finish_return_stmt): Likewise.
5420         (finish_break_stmt, finish_continue_stmt): Likewise.
5421         (finish_asm_stmt): Likewise.
5422         * parse.y (already_scoped_stmt): Set STMT_LINENO.
5423         (compstmt, implicitly_scoped_stmt, stmt): Likewise.
5424         (simple_if, simple_stmt): Return the new stmt node.
5425         (save_lineno): New.
5426
5427 2000-12-18  Joseph S. Myers  <jsm28@cam.ac.uk>
5428
5429         * cp-tree.h: Don't declare warn_long_long.
5430
5431 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5432
5433         * tree.c (no_linkage_helper): Use CLASS_TYPE_P instead of
5434         IS_AGGR_TYPE.
5435
5436 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5437
5438         * pt.c (unify): Handle when both ARG and PARM are
5439         BOUND_TEMPLATE_TEMPLATE_PARM.
5440
5441 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5442
5443         * pt.c (reduce_template_parm_level): Set DECL_ARTIFICIAL and
5444         DECL_TEMPLATE_PARM_P.
5445
5446 2000-12-15  Jason Merrill  <jason@redhat.com>
5447
5448         * init.c (build_new_1): Reorganize.  Now with 100% fewer SAVE_EXPRs!
5449
5450         * init.c (build_new_1): Don't strip quals from type.
5451
5452         * decl.c (pushdecl): Don't check for linkage on a non-decl.
5453
5454         * call.c (build_op_delete_call): See through ARRAY_TYPEs.
5455
5456         * call.c (build_new_function_call): Lose space before paren in
5457         error message.
5458         (build_new_method_call): Likewise.
5459
5460         * typeck2.c (build_m_component_ref): Propagate quals from datum.
5461
5462 2000-12-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5463
5464         * pt.c (check_explicit_specialization): Propagate default
5465         function arguments to explicit specializations.
5466
5467 2000-12-13  DJ Delorie  <dj@redhat.com>
5468
5469         * typeck.c (build_binary_op): Do signed/unsigned warnings for >?
5470         and <? operators.
5471
5472 2000-12-08  Jason Merrill  <jason@redhat.com>
5473
5474         * error.c (dump_function_name): Don't let the user see __comp_ctor.
5475
5476         Clean up copy-initialization in overloading code.
5477         * call.c (build_user_type_conversion_1): Die if we are asked to
5478         convert to the same or a base type.
5479         (implicit_conversion): Avoid doing so.  Lose reference binding code.
5480         (convert_like_real): Treat BASE_CONV and RVALUE_CONV as implicit
5481         direct-initialization.  Also do direct-init part of copy-init.
5482         (build_user_type_conversion): Don't provide context to convert_like.
5483         * cvt.c (ocp_convert): build_user_type_conversion will now provide
5484         the constructor call for copy-init.
5485
5486         * pt.c (tsubst_decl): Call clone_function_decl here if this is an
5487         instantiation of a member template.
5488         (do_decl_instantiation): Not here.
5489
5490 2000-12-07  Nathan Sidwell  <nathan@codesourcery.com>
5491
5492         * class.c (check_field_decls): Don't special case anonymous
5493         fields in error messages.
5494         (note_name_declared_in_class): Use %D on diagnostic.
5495
5496         * tree.c (pod_type_p): Use strip_array_types.
5497         (cp_valid_lang_attribute): Likewise.
5498         * typeck.c (cp_type_quals): Strip arrays separately, to avoid
5499         multiple evaluations.
5500         (cp_has_mutable_p): Use strip_array_types.
5501
5502 2000-12-07  Nathan Sidwell  <nathan@codesourcery.com>
5503
5504         * cp-tree.h (sufficient_parms_p): Declare new function.
5505         * call.c (sufficient_parms_p): New function, broken out of ...
5506         (add_function_candidate): ... here. Use it.
5507         (add_conv_candidate): Use it.
5508         * decl.c (grok_ctor_properties): Use it.
5509
5510 2000-12-07  Jakub Jelinek  <jakub@redhat.com>
5511
5512         * optimize.c (copy_body_r): Set STMT_IS_FULL_EXPR_P on EXPR_STMT.
5513
5514 2000-12-07  Joseph S. Myers  <jsm28@cam.ac.uk>
5515
5516         * decl2.c (lang_decode_option): Handle -Wformat-security.
5517
5518 2000-12-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5519
5520         * pt.c (verify_class_unification): New function.
5521         (get_class_bindings): Use it.
5522         (try_class_unification): Tidy.
5523         (unify): Handle when argument of a template-id is not
5524         template parameter dependent.
5525         (template_args_equal): Handle when TREE_CODE's do not match.
5526
5527 2000-12-06  Alexandre Oliva  <aoliva@redhat.com>
5528
5529         * lang-specs.h (c++): When invoking the stand-alone preprocessor
5530         for -save-temps, pass all relevant -Defines to it, and then don't
5531         pass them to cc1plus.
5532
5533 2000-12-05  Will Cohen  <wcohen@redhat.com>
5534
5535         * decl.c (finish_case_label): Cleared
5536         more_cleanups_ok in surrounding function scopes.
5537         (define_label): Likewise.
5538
5539 2000-12-05  Nathan Sidwell  <nathan@codesourcery.com>
5540
5541         * cp-tree.h (IDENTIFIER_VIRTUAL_P): Document.
5542         (get_matching_virtual): Remove.
5543         (look_for_overrides): Declare new function.
5544         * decl.c (grokfndecl): Don't set IDENTIFIER_VIRTUAL_P or
5545         DECL_VINDEX here.
5546         * class.c (check_for_override): Move base class iteration code
5547         to look_for_overrides.
5548         * search.c (next_baselink): Remove.
5549         (get_virtuals_named_this): Remove.
5550         (get_virtual_destructor): Remove.
5551         (tree_has_any_destructors_p): Remove.
5552         (struct gvnt_info): Remove.
5553         (check_final_overrider): Remove `virtual' from error messages.
5554         (get_matching_virtuals): Remove. Move functionality to ...
5555         (look_for_overrides): ... here, and ...
5556         (look_for_overrides_r): ... here. Set DECL_VIRTUAL_P, if found
5557         to be overriding.
5558
5559 2000-12-05  Nathan Sidwell  <nathan@codesourcery.com>
5560
5561         * typeck.c (get_delta_difference): If via a virtual base,
5562         return zero.
5563         * cvt.c (cp_convert_to_pointer): If via a virtual base, do no
5564         adjustment.
5565
5566 2000-12-04  Richard Henderson  <rth@redhat.com>
5567
5568         * error.c (dump_tree): Use output_add_string not OB_PUTS.
5569
5570 2000-12-04  Jason Merrill  <jason@redhat.com>
5571
5572         * mangle.c (write_type): Mangle VECTOR_TYPE with "U8__vector".
5573         (write_builtin_type): Pass intSI_type_node and the like through
5574         type_for_mode.
5575         * method.c (process_overload_item): Mangle VECTOR_TYPEs with 'o'.
5576         Pass intSI_type_node and the like through type_for_mode.
5577         * decl2.c (arg_assoc_type): Handle VECTOR_TYPE like COMPLEX_TYPE.
5578         * pt.c (tsubst, unify): Likewise.
5579         * tree.c (walk_tree): Likewise.
5580         * error.c (dump_type): Likewise.
5581         (dump_type_prefix, dump_type_suffix): Don't bother with VECTOR_TYPE.
5582
5583         * Make-lang.in: Tweak top comment for emacs.
5584         (cp/TAGS): Restore.
5585
5586         * except.c (expand_throw): Use push_throw_library_fn for _Jv_Throw.
5587
5588         * class.c (clone_function_decl): Robustify.
5589
5590 2000-12-04  Michael Matz  <matzmich@cs.tu-berlin.de>
5591
5592         * decl.c (store_bindings): Only search in the non modified
5593         old_bindings for duplicates.
5594
5595 2000-12-04  Nathan Sidwell  <nathan@codesourcery.com>
5596
5597         * error.c (dump_function_decl): Use DECL_VIRTUAL_P, not
5598         TYPE_POLYMORPHIC_P.
5599
5600         * typeck.c (build_static_cast): Remove unused variable.
5601
5602 2000-12-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5603
5604         * pt.c: Fix typo in comment.
5605
5606 2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>
5607
5608         * decl2.c (warn_format): Remove definition.
5609         (lang_decode_option): Handle -Wformat-nonliteral,
5610         -Wno-format-extra-args and -Wno-format-y2k.  Use set_Wformat.
5611
5612 2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>
5613
5614         * decl.c (WINT_TYPE, INTMAX_TYPE, UINTMAX_TYPE): Don't define.
5615         (init_decl_processing): Don't create string_type_node,
5616         const_string_type_node, wint_type_node, intmax_type_node,
5617         uintmax_type_node, default_function_type, ptrdiff_type_node and
5618         unsigned_ptrdiff_type_node.  Adjust position of call to
5619         c_common_nodes_and_builtins.
5620         (identifier_global_value): New function.
5621
5622 2000-12-01  Nathan Sidwell  <nathan@codesourcery.com>
5623
5624         * call.c (standard_conversion): Reject pointer to member
5625         conversions from ambiguous, inaccessible or virtual bases.
5626         * typeck.c (build_static_cast): Don't check pointers to members
5627         specially.
5628
5629 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
5630
5631         * method.c (do_build_copy_constructor): Preserve cv
5632         qualifications when accessing source object members.
5633         (do_build_assign_ref): Likewise. Remove separate diagnostics for
5634         unnamed fields.
5635
5636 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
5637
5638         * method.c (do_build_assign_ref): Construct appropriately
5639         CV-qualified base reference. Don't allow const casts in base
5640         conversion.
5641
5642 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
5643
5644         * call.c (build_over_call): Use VOID_TYPE_P. Don't die on
5645         incomplete return type.
5646
5647 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
5648
5649         * parse.y (base_class.1): Produce a _TYPE not a _DECL.
5650         * semantics.c (finish_base_specifier): Accept a _TYPE not a
5651         _DECL.
5652
5653 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
5654
5655         * spew.c (yyerror): Cope if yylval.ttype is NULL.
5656
5657 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
5658
5659         * decl.c (grokdeclarator): Diagnose undefined template contexts.
5660
5661 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
5662
5663         * decl.c (grokdeclarator): Do type access control on friend
5664         class.
5665
5666 2000-11-27  Nathan Sidwell  <nathan@codesourcery.com>
5667
5668         * decl.c (grokfndecl): Undo COMPONENT_REF damage caused by
5669         bison parser ickiness.
5670         * pt.c (tsubst_friend_function): Enter namespace scope when
5671         tsubsting the function name.
5672         * cp-tree.h (DECL_TI_TEMPLATE): Update comment to reflect reality.
5673
5674 2000-11-27  Nathan Sidwell  <nathan@codesourcery.com>
5675
5676         * cp-tree.h (binfo_from_vbase): Return the virtual base's binfo.
5677         * cvt.c (cp_convert_to_pointer): Add force parameter.
5678         Allow conversions via virtual base if forced.
5679         (convert_to_pointer_force): Adjust call to cp_convert_to_pointer.
5680         (ocp_convert): Likewise.
5681         * search.c (binfo_from_vbase): Return the virtual base's binfo.
5682         * typeck.c (get_delta_difference): Adjust handling of virtual
5683         bases.
5684
5685 2000-11-26  Mark Mitchell  <mark@codesourcery.com>
5686
5687         * tree.c (struct list_hash): Remove.
5688         (list_hash_table): Make it be an htab.
5689         (struct list_proxy): New type.
5690         (list_hash_eq): New function.
5691         (list_hash_pieces): Renamed from ...
5692         (list_hash): ... this.
5693         (list_hash_lookup): Remove.
5694         (list_hash_add): Remove.
5695         (hash_tree_cons): Use the generic hashtable.
5696         (mark_list_hash): Remove.
5697         (init_tree): Create the hashtable.
5698
5699 2000-11-25  Joseph S. Myers  <jsm28@cam.ac.uk>
5700
5701         * method.c (build_mangled_C9x_name): Rename to
5702         build_mangled_C99_name.  Change C9X references in comments to
5703         refer to C99.
5704
5705 2000-11-24  Nathan Sidwell  <nathan@codesourcery.com>
5706
5707         * parse.y (unary_expr): Move VA_ARG from here ...
5708         (primary): ... to here.
5709
5710 2000-11-24  Nathan Sidwell  <nathan@codesourcery.com>
5711
5712         * semantics.c (finish_id_expr): If type is error_mark, return
5713         error_mark.
5714
5715 2000-11-23  Nathan Sidwell  <nathan@codesourcery.com>
5716
5717         * pt.c (lookup_template_class): Simplify loop exit constructs.
5718         Cope when there is no partial instantiation of a template
5719         template member.
5720
5721 Thu Nov 23 02:16:47 2000  J"orn Rennecke <amylaar@redhat.com>
5722
5723         * Make-lang.in (g++spec.o, cxxmain.o): Depend on $(CONFIG_H).
5724
5725 2000-11-22  Mark Mitchell  <mark@codesourcery.com>
5726
5727         * mangle.c (mangle_conv_op_name_for_type): Don't use `__op'
5728         prefix.
5729
5730         * pt.c (do_decl_instantiate): Explicitly clone constructors and
5731         destructors that haven't already been cloned.
5732
5733 2000-11-20  Richard Henderson  <rth@redhat.com>
5734
5735         * parse.y (yyparse_1): Rename the parser entry point.
5736
5737 2000-11-20  Alex Samuel  <samuel@codesourcery.com>
5738
5739         * mangle.c (write_name): Use <unscoped-name> for names directly in
5740         function scope.
5741         (write_unscoped_name): Accept names directly in function scope.
5742
5743 2000-11-20  Nathan Sidwell  <nathan@codesourcery.com>
5744
5745         * lex.c (rid_to_yy, RID_EXPORT): Make unique keyword.
5746         * parse.y (extdef): Add EXPORT reduction.
5747         * spew.c (yylex): Don't skip export here.
5748
5749 2000-11-19  Mark Mitchell  <mark@codesourcery.com>
5750
5751         * decl.c (init_decl_processing): Correct name of pure virtual
5752         function under the new ABI.
5753         * rtti.c (throw_bad_cast): Likewise, for bad cast function.
5754         (throw_bad_typeid): Likewise for bad typeid function.
5755
5756 2000-11-18  Mark Mitchell  <mark@codesourcery.com>
5757
5758         * decl.c (grokparms): Don't even function types of `void' type,
5759         either.
5760         * mangle.c (write_type): Don't crash when confronted with the
5761         error_mark_node.
5762
5763         * decl.c (grokparms): Don't create parameters of `void' type.
5764
5765 2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
5766
5767         * lex.c (mark_impl_file_chain): Delete.
5768         (init_parse): Remove call to ggc_add_string_root.  No need to
5769         ggc_strdup a string constant.  Do not add impl_file_chain to GC
5770         roots.
5771         (handle_pragma_implementation): No need to ggc_strdup main_filename.
5772
5773 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
5774
5775         * pt.c (tsubst_expr, DECL_STMT): Instantiate decl's type.
5776
5777 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
5778
5779         * cp-tree.h (PARMLIST_ELLIPSIS_P): New macro.
5780         * decl.c (grokdeclarator): Don't reject void parms here.
5781         (require_complete_types_for_parms): Simplify, use
5782         complete_type_or_else.
5783         (grokparms): Remove bitrot. Remove funcdef parm.
5784         Deal with ellipsis parm lists here.
5785         * semantics.c (finish_parmlist): Don't append void_list_node
5786         here. Set PARMLIST_ELLIPSIS_P.
5787
5788 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
5789
5790         * typeck2.c (incomplete_type_error): Reorganise to avoid
5791         excessive diagnostics.
5792
5793 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
5794
5795         * lex.c (struct impl_files, internal_filename): Constify a char *.
5796
5797 2000-11-16  Mark Mitchell  <mark@codesourcery.com>
5798
5799         * mangle.c (write_special_name_constructor): Don't generate
5800         assembler junk when confronted with an old-style constructor.
5801         (write_special_name_destructor): Likewise.
5802         (mangle_decl_string): Do it here instead.
5803
5804 2000-11-16  Nathan Sidwell  <nathan@codesourcery.com>
5805
5806         * call.c (op_error): Make error messages clearer.
5807
5808 2000-11-15  Mark Mitchell  <mark@codesourcery.com>
5809
5810         * decl.c (wrapup_globals_for_namespace): Don't mark things
5811         TREE_ASM_WRITTEN when they're not.
5812
5813 2000-11-15  Jason Merrill  <jason@redhat.com>
5814
5815         * typeck2.c (friendly_abort): Uncount the error before handing
5816         off to fancy_abort.
5817
5818 2000-11-15  Nathan Sidwell  <nathan@codesourcery.com>
5819
5820         * typeck.c (lookup_anon_field): Cope with qv qualifiers.
5821
5822 2000-11-14  Mark Mitchell  <mark@codesourcery.com>
5823
5824         * class.c (build_vtbl_initializer): Fix typo in comment.
5825         * typeck.c (expr_sizeof): Don't crash on errors.
5826
5827 2000-11-14  Jim Wilson  <wilson@redhat.com>
5828
5829         * lang-specs.h: Add %2 after %(cc1_options).
5830
5831 2000-11-14  Richard Henderson  <rth@redhat.com>
5832
5833         * typeck.c (c_sizeof): Be strict about casting result value
5834         back to c_size_type_node.
5835         (expr_sizeof, c_sizeof_nowarn, c_alignof): Likewise.
5836
5837 2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>
5838
5839         * typeck.c (build_unary_op): Use boolean_increment from
5840         c-common.c, moving the relevant code there.
5841
5842 2000-11-11  Jason Merrill  <jason@redhat.com>
5843
5844         * typeck.c (mark_addressable): Don't call put_var_into_stack.
5845
5846         * decl.c (maybe_commonize_var): Set DECL_UNINLINABLE for statics
5847         in inlines.
5848
5849 2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5850
5851         * decl.c (grokdeclarator, save_function_data): Use memcpy, not bcopy.
5852         * lex.c (copy_lang_decl): Likewise.
5853
5854 2000-11-09  Mark Mitchell  <mark@codesourcery.com>
5855
5856         * dump.c (cp_dump_tree): Don't dump function bodies here.
5857
5858         * Make-lang.in (CXX_C_OBJS): Add c-dump.o.
5859         (dump.o): Update dependency list.
5860         * cp-tree.h (DECL_MAYBE_TEMPLATE): Remove.
5861         (flag_dump_translation_unit): Likewise.
5862         (CP_TYPE_QUALS): Adjust definition.
5863         (DECL_C_BIT_FIELD): Remove.
5864         (SET_DECL_C_BIT_FIELD): Likewise.
5865         (CLEAR_DECL_C_BIT_FIELD): Likewise.
5866         (add_maybe_template): Likewise.
5867         (strip_array_types): Likewise.
5868         (dump_node_to_file): Likewise.
5869         (cp_dump_tree): New function.
5870         * decl.c (init_decl_processing): Set lang_dump_tree.
5871         * decl2.c (flag_dump_translation_unit): Remove.
5872         * dump.c: Move most of it to ../c-dump.c.
5873         (cp_dump_tree): New function.
5874         * pt.c (add_maybe_template): Remove.
5875         * typeck.c (strip_array_types): Likewise.
5876
5877 2000-11-07  Eric Christopher  <echristo@redhat.com>
5878
5879         * decl.c (init_decl_processing): Change definition of
5880         __wchar_t to wchar_t.  Remove artificial declaration of
5881         wchar_t.
5882         * lex.c: Change instances of __wchar_t to wchar_t.
5883
5884 2000-11-09  Nathan Sidwell  <nathan@codesourcery.com>
5885
5886         * lex.c (do_identifier): Don't lookup_name for operators.
5887         * parse.y (operator): Save looking_for_typename.
5888         (unoperator): Restore it.
5889         * spew.c (frob_opname): Use nth_token for lookahead.
5890
5891 2000-11-08  Nathan Sidwell  <nathan@codesourcery.com>
5892
5893         * decl.c (grok_op_properties): Always use coerce_new_type and
5894         coerce_delete_type.
5895         * decl2.c (coerce_new_type): Use c_size_type_node. Preserve
5896         exception specification. Tidy up.
5897         (coerce_delete_type): Preserve exception specification. Tidy up.
5898
5899 2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>
5900
5901         * class.c (duplicate_tag_error, build_vtbl_initializer), decl.c
5902         (push_binding_level), error.c (cp_tree_printer), pt.c
5903         (process_partial_specialization, tsubst_template_arg_vector),
5904         search.c (lookup_member): Use memset () instead of bzero ().
5905
5906 2000-11-07  Nathan Sidwell  <nathan@codesourcery.com>
5907
5908         * decl.c (build_ptrmemfunc_type): Allow error_mark_node.
5909
5910 2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>
5911
5912         * Make-lang.in (c++.distdir): Remove.
5913
5914 2000-11-04  Mark Mitchell  <mark@codesourcery.com>
5915
5916         * decl2.c (do_nonmember_using_decl): Allow `extern "C"'
5917         declarations from different namespaces to be combined.
5918
5919 2000-11-03  Zack Weinberg  <zack@wolery.stanford.edu>
5920
5921         * decl.c: Include tm_p.h.
5922
5923 2000-11-03  Joseph S. Myers  <jsm28@cam.ac.uk>
5924
5925         * tree.c (cp_tree_equal): Use memcmp () instead of bcmp ().
5926
5927 2000-11-02  Joseph S. Myers  <jsm28@cam.ac.uk>
5928
5929         * dump.c (dequeue_and_dump), lex.c (interface_strcmp), method.c
5930         (build_overload_value), repo.c (open_repo_file), xref.c
5931         (open_xref_file): Use strchr () and strrchr () instead of index ()
5932         and rindex ().
5933
5934 2000-11-01  Bernd Schmidt  <bernds@redhat.co.uk>
5935
5936         * call.c (build_over_call): Call fold on the CALL_EXPR.
5937
5938 2000-11-01  Gabriel Dos Reis  <gdr@codesourcery.com>
5939
5940         * error.c (dump_template_decl): Separate template hearders with
5941         space not comma.
5942
5943 2000-10-31  Gabriel Dos Reis  <gdr@codesourcery.com>
5944
5945         * error.c: Move TFF_ macros into cp-tree.h.  Throughout, replace
5946         TS_* flags with corresponding TFF_*.  Adjust prototypes of
5947         functions (which used to take a tree_string_flags) to take an int.
5948
5949         * cp-tree.h (enum tree_string_flags): Remove
5950         (TFF_PLAIN_IDENTIFIER, TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE,
5951         TFF_CHASE_NAMESPACE_ALIAS, TFF_CHASE_TYPEDEF, TFF_DECL_SPECIFIERS,
5952         TFF_CLASS_KEY_OR_ENUM, TFF_RETURN_TYPE,
5953         TFF_FUNCTION_DEFAULT_ARGUMENTS, TFF_EXCEPTION_SPECIFICATION,
5954         TFF_TEMPLATE_HEADER, TFF_TEMPLATE_DEFAULT_ARGUMENTS,
5955         TFF_TEMPLATE_NAME, TFF_EXPR_IN_PARENS, TFF_SCOPE): New macros.
5956         (type_as_string, decl_as_string, expr_as_string,
5957         context_as_string): Adjust prototype.
5958
5959         * class.c (dump_class_hierarchy_r): Use TFF_PLAIN_IDENTIFIER
5960         instead of TS_PLAIN.
5961
5962         * pt.c (mangle_class_name_for_template): Use TFF_CHASE_TYPEDEF
5963         instead of TF_CHASE_TYPEDEFS. Use TFF_PLAIN_IDENTIFIER instead of
5964         plain `0'.
5965
5966 2000-10-30  Mark Mitchell  <mark@codesourcery.com>
5967
5968         * cp-tree.h (DECL_EXTERNAL_LINKAGE_P): New macro.
5969         (linkage_kind): New enumeration.
5970         (decl_linkage): New function.
5971         * decl2.c (comdat_linkage): Extend comment.
5972         * error.c (dump_function_decl): Print the arguments used to
5973         instantiate a template, even when not printing the type of the
5974         function.
5975         * pt.c (convert_nontype_argument): Use DECL_EXTERNAL_LINKAGE_P,
5976         not TREE_PUBLIC, to test for external linkage.
5977         * tree.c (decl_linkage): New function.
5978
5979 2000-10-28  Mark Mitchell  <mark@codesourcery.com>
5980
5981         * pt.c (instantiate_decl): Always instantiate static data members
5982         initialized in-class.
5983
5984 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
5985
5986         * Make-lang.in: Move all build rules here from Makefile.in,
5987         adapt to new context.  Wrap all rules that change the current
5988         directory in parentheses.  Expunge all references to $(P).
5989         When one command depends on another and they're run all at
5990         once, use && to separate them, not ;.  Add OUTPUT_OPTION to
5991         all object-file generation rules.  Delete obsolete variables.
5992
5993         * Makefile.in: Delete.
5994         * config-lang.in: Delete outputs= line.
5995
5996 2000-10-26  Gabriel Dos Reis  <gdr@codesourcery.com>
5997
5998         * error.c (dump_function_decl): Print no space between
5999         `ptr-operator' the `type-specifier' of the return type.
6000         (dump_type_prefix): Make sure we put space at the appropriate
6001         place.
6002
6003 2000-10-23  Jason Merrill  <jason@redhat.com>
6004
6005         * call.c (equal_functions): Also call decls_match for extern "C" fns.
6006
6007 2000-10-22  Jason Merrill  <jason@redhat.com>
6008
6009         * call.c (build_conditional_expr): Use ocp_convert to force
6010         rvalue conversion.
6011
6012 2000-10-22  Mark Mitchell  <mark@codesourcery.com>
6013
6014         * call.c (standard_conversion): Use RVALUE_CONVs for all
6015         expressions that satisfy lvalue_p, not just those that satisfy
6016         real_lvalue_p.
6017
6018         * optimize.c (copy_body_r): Don't treat CALL_EXPRs specially.
6019
6020         * typeck.c (c_sizeof): Return an expression of `size_t' type,
6021         not one with TYPE_IS_SIZETYPE set.
6022         (dubious_conversion_warnings): Remove special-case code.
6023
6024 2000-10-21  Geoffrey Keating  <geoffk@cygnus.com>
6025
6026         * decl2.c (arg_assoc_type): Handle VECTOR_TYPE.
6027         * error.c (dump_type): Handle VECTOR_TYPE like POINTER_TYPE.
6028         (dump_type_prefix): Print vector-of-int as 'int vector'.
6029         (dump_type_suffix): Handle VECTOR_TYPE like POINTER_TYPE.
6030         * tree.c (walk_tree): Handle VECTOR_TYPE.
6031
6032         * decl.c (init_decl_processing): Call MD_INIT_BUILTINS.
6033
6034 2000-10-21  Jason Merrill  <jason@redhat.com>
6035
6036         * parse.y (operator): Set got_object from got_scope.
6037         Set looking_for_typename.
6038         * decl.c (lookup_name_real): Clear val after setting from_obj.
6039         Reorganize diagnostic.
6040
6041 2000-10-20  Jason Merrill  <jason@redhat.com>
6042
6043         * tree.c (walk_tree): Don't walk into default args.
6044
6045         * error.c (dump_expr): Use host_integerp.
6046
6047 2000-10-20  David Edelsohn  <edelsohn@gnu.org>
6048
6049         * typeck2.c (abstract_virtuals_error): Use "because" instead of
6050         "since" in error message.
6051
6052 Fri Oct 20 13:54:59 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6053
6054         * typeck.c (dubious_conversion_warning): Suppress if TYPE_IS_SIZETYPE.
6055
6056 2000-10-20  Jeffrey Oldham  <oldham@codesourcery.com>
6057
6058         * decl.c (revert_static_member_fn): Fixed typo.
6059
6060 2000-10-19  Mark Mitchell  <mark@codesourcery.com>
6061
6062         * class.c (subobject_offset_fn): New type.
6063         (dfs_record_base_offsets): Remove.
6064         (record_base_offsets): Likewise.
6065         (dfs_search_base_offsets): Likewise.
6066         (record_subobject_offset): New function.
6067         (check_subobject_offset): Likewise.
6068         (walk_subobject_offsets): Likewise.
6069         (record_subobject_offsets): Likewise.
6070         (layout_conflict_p): Reimplement.
6071         (layout_nonempty_base_or_field): Correct handling of type
6072         conflicts during layout.
6073         (layout_empty_base): Likewise.
6074         (build_base_field): Adjust to handle new representation of empty
6075         base offset table.
6076         (build_base_fields): Likewise.
6077         (layout_virtual_bases): Likewise.
6078         (splay_tree_compare_integer_csts): New function.
6079         (layout_class_type): Use a splay_tree, rather than a varray, to
6080         represent the offsets of empty bases.
6081
6082         * cp-tree.h (DECL_ANTICIPATED): Don't require a FUNCTION_DECL.
6083         * decl.c (select_decl): Don't return declarations that are
6084         DECL_ANTICIPATED.
6085
6086 2000-10-18  Mark Mitchell  <mark@codesourcery.com>
6087
6088         * cp-tree.h (cp_tree_index): Add CPTI_FAKE_STD.
6089         (fake_std_node): New macro.
6090         * decl.c (in_std): Rename to ...
6091         (in_fake_std): ... this.
6092         (flag_no_builtin): Remove.
6093         (flag_no_nonansi_builtin): Likewise.
6094         (walk_namespaces_r): Use fake_std_node.
6095         (push_namespace): Use std_identifier.
6096         (pop_namespace): Use in_fake_std.
6097         (lookup_name_real): Use fake_std_node.
6098         (init_decl_processing): When -fhonor-std, create the `std'
6099         namespace.  Don't create a dummy fake_std_node in that case.
6100         Adjust call to c_common_nodes_and_builtins.  Use std_identifier.
6101         (builtin_function): Put builtins whose names don't begin
6102         with `_' in the std namespace.
6103         * decl2.c (flag_no_builtin): Remove.
6104         (flag_no_nonansi_builtin): Likewise.
6105         (set_decl_namespace): Use fake_std_node.
6106         (validate_nonmember_using_decl): Likewise.
6107         (do_using_directive): Likewise.
6108         (handle_class_head): Likewise.
6109         * dump.c (dequeue_and_dump): Likewise.
6110         * except.c (init_exception_processing): Use std_identifier.
6111         * init.c (build_member_call): Use fake_std_node.
6112         * rtti.c (init_rtti_processing): Use std_identifier.
6113
6114 2000-10-17  Mark Mitchell  <mark@codesourcery.com>
6115
6116         * cp-tree.h (back_end_hook): Remove declaration.
6117         * decl2.c (back_end_hook): Remove definition.
6118
6119         * dump.c (dequeue_and_dump): Dump TREE_USED.
6120
6121 Tue Oct 17 20:19:06 2000  Brad Lucier <lucier@math.purdue.edu>
6122
6123         * spew.c (snarf_defarg): Cast 2nd arg to obstack_blank to (int).
6124
6125 2000-10-17  Joseph S. Myers  <jsm28@cam.ac.uk>
6126
6127         * decl.c (WINT_TYPE): Define.
6128         (init_decl_processing): Create types unsigned_ptrdiff_type_node,
6129         c_size_type_node, signed_size_type_node and wint_type_node.
6130
6131 2000-10-17  Joseph S. Myers  <jsm28@cam.ac.uk>
6132
6133         * decl2.c (warn_missing_format_attribute): New variable.
6134         (lang_decode_option): Decode -Wmissing-format-attribute.
6135
6136 2000-10-16  Mark Mitchell  <mark@codesourcery.com>
6137
6138         * typeck.c (qualify_type): Remove.
6139         (composite_pointer_type): Fix handling of conversions to `cv void*'.
6140
6141 2000-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6142
6143         * Makefile.in (parse.c, parse.h): Fix think-o in last patch.
6144
6145 2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6146
6147         * Makefile.in (parse.c, parse.h): Create atomically.
6148
6149 2000-10-12  Mark Mitchell  <mark@codesourcery.com>
6150
6151         * class.c (current_obstack): Remove.
6152         * decl.c (ggc_p): Remove.
6153         (start_decl): Don't use decl_tree_cons.
6154         (grokdeclarator): Don't use build_decl_list.
6155         (start_function): Don't use decl_tree_cons.
6156         (finish_function): Don't mess with obstacks.
6157         * decl2.c (grok_x_components): Don't use build_decl_list.
6158         * lex.c (make_call_declarator): Don't call decl_tree_cons.
6159         (implicitly_declare_fn): Don't call build_decl_list.
6160         * parse.y (frob_specs): Don't call build_decl_list or
6161         decl_tree_cons.
6162         (expr_or_declarator_intern): Don't call decl_tree_cons.
6163         (primary): Don't call build_decl_list.
6164         (fcast_or_absdcl): Likewise.
6165         (typed_declspecs): Don't call decl_tree_cons.
6166         (reserved_declspecs): Don't call build_decl_list.
6167         (declmods): Likewise.
6168         (reserved_typespecquals): Likewise.
6169         (aggr): Likewise.
6170         (new_type_id): Likewise.
6171         (cv_qualifiers): Likewise.
6172         (after_type_declarator_intern): Likewise.
6173         (notype_declarator_intern): Likewise.
6174         (absdcl_intern): Likewise.
6175         (named_parm): Likewise.
6176         * pt.c (most_specialized_class): Likewise.
6177         * repo.c (temporary_obstack): Make it a structure, not a pointer.
6178         (init_repo): Initialize it.
6179         * search.c (current_obstack): Remove.
6180         * typeck2.c (add_exception_specifier): Don't call build_decl_list.
6181
6182 2000-10-09  Richard Henderson  <rth@cygnus.com>
6183
6184         * Make-lang.in (CXX_EXTRA_HEADERS): Remove.
6185         (c++ language support bits for libgcc): Remove.
6186         (c++.clean): Remove cplib2.txt cleanup.
6187         * config-lang.in (headers, lib2funcs): Remove.
6188
6189         * exception.cc, new.cc, new1.cc, new2.cc: Remove files.
6190         * tinfo.cc, tinfo.h, tinfo2.cc, vec.cc: Remove files.
6191         * inc/cxxabi.h, inc/exception, inc/new: Remove files.
6192         * inc/new.h, inc/typeinfo: Remove files.
6193
6194 2000-10-08  Joseph S. Myers  <jsm28@cam.ac.uk>
6195
6196         * decl.c (INTMAX_TYPE, UINTMAX_TYPE): Define if not already
6197         defined.
6198         (init_decl_processing): Initialize intmax_type_node and
6199         uintmax_type_node.
6200
6201 2000-10-06  Richard Henderson  <rth@cygnus.com>
6202
6203         * cp-tree.h (struct cp_language_function): Remove x_result_rtx.
6204         (original_result_rtx): Remove.
6205         * decl.c (save_function_data): Don't clear x_result_rtx.
6206         (mark_lang_function): Don't mark it either.
6207         * expr.c (fixup_result_decl): Remove.
6208         * semantics.c (genrtl_named_return_value): Frob the return decl
6209         before calling emit_local_var.
6210         (genrtl_finish_function): Don't call fixup_result_decl.
6211         Always emit the jump to return_label.
6212
6213 2000-10-06  Nathan Sidwell  <nathan@codesourcery.com>
6214
6215         * pt.c (lookup_template_class): Set current access for enum.
6216         (tsubst_enum): Set file & line for enum decl.
6217
6218         * spew.c (yylex): Remove unused variable.
6219
6220 2000-10-05  Richard Henderson  <rth@cygnus.com>
6221
6222         * semantics.c (genrtl_finish_function): Don't init or check
6223         can_reach_end; remove noreturn and return value checks.
6224
6225 2000-10-05  Tom Tromey  <tromey@cygnus.com>
6226
6227         * init.c (build_java_class_ref): Use `build_static_name' with a
6228         suffix, not a prefix, to build the class object's name.
6229
6230 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
6231
6232         * cp-tree.h (access_kind): Fix comment typo.
6233         * decl2.c (grokfield): Fix diagnostic typo.
6234         * semantics.c (finish_template_type): Fix comment typo.
6235         (finish_qualified_object_call_expr): Likewise.
6236
6237 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
6238
6239         * pt.c (tsubst_expr, DECL_STMT case): Don't process if
6240         tsubsting fails.
6241
6242 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
6243
6244         * spew.c (frob_id): New static function.
6245         (frob_opname): Use it.
6246         (yylex): Use it.
6247
6248 2000-10-01  Mark Mitchell  <mark@codesourcery.com>
6249
6250         * decl.c (lang_mark_false_label_stack): Remove.
6251         * lex.c (cp_mang_lang_type): Use ggc_alloc_cleared.
6252
6253 2000-09-30  Joseph S. Myers  <jsm28@cam.ac.uk>
6254
6255         * gxxint.texi: Use @email for formatting email addresses.
6256
6257 2000-09-29  Gabriel Dos Reis  <gdr@codesourcery.com>
6258
6259         * error.c: Remove direct obstack manipulation.  Replace with
6260         output_buffer-based formatting.  Adjust calls to removed macros.
6261         (obstack_chunk_alloc, obstack_chunk_free): Remove.
6262         (OB_INIT, OB_PUTC, OB_PUTC2, OB_PUTS, OB_PUTID, OB_PUTCP,
6263         OB_FINISH, OB_PUTI, OB_END_TEMPLATE): Likewise.
6264
6265 2000-09-24  Mark Mitchell  <mark@codesourcery.com>
6266
6267         * ir.texi: Move to ../c-tree.texi.
6268
6269 2000-09-20  Jason Merrill  <jason@redhat.com>
6270
6271         * decl2.c (get_guard): Check DECL_FUNCTION_SCOPE_P.
6272
6273 2000-09-21  Andreas Jaeger  <aj@suse.de>
6274
6275         * errfn.c: Move declaration of cp_printer and cp_printers to ...
6276         * cp-tree.h: ... here.
6277
6278         * error.c: Remove declaration of cp_printer.
6279
6280 2000-09-20  Mark Mitchell  <mark@codesourcery.com>
6281
6282         * tree.c (mark_local_for_remap_r): Handle CASE_LABELs.
6283
6284 2000-09-20  Hans-Peter Nilsson  <hp@axis.com>
6285
6286         * except.c: Delete #if 0:d EXCEPTION_SECTION_ASM_OP-default and
6287         users.
6288
6289 2000-09-18  Mark Mitchell  <mark@codesourcery.com>
6290
6291         * decl.c (start_function): Robustify.
6292
6293 2000-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6294
6295         * cp-tree.h (check_function_format): Accept a `status' parameter.
6296
6297         * call.c, typeck.c: Updates calls to `check_function_format'.
6298
6299 2000-09-17  Geoffrey Keating  <geoffk@cygnus.com>
6300
6301         * decl2.c (handle_class_head): Always push some scope even
6302         in the error case.
6303
6304 2000-09-16  Mark Mitchell  <mark@codesourcery.com>
6305
6306         * cp-tree.h (struct cp_language_function): Remove
6307         x_scope_stmt_stack and name_declared.
6308         (current_scope_stmt_stack): Remove.
6309         (function_name_declared_p): New macro.
6310         (struct lang_decl_flags): Use c_lang_decl as a base class.
6311         (context): Remove.
6312         (struct lang_decl): Replace saved_tree with context.
6313         (DECL_FRIEND_CONTEXT): Adjust accordingly.
6314         (SET_DECL_FRIEND_CONTEXT): Likewise.
6315         (DECL_VIRTUAL_CONTEXT): Likewise.
6316         (DECL_SAVED_TREE): Remove.
6317         (C_DECLARED_LABEL_FLAG): Likewise.
6318         (cplus_expand_expr_stmt): Don't declare.
6319         (add_decl_stmt): Likewise.
6320         (add_scope_stmt): Likewise.
6321         * decl.c (mark_stmt_tree): Remove.
6322         (case_compare): Likewise.
6323         (finish_case_label): Use c_add_case_label.
6324         (init_decl_processing): Set more language-specific hooks.
6325         (build_enumerator): Fix typo in comment.
6326         (cplus_expand_expr_stmt): Remove.
6327         (mark_lang_function): Use mark_c_language_function.
6328         (lang_mark_tree): Use c_mark_lang_decl.
6329         * decl2.c: Change order of inclusion.
6330         * except.c: Likewise.
6331         * expr.c (cplus_expand_expr): Remove handling of STMT_EXPR.  Fall
6332         back on c_expand_expr.
6333         * friend.c: Include expr.h.
6334         * init.c: Change order of inclusion.
6335         * Makefile.in: Update dependencies.
6336         * lex.h (free_lang_decl_chain): Remove.
6337         * optimize.c (maybe_clone_body): Use function_name_declared_p.
6338         * pt.c (build_template_decl): Don't copy DECL_VIRTUAL_CONTEXT if
6339         it doesn't exist.
6340         (instantiate_decl): Use function_name_declared_p.
6341         * semantics.c (lang_expand_expr_stmt): Remove.
6342         (set_current_function_name_declared): Likewise.
6343         (current_function_name_declared): Likewise.
6344         (begin_compound_stmt): Use function_name_declared_p.
6345         (add_decl_stmt): Remove.
6346         (setup_vtbl_ptr): Use function_name_declared_p.
6347         (add_scope_stmt): Remove.
6348         (current_scope_stmt_stack): New function.
6349         (cp_expand_stmt): Don't handle SCOPE_STMTs.
6350         (expand_body): Use function_name_declared_p.
6351         * tree.c (cp_statement_code_p): Don't include SCOPE_STMT.
6352         * typeck.c: Change order of includes.
6353         (convert_sequence): Remove.
6354
6355 2000-09-14  Joseph S. Myers  <jsm28@cam.ac.uk>
6356
6357         * lex.c (reswords): Add _Complex.
6358
6359 Thu Sep 14 12:10:45 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6360
6361         * Make-lang.in (cplib2.txt): Depend on cp/Makefile.
6362
6363 2000-09-13  J. David Anglin  <dave@hiauly1.hia.nrc.ca>
6364
6365         * init.c (begin_init_stmts): Don't use // comments.
6366
6367 2000-09-12  Jason Merrill  <jason@redhat.com>
6368
6369         * decl.c (maybe_deduce_size_from_array_init): Set do_default for
6370         all non-extern arrays.
6371
6372         * decl.c (grokdeclarator): Complain about 'friend T' for implicit
6373         typenames, too.  Downgrade complaint to pedwarn.
6374         (xref_tag): Warn about surprising behavior of 'friend struct T'.
6375         * decl2.c (handle_class_head): Generate a TYPENAME_TYPE for
6376         'class This::Inherited'.
6377
6378 2000-09-12  Mark Mitchell  <mark@codesourcery.com>
6379
6380         * decl.c (finish_case_label): Given the LABEL_DECL a
6381         DECL_CONTEXT.
6382
6383 2000-09-12  Gabriel Dos Reis  <gdr@codesourcery.com>
6384
6385         * error.c (TFF_PLAIN_IDENTIFIER, TFF_NAMESPACE_SCOPE,
6386         TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS, TFF_CHASE_TYPDEF,
6387         TFF_DECL_SPECIFIERS, TFF_CLASS_KEY_OR_ENUM, TFF_RETURN_TYPE,
6388         TFF_FUNCTION_DEFAULT_ARGUMENTS, TFF_EXCEPTION_SPECIFICATION,
6389         TFF_TEMPLATE_HEADER, TFF_TEMPLATE_DEFAULT_ARGUMENTS, TFF_SCOPE):
6390         New macros.
6391         (sorry_for_unsupported_tree, print_scope_operator,
6392         print_left_paren, print_right_paren, print_left_bracket,
6393         print_right_bracket, print_whitespace): Likewise.
6394         (aggr_variety): Rename to class_key_or_enum.
6395         (print_type): Rename to print_type_id.
6396         (print_type_specifier_seq, print_simple_type_specifier,
6397         print_elaborated_type_specifier,
6398         print_rest_of_abstract_declarator,
6399         print_parameter_declaration_clause, print_exception_specification,
6400         print_nested_name_specifier, print_template_id,
6401         typedef_original_name,  print_template_argument_list_start,
6402         print_template_argument_list_end): New functions.
6403
6404 2000-09-11  Gabriel Dos Reis  <gdr@codesourcery.com>
6405
6406         * ir.texi: Add more documentation.
6407
6408 2000-09-11  Mark Mitchell  <mark@codesourcery.com>
6409
6410         * cp-tree.h (struct saved_scope): Remove x_function_parms.
6411         (current_function_parms): Don't define.
6412         (struct cp_language_function): Remove parms_stored.
6413         (current_function_just_assigned_this): Don't define.
6414         (current_function_parms_stored): Likewise.
6415         (static_ctors): Declare.
6416         (static_dtors): Likewise.
6417         (SF_EXPAND): Don't define.
6418         (expand_start_early_try_stmts): Remove declaration.
6419         (store_parm_decls): Likewise.
6420         * decl.c (static_ctors): Don't declare.
6421         (static_dtors): Likewise.
6422         (struct binding_level): Remove this_block.
6423         (poplevel): Remove dead code.
6424         (set_block): Likewise.
6425         (mark_binding_level): Don't mark this_block.
6426         (mark_saved_scope): Don't mark x_function_parms.
6427         (init_decl_processing): Don't add current_function_parms as a GC
6428         root.
6429         (check_function_type): Change prototype.
6430         (start_function): Remove RTL-generation code.
6431         (expand_start_early_try_stmts): Remove.
6432         (store_parm_decls): Give it internal linkage.  Remove
6433         RTL-generation code.
6434         (finish_function): Remove RTL-generation code.
6435         * decl2.c (static_ctors): Fix formatting.
6436         (static_dtors): Likewise.
6437         * method.c (use_thunk): Don't call store_parm_decls.
6438         (synthesize_method): Likewise.
6439         * optimize.c (maybe_clone_body): Likewise.
6440         * parse.y (fn.def2): Likewise.
6441         (.set_base_init): Likewise.
6442         (nodecls): Likewise.
6443         * pt.c (instantiate_decl): Likewise.
6444         * rtti.c (synthesize_tinfo_fn): Likewise.
6445         * semantics.c (genrtl_try_block): Simplify.
6446         (expand_body): Use genrtl_start_function and
6447         genrtl_finish_function.
6448         (genrtl_start_function): New function.
6449         (genrtl_finish_function): Likewise.
6450
6451 2000-09-11  Nathan Sidwell  <nathan@codesourcery.com>
6452
6453         * error.c (cp_tree_printer, case 'P'): Append break.
6454
6455 2000-09-11  Nathan Sidwell  <nathan@codesourcery.com>
6456
6457         * cp-tree.h (frob_opname): Declare.
6458         * parse.y (saved_scopes): New static variable.
6459         (cp_parse_init): Adjust.
6460         (do_id): If lastiddecl is NULL, do do_identifier.
6461         (operator): Save scope information.
6462         (unoperator): New reduction. Restore scope information.
6463         (operator_name): Append unoperator. Call frob_opname.
6464         * spew.c (frob_opname): Define.
6465
6466 2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>
6467
6468         * decl.c, rtti.c: Include defaults.h if not already included.
6469         Don't define the *_TYPE_SIZE macros.
6470
6471 2000-09-09  Mark Mitchell  <mark@codesourcery.com>
6472
6473         * cp-tree.h (push_switch): Change prototype.
6474         (check_cp_case_value): Remove declaration.
6475         (decl_constant_value): Likewise.
6476         * decl.c (struct cp_switch): Add switch_stmt and cases.
6477         (case_compare): New function.
6478         (push_switch): Set switch_stmt.  Initialize cases.
6479         (pop_switch): Clean up cases.
6480         (define_case_label): Rename to ...
6481         (finish_case_label): ... this.  Do semantic analysis for case
6482         labels here.
6483         (start_function): Correct comment.
6484         * decl2.c (check_cp_case_value): Remove.
6485         * expr.c (do_case): Remove.
6486         * pt.c (tsubst_expr): Adjust call to finish_case_label.
6487         * semantics.c (genrtl_do_poplevel): Remove declaration.
6488         (RECHAIN_STMTS): Remove.
6489         (finish_break_stmt): Use build_break_stmt.
6490         (finish_continue_stmt): Use build_continue_stmt.
6491         (finish_switch_cond): Adjust condition here, rater than in
6492         c_expand_start_case.
6493         (finish_case_label): Remove.
6494         * typeck.c (c_expand_return): Remove.
6495         (c_expand_start_case): Likewise.
6496
6497 2000-09-07  Gabriel Dos Reis  <gdr@codesourcery.com>
6498
6499         * ir.texi: Document type nodes.
6500
6501 2000-09-06  Mark Mitchell  <mark@codesourcery.com>
6502
6503         * cp-tree.h (init_cp_semantics): Declare.
6504         (genrtl_try_block): Don't declare.
6505         (genrtl_handler): Likewise.
6506         (genrtl_catch_block): Likewise.
6507         (genrtl_ctor_stmt): Likewise.
6508         (genrtl_subobject): Likewise.
6509         (genrtl_do_poplevel): Likewise.
6510         (genrtl_named_return_value): Likewise.
6511         * lex.c (init_parse): Call init_cp_semantics.
6512         * semantics.c (genrtl_try_block): Give it internal linkage.
6513         (genrtl_handler): Likewise.
6514         (genrtl_catch_block): Likewise.
6515         (genrtl_ctor_stmt): Likewise.
6516         (genrtl_subobject): Likewise.
6517         (genrtl_do_poplevel): Likewise.
6518         (genrtl_named_return_value): Likewise.
6519         (lang_expand_stmt): Rename to ...
6520         (cp_expand_stmt): ... this.  Only handle C++-specific nodes.
6521         (init_cp_semantics): Define.
6522
6523         * decl.c (initialize_local_var): Remove RTL-generating code.
6524         * semantics.c (genrtl_try_block): Fix formatting.
6525
6526         Move statement-tree facilities from C++ to C front-end.
6527         * cp-tree.h (cp_tree_index): Remove CPTI_VOID_ZERO.
6528         (void_zero_node): Remove.
6529         (stmt_tree): Likewise.
6530         (scope_chain): Adjust.
6531         (language_function): Rename to cp_language_function.
6532         (cp_function_chain): Adjust.
6533         (current_stmt_tree): Remove.
6534         (last_tree): Likewise.
6535         (last_expr_type): Likewise.
6536         (struct lang_decl): Adjust.
6537         (STMT_IS_FULL_EXPR_P): Remove.
6538         (add_tree): Remove.
6539         (begin_stmt_tree): Likewise.
6540         (finish_stmt_tree): Likewise.
6541         (walk_tree_fn): Likewise.
6542         (walk_stmt_tree): Likewise.
6543         * class.c (finish_struct): Replace use of add_tree with add_stmt.
6544         * decl.c (mark_stmt_tree): Adjust type.
6545         (init_decl_processing): Don't build void_zero_node.
6546         (initialize_local_var): Adjust usage of current_stmt_tree.
6547         (finish_enum): Use add_stmt, not add_tree.
6548         (save_function_data): Adjust use of language_function.
6549         (finish_constructor_body): Use add_stmt, not add_tree.
6550         (finish_destructor_body): Likewise.
6551         (push_cp_function_context): Adjust use of language_function.
6552         (pop_cp_function_context): Likewise.
6553         (mark_lang_function): Likewise.
6554         (mark_cp_function_context): Likewise.
6555         * init.c (build_aggr_init): Adjust use of current_stmt_tree.
6556         (build_vec_init): Likewise.
6557         * semantics.c (SET_LAST_STMT): Remove.
6558         (RECHAIN_STMTS): Don't use it.
6559         (stmts_are_full_exprs_p): Adjust use of current_stmt_tree.
6560         (current_stmt_tree): Define.
6561         (add_tree): Remove.
6562         (finish_goto_stmt): Use add_stmt, not add_tree.
6563         (finish_expr_stmt): Likewise.
6564         (begin_if_stmt): Likewise.
6565         (finish_then_clause): Likewise.
6566         (begin_while_stmt): Likewise.
6567         (begin_do_stmt): Likewise.
6568         (finish_return_stmt): Likewise.
6569         (begin_for_stmt): Likewise.
6570         (finish_break_stmt): Likewise.
6571         (finish_continue_stmt): Likewise.
6572         (begin_switch_stmt): Likewise.
6573         (finish_case_label): Likewise.
6574         (begin_try_block): Likewise.
6575         (begin_function_try_block): Likewise.
6576         (begin_handler): Likewise.
6577         (begin_catch_block): Likewise.
6578         (begin_compound_stmt): Likewise.
6579         (begin_asm_stmt): Likewise.
6580         (finish_asm_stmt): Likewise.
6581         (finish_label_stmt): Likewise.
6582         (add_decl_stmt): Likewise.
6583         (finish_subobject): Likewise.
6584         (finish_decl_cleanup): Likewise.
6585         (finish_named_return_value): Likewise.
6586         (setup_vtbl_ptr): Likewise.
6587         (add_scope_stmt): Likewise.
6588         (finish_stmt_expr): Likewise.
6589         (prune_unused_decls): Remove.
6590         (begin_stmt_tree): Likewise.
6591         (finish_stmt_tree): Likewise.
6592         (prep_stmt): Adjust use of current_stmt_tree.
6593         (lang_expand_stmt): Likewise.
6594         * tree.c (statement_code_p): Remove.
6595         (cp_statement_code_p): New function.
6596         (walk_stmt_tree): Remove.
6597         (init_tree): Set lang_statement_code_p.
6598
6599 2000-09-06  Zack Weinberg  <zack@wolery.cumb.org>
6600
6601         Integrated preprocessor.
6602
6603         * Make-lang.in, Makefile.in: Remove all references to input.c,
6604         gxx.gperf, and hash.h.  Add ../c-lex.o to C_OBJS.
6605         * gxx.gperf, hash.h, input.c: Delete.
6606         * lang-specs.h: Pass -lang-c++ to cc1plus so cpplib is
6607         initialized properly.
6608
6609         * class.c (fixup_pending_inline): Take a tree, not a
6610         struct pending_inline *.  All callers changed.
6611         (init_class_processing): Set RID_PUBLIC, RID_PRIVATE,
6612         RID_PROTECTED entries in ridpointers[] array here.
6613         * decl.c (duplicate_decls): Do not refer to struct
6614         pending_inline.
6615         (record_builtin_type, init_decl_processing): Use RID_MAX not
6616         CP_RID_MAX.
6617         (grokdeclarator): Use C_IS_RESERVED_WORD.
6618         * decl2.c (lang_decode_option): Ignore -lang-c++ for sake of
6619         cpplib.
6620         (grok_x_components): Do not inspect pending_inlines chain.
6621
6622         * cp-tree.h (struct lang_identifier): Add rid_code entry.
6623         (C_IS_RESERVED_WORD, C_RID_CODE, C_RID_YYCODE): New.
6624         (flag_no_gnu_keywords, flag_operator_names, rid_to_yy): Declare.
6625         (DEFARG_LENGTH, struct pending_inline, TIME_IDENTIFIER_TIME,
6626         TIME_IDENTIFIER_FILEINFO): Kill.
6627         Update prototypes.
6628         * lex.h: Expunge cp_rid.  Rewrite RIDBIT macros to use just a
6629         single 32-bit word.
6630         * parse.y: Call do_pending_inlines unconditionally.
6631         reinit_parse_for_method is now snarf_method.  fn.defpen is no
6632         longer necessary.  Remove unnecessary <itype> annotation on
6633         SCOPE.  Do not refer to end_of_file or struct pending_inline.
6634         * semantics.c (begin_inline_definitions): Call
6635         do_pending_inlines unconditionally.
6636
6637         * lex.c: Remove all code now shared with C front end.
6638         Initialize cpplib properly if USE_CPPLIB.  Put reserved words
6639         into the get_identifier table.  Rewrite pragma handling to
6640         work with the registry.  Move code to save tokens for later
6641         processing to spew.c.
6642
6643         * spew.c: Rewrite everything in terms of token streams instead
6644         of text.  Move routines here from lex.c / input.c as
6645         appropriate.  GC-mark trees hanging off the pending inlines
6646         chain.
6647
6648 2000-09-06  Mark Mitchell  <mark@codesourcery.com>
6649
6650         * NEWS: Mention that the named return value extension has been
6651         deprecated.
6652         * cp-tree.h (original_result_rtx): Define.
6653         (TREE_REFERENCE_EXPR): Remove.
6654         (DECL_VPARENT): Likewise.
6655         (pushdecl_nonclass_level): Likewise.
6656         (store_return_init): Likewise.
6657         (reinit_lang_specific): Likewise.
6658         (genrtl_named_return_value): Change prototype.
6659         * decl.c (original_result_rtx): Remove.
6660         (cp_finish_decl): Don't build DECL_STMTs for RESULT_DECLs.
6661         Do not generate RTL for local variables here.
6662         (store_return_init): Remove.
6663         * semantics.c (genrtl_named_return_value): Simplify.  Fold in
6664         store_return_init.
6665         (finish_named_return_value): Adjust accordingly.  Warn that this
6666         extension is deprecated.
6667         (lang_expand_stmt): Adjust call to genrtl_named_return_value.
6668
6669 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
6670
6671         * pt.c (type_unification_real): Replace switch with if.
6672         (unify): Tsubst non-type parms before comparing.
6673
6674 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
6675
6676         * error.c (dump_typename): New function, broken out of ...
6677         (dump_type): ... here. Use it.
6678         * typeck.c (same_type_p): Use cp_tree_equal for TYPENAME_TYPE.
6679
6680 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
6681
6682         * init.c (build_offset_ref): Deal with namespace scoped
6683         TEMPLATE_ID_EXPRs.
6684
6685 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
6686
6687         * class.c (resolve_address_of_overloaded_function): Add
6688         explanation message.
6689         * decl.c (define_case_label): Reformat explanation.
6690         * decl2.c (finish_static_data_member_decl): Likewise.
6691         (grokfield): Likewise.
6692         * friend.c (do_friend): Likewise.
6693
6694 2000-09-05  Zack Weinberg  <zack@wolery.cumb.org>
6695
6696         * tree.c (walk_tree): Expose tail recursion.
6697         (walk_stmt_tree): New function.
6698         * cp-tree.h: Prototype walk_stmt_tree.
6699         * semantics.c (prune_unused_decls): Operate on SCOPE_STMTs not
6700         the BLOCKs directly.  If a BLOCK has no variables after
6701         pruning, discard it.
6702         (finish_stmt_tree): Use walk_stmt_tree.  No need to save and
6703         restore the line number.
6704
6705 2000-09-05  Mark Mitchell  <mark@codesourcery.com>
6706
6707         * Makefile.in (CXX_TREE_H): Add dependency on HTAB_H.
6708         (pt.o): Remove dependency on HTAB_H.
6709         * cp-tree.h: Include hashtab.h.
6710         (walk_tree): Change prototype.
6711         (walk_tree_without_duplicates): New function.
6712         * decl.c (check_default_argument): Use it.
6713         * optimize.c (remap_decl): Adjust calls to walk_tree.
6714         (copy_body): Likewise.
6715         (expand_calls_inline): Likewise.
6716         (calls_setjmp_p): Use walk_tree_without_duplicates.
6717         * pt.c: Don't include hashtab.h.
6718         (for_each_template_parm): Use walk_tree_without_duplicates.
6719         * semantics.c (finish-stmt_tree): Likewise.
6720         (expand_body): Likewise.
6721         * tree.c (walk_tree): Add additional parameter.
6722         (walk_tree_without_duplicates): New function.
6723         (count_trees): Use it.
6724         (verify_stmt_tree): Adjust call to walk_tree.
6725         (find_tree): Use walk_tree_without_duplicates.
6726         (no_linkage_check): Likewise.
6727         (break_out_target_exprs): Adjust call to walk_tree.
6728         (cp_unsave): Likewise.
6729
6730 2000-09-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6731
6732         * cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code.
6733         (TEMPLATE_TEMPLATE_PARM): Adjust comment.
6734         * cp-tree.h (TYPE_BINFO): Adjust comment.
6735         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
6736         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
6737         (IS_AGGR_TYPE): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
6738         (TYPE_TEMPLATE_INFO): Likewise.
6739         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Likewise.
6740         * class.c (push_nested_class): Likewise.
6741         * decl.c (lookup_name_real): Likewise.
6742         (grokdeclarator): Likewise.
6743         (grok_op_properties): Likewise.
6744         (xref_tag): Likewise.
6745         (xref_basetypes): Likewise.
6746         * decl2.c (constructor_name_full): Likewise.
6747         (arg_assoc_template_arg): Add TEMPLATE_TEMPLATE_PARM case.
6748         (arg_assoc_type): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
6749         * error.c (dump_type): Split TEMPLATE_TEMPLATE_PARM case.
6750         (dump_type_prefix): Add BOUND_TEMPLATE_TEMPLATE_PARM.
6751         (dump_type_suffix): Likewise.
6752         * init.c (is_aggr_type): Use BOUND_TEMPLATE_TEMPLATE_PARM
6753         instead.
6754         (get_aggr_from_typedef): Likewise.
6755         * mangle.c (write_type): Split TEMPLATE_TEMPLATE_PARM case.
6756         (write_expression): Add BOUND_TEMPLATE_TEMPLATE_PARM.
6757         (write_template_parm): Likewise.
6758         (write_template_template_parm): Check tree code instead of
6759         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
6760         * method.c (build_overload_nested_name): Add
6761         BOUND_TEMPLATE_TEMPLATE_PARM.
6762         (process_overload_item): Split TEMPLATE_TEMPLATE_PARM case.
6763         * parse.y (bad_parm): Add BOUND_TEMPLATE_TEMPLATE_PARM.
6764         * pt.c (convert_template_argument): Check tree code instead of
6765         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
6766         (for_each_template_parm_r): Split TEMPLATE_TEMPLATE_PARM case.
6767         (for_each_template_parm): Adjust comment.
6768         (tsubst): Add BOUND_TEMPLATE_TEMPLATE_PARM.  Reorganize.
6769         (tsubst_copy): Add BOUND_TEMPLATE_TEMPLATE_PARM.
6770         (unify): Add BOUND_TEMPLATE_TEMPLATE_PARM.  Reorganize.  Use
6771         template_args_equal to compare template template parameter cases.
6772         * ptree.c (print_lang_type): Add BOUND_TEMPLATE_TEMPLATE_PARM.
6773         * search.c (lookup_field_1): Use BOUND_TEMPLATE_TEMPLATE_PARM
6774         instead.
6775         * tree.c (copy_template_template_parm): Decide whether to create
6776         a TEMPLATE_TEMPLATE_PARM or BOUND_TEMPLATE_TEMPLATE_PARM node.
6777         (walk_tree): Add BOUND_TEMPLATE_TEMPLATE_PARM.
6778         (copy_tree_r): Likewise.
6779         * typeck.c (comptypes): Likewise.  Check tree code instead of
6780         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
6781
6782 2000-09-04  Mark Elbrecht  <snowball3@bigfoot.com>
6783
6784         * decl.c (finish_function): Move the code for handling functions
6785         marked with the constructor and destructor attributes inside the
6786         expand_p block.
6787
6788 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
6789
6790         * init.c (resolve_offset_ref): Deal with TEMPLATE_ID_EXPR.
6791
6792 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
6793
6794         * pt.c (lookup_template_class): Remove abort.
6795         * tree.c (get_type_decl): Allow error_mark_node.
6796
6797 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
6798
6799         * decl2.c (arg_assoc): Deal with COMPONENT_REFs inside
6800         TEMPLATE_ID_EXPRs.
6801
6802 2000-09-03  Mark Mitchell  <mark@codesourcery.com>
6803
6804         * operators.def (ALIGNOF_EXPR, MAX_EXPR, MIN_EXPR): Change
6805         new ABI mangling.
6806
6807 2000-09-01  Nathan Sidwell  <nathan@codesourcery.com>
6808
6809         * parse.y (named_class_head): Check for TYPENAME_TYPE. Simplify
6810         union tag mismatch error reporting.
6811
6812 2000-09-01  Nathan Sidwell  <nathan@codesourcery.com>
6813
6814         * call.c (build_scoped_method_call): Check it is not a namespace.
6815
6816 2000-08-30  Jason Merrill  <jason@redhat.com>
6817
6818         * cp-tree.h (LOCAL_CLASS_P): Use decl_function_context.
6819
6820         * tree.c (bot_manip): Check TREE_CONSTANT rather than
6821         !TREE_SIDE_EFFECTS.  Call break_out_target_exprs and
6822         build_target_expr_with_type for the non-AGGR_INIT_EXPR case.
6823
6824         * decl.c (start_function): Always call make_function_rtl.
6825
6826 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
6827
6828         * semantics.c (prune_unused_decls): New function.
6829         (finish_stmt_tree): Call it via walk_tree.
6830
6831 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
6832
6833         * class.c (build_secondary_vtable): Constify a char *.
6834         * decl.c (init_decl_processing): Initialize function_id_node,
6835         pretty_function_id_node, and func_id_node.
6836         * input.c (struct input_source): Constify 'str'.
6837         (feed_input): Constify first argument.
6838         * mangle.c (write_identifier): Constify argument.
6839         * pt.c (mangle_class_name_for_template): Constify argument.
6840
6841 2000-08-29  Mark Mitchell  <mark@codesourcery.com>
6842
6843         * typeck.c (mark_addressable): Remove code that pokes around in
6844         RTL.
6845
6846 2000-08-28  Jason Merrill  <jason@redhat.com>
6847
6848         * lex.c (file_name_nondirectory): Move to toplev.c.
6849
6850         * cp-tree.h (LOCAL_CLASS_P): New macro.
6851         * class.c (finish_struct_1): Use it.
6852
6853 2000-08-27  Alex Samuel  <samuel@codesourcery.com>
6854
6855         * mangle.c (CLASSTYPE_TEMPLATE_ID_P): Remove unexplained voodoo.
6856         (write_encoding): Pass another argument to write_name.
6857         (write_name): Add ignore_local_scope parameter.  Fix handling of
6858         local names.
6859         (write_nested_name): Use write_unqualified_name.
6860         (write_prefix): Likewise.  Skip out on FUNCTION_DECLs.
6861         (write_template_prefix): Use write_unqualified_name.
6862         (write_component): Remove.
6863         (write_local_name): Add parameter.  Use direct local entity to
6864         discriminator calculation.
6865         (write_class_enum_type): Pass another argument to write_name.
6866         (write_template_template_arg): Likewise.
6867         (make_guard_variable): Likewise.
6868
6869 2000-08-27  Jason Merrill  <jason@redhat.com>
6870
6871         * decl.c (pushdecl): Matching decls for local externs are found in
6872         the current level.  Propagate linkage information from previous
6873         declarations.
6874
6875 2000-08-26  Gabriel Dos Reis  <gdr@codesourcery.com>
6876
6877         * ir.texi (Expressions): Fix typo.
6878
6879 2000-08-25  Greg McGary  <greg@mcgary.org>
6880
6881         * tree.c (init_tree): Use ARRAY_SIZE.
6882
6883 2000-08-25  Gabriel Dos Reis  <gdr@codesourcery.com>
6884
6885         * error.c (cp_tree_printer): Rework.
6886
6887 2000-08-25  Mark Mitchell  <mark@codesourcery.com>
6888
6889         * Make-lang.in (CXX_LIB2FUNCS): Remove cp-demangle.o and
6890         dyn-string.o.
6891         (CXX_LIB2SRCS): Remove cp-demangle.c and dyn-string.c.
6892         (cp-demangle.o): Remove target.
6893         (dyn-string.o): Likewise.
6894
6895         * decl.c (grokfndecl): Require that `main' return an `int'.
6896         * mangle.c (write_encoding): Don't mangle return types for
6897         conversion functions.
6898
6899 2000-08-25  Gabriel Dos Reis  <gdr@codesourcery.com>
6900
6901         * error.c (tree_formatting_info): New data type.
6902         (tree_being_formatted): New macro.
6903         (tree_formatting_flags): Likewise.
6904         (put_whitespace): Likewise.
6905         (print_tree_identifier): Likewise.
6906         (print_identifier): Likewise.
6907         (cp_tree_printer, print_function_argument_list, print_declaration,
6908         print_expression, print_function_declaration,
6909         print_function_parameter, print_type, print_cv_qualifier): New
6910         functions.
6911         (init_error): Initialize lang_printer.
6912
6913 2000-08-24  Jason Merrill  <jason@redhat.com>
6914
6915         * typeck.c (build_ptrmemfunc): Just reinterpret if there's no
6916         adjustment necessary.
6917
6918 2000-08-24  Greg McGary  <greg@mcgary.org>
6919
6920         * cp-tree.h (MAIN_NAME_P): Remove macro.
6921
6922 2000-08-24  Gabriel Dos Reis  <gdr@codesourcery.com>
6923
6924         * error.c (print_instantiation_context): Don't forget to flush the
6925         buffer.
6926
6927 2000-08-23  Jason Merrill  <jason@redhat.com>
6928
6929         * typeck.c (build_ptrmemfunc): Save the input pmf.
6930
6931         * method.c (process_modifiers): Use same_type_p.
6932
6933 2000-08-23  Mark Mitchell  <mark@codesourcery.com>
6934
6935         * cp-tree.h (DECL_CLONED_FUNCTION_P): Check DECL_LANG_SPECIFIC.
6936         * mangle.c (write_function_type): Change prototype.
6937         (write_encoding): Don't mangle return types for
6938         constructors or destructors.
6939         (write_type): Adjust call to write_function_type.
6940         * pt.c (instantiate_template): Instantiate alternate entry points
6941         when instantiating the main function.
6942
6943 2000-08-23  Gabriel Dos Reis  <gdr@codesourcery.com>
6944
6945         * error.c (cp_print_error_function): Don't use embedded '\n' in
6946         output_printf.
6947
6948 2000-08-23  Gabriel Dos Reis  <gdr@codesourcery.com>
6949
6950         * decl.c (init_decl_processing): Remove bogus initialization.
6951         * error.c (lang_print_error_function): Restore here.
6952         (init_error): Initialize print_error_function.
6953
6954 2000-08-22  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
6955
6956         * decl2.c (arg_assoc): Revert my 2000-08-11 change.
6957
6958 2000-08-22  Gabriel Dos Reis  <gdr@codesourcery.com>
6959
6960         * Makefile.in (error.o): Depends on diagnostic.h
6961
6962         * cp-tree.h (problematic_instantiation_changed,
6963         record_last_problematic_instantiation, current_instantiation,
6964         print_instantiation_context): Declare.
6965         (maybe_print_template_context): Remove.
6966
6967         * decl.c (init_decl_processing): Set print_error_function to NULL.
6968         (lang_print_error_function): Remove, since we're using a new
6969         machinery.
6970
6971         * error.c: #include diagnostic.h
6972         (function_category): New function.
6973         (cp_diagnostic_starter): Likewise.
6974         (cp_diagnostic_finalizer): Likewise.
6975         (cp_print_error_function): Likewise.
6976         (maybe_print_instantiation_context): Likewise.
6977         (print_instantiation_full_context): Likewise.
6978         (print_instantiation_partial_context): Likewise.
6979         (print_instantiation_context): Define.
6980         (init_error): Initialize diagnostic pager and finalizer.
6981
6982         * pt.c (problematic_instantiation_changed): Define.
6983         (record_last_problematic_instantiation): Likewise.
6984         (current_instantiation): Likewise.
6985         (maybe_print_template_context): Remove.
6986         (print_template_context): Likewise.
6987         (current_tinst_level): Make static to reflect Brendan Kehoe's
6988         change of 1995-04-13.
6989         (push_tinst_level): Call print_instantiation_context.
6990
6991 2000-08-21  Nix  <nix@esperi.demon.co.uk>
6992
6993         * lang-specs.h: Do not process -o or run the assembler if
6994         -fsyntax-only.
6995
6996 2000-08-21  Joseph S. Myers  <jsm28@cam.ac.uk>
6997
6998         * decl.c (flag_hosted, flag_noniso_default_format_attributes): New
6999         variables.
7000         * decl2.c (lang_decode_option): Disable gettext attributes for
7001         -ansi.
7002
7003 2000-08-21  Gabriel Dos Reis  <gdr@codesourcery.com>
7004
7005         * lex.c (lang_init_options): Default diagnostic message maximum
7006         length to 80, when line-wrapping.
7007
7008 2000-08-20  Mark Mitchell  <mark@codesourcery.com>
7009
7010         * class.c (build_vtbl_initializer): Clear the entire
7011         vtbl_init_data.  Start keeping track of the functions for which we
7012         have created vcall offsets here.
7013         (dfs_build_vcall_offset_vtbl_entries): Remove.
7014         (build_vcall_offset_vtbl_entries): Reimplement.
7015         (add_vcall_offset_vtbl_entries_r): New function.
7016         (add_vcall_offset_vtbl_entries_1): Likewise.  Tweak logic for
7017         computing when vcall offsets are necessary.
7018
7019 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
7020
7021         * decl.c (member_function_or_else): Use cp_error ... %T.
7022         (grokdeclarator): Likewise.
7023         (start_method): Likewise.
7024         * friend.c (make_friend_class): Use cp_pedwarn ... %T.
7025
7026 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
7027
7028         * decl2.c (grokfield): Set CLASSTYPE_GOT_SEMICOLON on class
7029         TYPE_DECLs.
7030
7031 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
7032
7033         * cp-tree.h (PTRMEM_OK_P): New macro.
7034         (itf_ptrmem_ok): New enumeration value.
7035         * class.c (resolve_address_of_overloaded_function): Add PTRMEM
7036         argument. Diagnose implicit pointer to member.
7037         (instantiate_type): Don't diagnose implicit pointer to member
7038         here. Pass itf_ptrmem_ok if ok. Adjust calls to
7039         resolve_address_of_overloaded_function.
7040         * init.c (build_offset_ref): Set PTRMEM_OK_P.
7041         (resolve_offset_ref): Don't diagnose implicit pointer to member here.
7042         * semantics.c (finish_parenthesized_expr): Clear OFFSET_REFs here.
7043         * typeck.c (build_x_unary_op): Calculate PTRMEM_OK_P.
7044         (build_unary_op): Deal with single non-static member in
7045         microsoft-land.
7046
7047 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
7048
7049         * decl2.c (arg_assoc_type): Cope with TYPENAME_TYPE.
7050
7051 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
7052
7053         * cp-tree.h (enum_name_string): Remove prototype.
7054         (report_case_error): Remove prototype.
7055         * cp/typeck2.c (enum_name_string): Remove.
7056         (report_case_error): Remove.
7057         * error.c (dump_expr): Deal with enum values directly.
7058         Correctly negate integer constant.
7059
7060 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
7061
7062         * inc/cxxabi.h (__cxa_vec_new2, __cxa_vec_new3): Declare.
7063         (__cxa_vec_delete2, __cxa_vec_delete3): Declare.
7064         * vec.cc (__cxa_vec_new2, __cxa_vec_new3): Implement.
7065         (__cxa_vec_delete2, __cxa_vec_delete3): Implement.
7066         (__cxa_vec_new): Use __cxa_vec_new2.
7067         (__cxa_vec_delete): Use __cxa_vec_delete2.
7068
7069 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
7070
7071         * vec.cc (__cxa_vec_new): Set "C" linkage.
7072         (__cxa_vec_ctor): Likewise.
7073         (__cxa_vec_cctor): Likewise.
7074         (__cxa_vec_dtor): Likewise.
7075         (__cxa_vec_delete): Likewise.
7076         * inc/cxxabi.h (__cxa_vec_new): Set "C" linkage.
7077         (__cxa_vec_ctor): Likewise.
7078         (__cxa_vec_cctor): Likewise.
7079         (__cxa_vec_dtor): Likewise.
7080         (__cxa_vec_delete): Likewise.
7081
7082 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
7083
7084         * class.c (instantiate_type): Reinstate local variable
7085         deleted in previous change.
7086
7087         * cvt.c (cp_convert_to_pointer): Pass itf_complain, not
7088         itf_no_attributes.
7089
7090 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
7091
7092         * cp-tree.h (instantiate_type_flags): New enumeration.
7093         (instantiate_type): Change parameter.
7094         * class.c (instantiate_type): Adjust prototype. Adjust.
7095         * call.c (standard_conversion): Adjust instantiate_type call.
7096         (reference_binding): Likewise.
7097         (build_op_delete_call): Likewise.
7098         (convert_like_real): Likewise.
7099         * cvt.c (cp_convert_to_pointer): Likewise.
7100         (convert_to_reference): Likewise.
7101         * pt.c (convert_nontype_argument): Likewise.
7102         * typeck.c (build_binary_op): Likewise.
7103         (build_ptrmemfunc): Likewise.
7104         (convert_for_assignment): Likewise.
7105
7106 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
7107
7108         * cp-tree.h (CPTR_AGGR_TAG): New global tree node.
7109         (current_aggr): Define.
7110         * decl.c (grokdeclarator): Make sure a friend class is an
7111         elaborated type specifier.
7112         * parse.y (current_aggr): Remove static definition.
7113         (cp_parse_init): Adjust.
7114         (structsp): Clear and restore current_aggr.
7115         (component_decl_list): Clear current_aggr.
7116
7117         * error.c (dump_type, case TYPENAME_TYPE): Don't emit the
7118         aggregate tag on the typename's context.
7119
7120         * pt.c (tsubst_friend_class): Return error_mark_node, if
7121         parms becomes NULL.
7122         (instantiate_class_template): Ignore error_mark_node friend types.
7123
7124 2000-08-14  Nathan Sidwell  <nathan@codesourcery.com>
7125
7126         * cvt.c (warn_ref_binding): New static function, broken out of ...
7127         (convert_to_reference): ... here. Use it.
7128
7129 2000-08-11  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
7130
7131         * parse.y (template_arg): Add rule for template qualified with
7132         global scope.
7133
7134 2000-08-11  Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
7135
7136         * decl2.c (add_function): Reorganize.
7137         (arg_assoc): Do not consider function template decls.
7138
7139 2000-08-11  Jason Merrill  <jason@redhat.com>
7140
7141         * decl.c (lookup_name_real): Don't forget the TYPENAME_TYPE we're
7142         looking inside.
7143
7144 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
7145
7146         * cp-tree.h (resolve_scope_to_name): Remove unused prototype.
7147         (lookup_nested_tag): Likewise.
7148
7149         * decl2.c (grokfield): Fix comment to reflect many types of _DECLs
7150         can be produced.
7151
7152 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
7153
7154         * parse.y (named_complex_class_head_sans_basetype): Remove
7155         always true if.
7156
7157 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
7158
7159         * decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Build
7160         explicit TEMPLATE_ID_EXPR args.
7161         (build_expr_from_tree, case CALL_EXPR): Likewise.
7162
7163 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
7164
7165         * decl.c (check_tag_decl): Diagnose typename's which don't
7166         declare anything.
7167
7168 2000-08-10  Nathan Sidwell  <nathan@codesourcery.com>
7169
7170         * init.c (build_aggr_init): Reject bogus array initializers
7171         early.
7172
7173 2000-08-09  Nathan Sidwell  <nathan@codesourcery.com>
7174
7175         * rtti.c (build_dynamic_cast_1): Set "C" linkage for new abi
7176         runtime.
7177         * cp/tinfo.cc (__dynamic_cast): Likewise.
7178         * cp/inc/cxxabi.h (__dynamic_cast): Likewise.
7179
7180 2000-08-09  Nathan Sidwell  <nathan@codesourcery.com>
7181
7182         * cvt.c (convert_to_pointer_force): Fix error message when
7183         attempting to cast from ambiguous base.
7184
7185 2000-08-08  Jason Merrill  <jason@redhat.com>
7186
7187         * pt.c (tsubst_aggr_type): Bail if creating the argvec fails.
7188         (tsubst_template_arg_vector): Likewise.
7189
7190         * decl2.c (build_anon_union_vars): Choose the largest field; don't
7191         assume that one will be as large as the union.
7192
7193 2000-08-07  Kazu Hirata  <kazu@hxi.com>
7194
7195         * cp-tree.h (CLASSTYPE_HAS_PRIMARY_BASE_P): Fix a comment typo.
7196         * decl.c (pop_labels): Likewise.
7197
7198 2000-08-04  Jeffrey Oldham  <oldham@codesourcery.com>
7199
7200         * inc/cxxabi.h (__pbase_type_info): Changed member names to match
7201         specifications.
7202         (__pointer_to_member_type_info): Likewise.
7203         (__base_class_info): Likewise.
7204         (__class_type_info): Likewise.
7205         (__si_class_type_info): Likewise.
7206         (__vmi_class_type_info): Likewise.
7207         * tinfo.cc (__si_class_type_info::__do_find_public_src):
7208         Changed member names to match specifications.
7209         (__vmi_class_type_info::__do_find_public_src): Likewise.
7210         (__si_class_type_info::__do_dyncast): Likewise.
7211         (__vmi_class_type_info::__do_dyncast): Likewise.
7212         (__si_class_type_info::__do_upcast): Likewise.
7213         (__vmi_class_type_info::__do_upcast): Likewise.
7214         * tinfo2.cc (__pbase_type_info::__do_catch): Likewise.
7215         (__pbase_type_info::__pointer_catch): Likewise.
7216         (__pointer_type_info::__pointer_catch): Likewise.
7217         (__pointer_to_member_type_info::__pointer_catch): Likewise.
7218
7219 2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>
7220
7221         * Make-lang.in (cc1plus): Depend on $(BACKEND), not stamp-objlist.
7222         * Makefile.in: Add C_OBJS, BACKEND; delete OBJS, OBJDEPS.
7223         (cc1plus): Link with $(BACKEND) and $(C_OBJS).
7224
7225 2000-08-04  Mark Mitchell  <mark@codesourcery.com>
7226
7227         * cp-tree.h (add_method): Change prototype.
7228         * class.c (add_method): Remove FIELDS parameter.  Add ERROR_P.
7229         Don't double the size of the method vector in the error case.
7230         (handle_using_decl): Adjust call to add_method.
7231         (add_implicitly_declared_members): Likewise.
7232         (clone_function_decl): Likewise.
7233         * decl2.c (check_classfn): Likewise.
7234         * semantics.c (finish_member_declaration): Likewise.
7235
7236 2000-08-04  Joseph S. Myers  <jsm28@cam.ac.uk>
7237
7238         * decl.c (flag_isoc94): New variable.
7239
7240 2000-08-02  Jason Merrill  <jason@redhat.com>
7241
7242         * pt.c (do_type_instantiation): Add complain parm; don't complain
7243         if called recursively.
7244         * cp-tree.h, parse.y: Adjust.
7245
7246 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
7247
7248         * decl2.c: Silently ignore -Wstrict-prototypes; warn about
7249         -Wno-strict-prototypes.
7250
7251         * g++spec.c: Adjust type of second argument to
7252         lang_specific_driver, and update code as necessary.
7253
7254         * cp-tree.h: Don't prototype min_precision here.
7255         (my_friendly_assert): Cast expression to void.
7256         * semantics.c (do_poplevel): Initialize scope_stmts.
7257
7258 2000-08-02  Mark Mitchell  <mark@codesourcery.com>
7259
7260         * cp-tree.h (DECL_NEEDED_P): Tweak.
7261
7262 2000-07-28  Jason Merrill  <jason@redhat.com>
7263
7264         * lang-specs.h: Use %i in rule for .ii files.
7265
7266 2000-07-31  Zack Weinberg  <zack@wolery.cumb.org>
7267
7268         * lang-specs.h: Rename cpp to cpp0 and/or tradcpp to tradcpp0.
7269
7270 2000-07-30  Mark Mitchell  <mark@codesourcery.com>
7271
7272         Allow indirect primary bases.
7273         * cp-tree.h (struct lang_type): Remove vfield_parent.  Add
7274         primary_base.
7275         (CLASSTYPE_VFIELD_PARENT): Remove.
7276         (CLASSTYPE_PRIMARY_BINFO): Reimplement.
7277         (BINFO_PRIMARY_BINFO): Remove.
7278         (CLASSTYPE_HAS_PRIMARY_BASE_P): Reimplement.
7279         (BINFO_VBASE_PRIMARY_P): Likewise.
7280         (BINFO_PRIMARY_BASE_OF): New macro.
7281         (BINFO_INDIRECT_PRIMARY_P): Likewise.
7282         (get_primary_binfo): New function.
7283         * decl.c (lang_mark_tree): Make lang_type::primary_base.
7284         * class.c (vcall_offset_data_s): Rename to ...
7285         (vtbl_init_data_s): ... this.  Rename primary_p to primary_vtbl_p,
7286         and add ctor_vtbl_p.
7287         (get_derived_offset): Use get_primary_binfo.
7288         (dfs_mark_primary_bases): Adjust handling of virtual primary
7289         bases.
7290         (mark_primary_bases): Likewise.
7291         (set_primary_base): Take a binfo, not an integer, as a
7292         representation of the primary base.
7293         (indirect_primary_base_p): Remove.
7294         (determine_primary_base): Adjust for indirect primary bases.
7295         (dfs_find_final_overrider): Fix typo in coment.
7296         (update_vtable_entry_for_fn): Use get_primary_binfo.
7297         (layout_nonempty_base_or_field): Tweak.
7298         (build_base_fields): Adjust for new primary base semantics.
7299         (dfs_propagate_binfo_offsets): Remove.
7300         (propagate_binfo_offsets): Rewrite.
7301         (dfs_set_offset_for_shared_vbases): Remove.
7302         (layout_virtual_bases): Don't use it.
7303         (layout_class_type): Set CLASSTYPE_SIZE correctly under the new
7304         ABI.
7305         (finish_struct_1): Set CLASSTYPE_PRIMARY_BINFO, not
7306         CLASSTYPE_VFIELD_PARENT.
7307         (dfs_get_primary_binfo): New function.
7308         (get_primary_binfo): Likewise.
7309         (dump_class_hierarchy_r): Tweak printing of primary bases.
7310         (build_vtbl_initializer): Fix typo in comments.  Use
7311         vtbl_init_data.
7312         (build_vcall_and_vbase_vtbl_entries): Likewise.
7313         (build_vbaes_offset_vtbl_entries): Likewise.
7314         (dfs_build_vcall_offset_vtbl_entries): Adjust setting of
7315         BV_VCALL_INDEX to handle indirect primary bases.
7316         (build_vcall_offset_vtbl_entries): Use vtbl_init_data.
7317         (build_rtti_vtbl_entries): Likewise.
7318         * search.c (get_shared_vbase_if_not_primary): Tweak.
7319         (find_vbase_instance): Likewise.
7320         (binfo_for_vtable): Simplify.
7321         * tree.c (unshare_base_binfos): Clear BINFO_PRIMARY_BASE_OF.
7322         (make_binfo): Make it have 11 entries.
7323
7324 2000-07-30  Alex Samuel  <samuel@codesourcery.com>
7325
7326         * mangle.c (DECL_TEMPLATE_ID_P): Remove.
7327         (CLASSTYEP_TEMPLATE_ID_P): Check template info, and context when
7328         ascertaining primaryness.
7329         (G): Remove template_args.
7330         (decl_is_template_id): New function.
7331         (write_encoding): Use decl_is_template_id.
7332         (write_name): Likewise.  Handle type_decls.  Get main variant of
7333         type decls.
7334         (write_nested_name): Likewise.
7335         (write_prefix): Likewise.
7336         (write_template_prefix): Likewise.
7337         (write_special_name_constructor): Remove defunct production from
7338         comment.
7339         (write_bare_function_type): Remove comment about absent parameter.
7340         (write_template_template_arg): Add missing grammar production to
7341         comment.
7342
7343 2000-07-27  Jason Merrill  <jason@redhat.com>
7344
7345         * decl.c (duplicate_decls): If common_type produces a non-typedef
7346         type for a typedef, just use the old type.
7347
7348 2000-07-27  Mark Mitchell  <mark@codesourcery.com>
7349
7350         * cp-tree.h (function_depth): Declare.
7351         (verify_stmt_tree): Likewise.
7352         (find_tree): Likewise.
7353         * decl.c (function_depth): Give it external linkage.
7354         * optimize.c (optimize_function): Increment and decrement it.
7355         * tree.c (verify_stmt_tree_r): New function.
7356         (verify_stmt_tree): Likewise.
7357         (find_tree_r): Likewise.
7358         (find_tree): Likewise.
7359
7360 2000-07-27  Jason Merrill  <jason@redhat.com>
7361
7362         * pt.c (for_each_template_parm_r, case RECORD_TYPE): Use
7363         TYPE_PTRMEMFUNC_P.
7364         * cp-tree.h (TYPE_TEMPLATE_INFO): Check for TYPE_LANG_SPECIFIC.
7365
7366 2000-07-26  Mark Mitchell  <mark@codesourcery.com>
7367
7368         * decl.c (start_cleanup_fn): Mark the function as `inline'.
7369         * decl2.c (get_guard): Call cp_finish_decl, not
7370         rest_of_decl_compilation, for local guards.
7371         * lex.c (do_identifier): Remove unused variable.
7372
7373 Wed Jul 26 15:05:51 CEST 2000   Marc Espie <espie@cvs.openbsd.org>
7374
7375         * parse.y:  Add missing ';'.
7376
7377 2000-07-26  Mark Mitchell  <mark@codesourcery.com>
7378
7379         * parse.y (empty_parms): Use `()', not `(...)', when in the scope
7380         of `extern "C++"'.
7381
7382 2000-07-25  Nathan Sidwell  <nathan@codesourcery.com>
7383
7384         Kill strict_prototype. Backwards compatibility only for
7385         non NO_IMPLICIT_EXTERN_C systems.
7386         * cp-tree.h (flag_strict_prototype): Remove.
7387         (strict_prototype): Remove.
7388         (strict_prototypes_lang_c, strict_prototypes_lang_cplusplus): Remove.
7389         * decl.c (maybe_push_to_top_level): Adjust.
7390         (pop_from_top_level): Adjust.
7391         (decls_match): Only allow sloppy parm matching for ancient
7392         system headers.
7393         (init_decl_processing): Adjust.
7394         (grokdeclarator): Adjust.
7395         * decl2.c (flag_strict_prototype): Remove.
7396         (strict_prototype): Remove.
7397         (strict_prototypes_lang_c, strict_prototypes_lang_cplusplus): Remove.
7398         (lang_f_options): Remove "strict-prototype".
7399         (unsupported-options): Add "strict-prototype".
7400         * lex.c (do_identifier): Adjust.
7401         (do_scoped_id): Adjust.
7402         * parse.y (empty_parms): Adjust.
7403         * class.c (push_lang_context): Adjust.
7404         (pop_lang_context): Adjust.
7405         * typeck.c (comp_target_parms): Adjust.
7406
7407 2000-07-25  Nathan Sidwell  <nathan@codesourcery.com>
7408
7409         * decl.c (poplevel): Deal with anonymous variables at for scope.
7410         (maybe_inject_for_scope_var): Likewise.
7411
7412 2000-07-25  Zack Weinberg  <zack@wolery.cumb.org>
7413
7414         * decl.c: Remove all signal handling code, now done in toplev.c.
7415
7416 2000-07-23  Mark Mitchell  <mark@codesourcery.com>
7417
7418         * decl.c (make_rtl_for_nonlocal_decl): Rework.
7419
7420         * pt.c (lookup_template_class): Ensure that TYPE_CONTEXT is set
7421         correctly.
7422
7423 2000-07-20  Zack Weinberg  <zack@wolery.cumb.org>
7424
7425         * cp-tree.h: Use __FUNCTION__ not __PRETTY_FUNCTION__.
7426         Define my_friendly_assert and my_friendly_abort as macros
7427         which may call friendly_abort.  Prototype friendly abort, not
7428         my_friendly_abort or my_friendly_assert.
7429         * decl.c (signal_catch): Report the signal caught in the error
7430         message.  Call fatal directly.
7431         * typeck2.c (ack, my_friendly_assert): Delete.
7432         (my_friendly_abort): Rename to friendly_abort.  Expect file,
7433         line, and function parameters.  Report the abort code, then
7434         call fancy_abort.  Do not mask an abort if errors have
7435         already occurred.
7436
7437 2000-07-18  Nathan Sidwell  <nathan@codesourcery.com>
7438
7439         * typeck.c (comp_target_parms): Remove obsolete parameter.
7440         (comp_target_types): Adjust.
7441
7442 2000-07-17  Jason Merrill  <jason@redhat.com>
7443
7444         * typeck.c (mark_addressable): Never set TREE_USED.
7445         * call.c (build_call): Don't abort on calls to library functions
7446         that have been declared normally.
7447
7448         * typeck.c (build_binary_op): Fix grammar in warning.
7449
7450         * exception.cc (__eh_free): Fix prototype.
7451
7452         * decl2.c (finish_decl_parsing): Handle TEMPLATE_ID_EXPR.
7453
7454         * decl.c (pushdecl): Handle seeing an OVERLOAD in
7455         IDENTIFIER_NAMESPACE_VALUE.
7456
7457 2000-07-16  Mark Mitchell  <mark@codesourcery.com>
7458
7459         * cp-tree.h (THUNK_VCALL_OFFSET): Update documentation.
7460         * method.c (use_thunk): Correct handling of vcall offsets.
7461
7462 2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>
7463
7464         * .cvsignore: parse.h and parse.c have no cp- prefix.
7465
7466 2000-07-13  Mark Mitchell  <mark@codesourcery.com>
7467
7468         * .cvsignore: New file.
7469
7470 2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>
7471
7472         * lang-specs.h: Use the new named specs.  Remove unnecessary braces.
7473
7474 2000-07-12  Mark Mitchell  <mark@codesourcery.com>
7475
7476         * Makefile.in ($(PARSE_H)): Depend directly on parse.y.
7477         * parse.c: Remove.
7478         * parse.h: Likewise.
7479
7480 2000-07-11  Mark Mitchell  <mark@codesourcery.com>
7481
7482         * class.c (layout_class_type): Add pointers to virtual bases after
7483         base classes under the old ABI.
7484
7485 2000-07-10  Benjamin Chelf  <chelf@codesourcery.com>
7486
7487         * semantics.c (finish_for_stmt): Remove call to emit_line_note.
7488         (finish_continue_stmt): Likewise.
7489         (begin_for_stmt): Remove call to note_level_for_for.
7490         (finish_goto_stmt): Change call from build_min_nt
7491         to build_stmt.
7492         (finish_expr_stmt): Likewise.
7493         (begin_if_stmt): Likewise.
7494         (begin_while_stmt): Likewise.
7495         (finish_while_stmt): Likewise.
7496         (finish_return_stmt): Likewise.
7497         (begin_for_stmt): Likewise.
7498         (finish_for_stmt): Likewise.
7499         (finish_break_stmt): Likewise.
7500         (begin_switch_stmt): Likewise.
7501         (finish_case_label): Likewise.
7502         (genrtl_try_block): Likewise.
7503         (begin_try_block): Likewise.
7504         (begin_handler): Likewise.
7505         (begin_compound_stmt): Likewise.
7506         (finish_asm_stmt): Likewise.
7507         (finish_label_stmt): Likewise.
7508         (add_decl_stmt): Likewise.
7509         (finish_subobject): Likewise.
7510         (finish_decl_cleanup): Likewise.
7511         (finish_named_return_value): Likewise.
7512         (setup_vtbl_ptr): Likewise.
7513         (add_scope_stmt): Likewise.
7514         * decl.c (finish_constructor_body): Likewise.
7515         (finish_destructor_body): Likewise.
7516         * optimize.c (copy_body_r): Likewise.
7517         (initialize_inlined_parameters): Likewise.
7518         (declare_return_variable): Likewise.
7519         (expand_call_inline): Likewise.
7520
7521 2000-07-10  Jakub Jelinek  <jakub@redhat.com>
7522
7523         * semantics.c (expand_body): Sync interface information
7524         at the end of function body expansion.
7525
7526 2000-07-09  Jason Merrill  <jason@redhat.com>
7527
7528         * init.c (build_new_1): Bail early if the call to new fails.
7529
7530         * decl.c (compute_array_index_type): Check specifically for
7531         an INTEGER_CST, not just TREE_CONSTANT.
7532
7533         * decl.c (duplicate_decls): Don't call duplicate_decls on
7534         the DECL_TEMPLATE_RESULT.
7535         (decls_match): Return 0 if the DECL_TEMPLATE_RESULTs have different
7536         codes.
7537
7538         * error.c (dump_template_bindings): Don't crash if we had an
7539         invalid argument list.
7540
7541         * typeck.c (c_expand_start_case): Do narrowing here.
7542         * semantics.c (finish_switch_cond): Not here.
7543
7544 2000-07-09  Hidvegi Zoli  <hzoli@austin.ibm.com>
7545
7546         * parse.y (asm_clobbers): Do string concatenation.
7547
7548 2000-07-09  Mark Mitchell  <mark@codesourcery.com>
7549
7550         * decl.c (pushtag): Don't put local classes in template functions
7551         on the local_classes list.
7552
7553 2000-07-04  Scott Snyder  <snyder@fnal.gov>
7554
7555         * decl2.c (get_guard): Add missing return for old ABI local
7556         variable case.
7557
7558 2000-07-09  Mark Mitchell  <mark@codesourcery.com>
7559
7560         * cp-tree.h (char_type_p): New function.
7561         * decl.c (init_decl_processing): Don't initialize
7562         signed_wchar_type_node or unsigned_wchar_type_node.
7563         (complete_array_type): Handle brace-enclosed string-constants.
7564         * rtti.c (emit_support_tinfos): Remove #if 0'd code.
7565         * tree.c (char_type_p): New function.
7566         * typeck2.c (digest_init): Use char_type_p.
7567
7568 2000-07-06  Nathan Sidwell  <nathan@codesourcery.com>
7569
7570         * pt.c (tsubst): Don't layout type, if it's error_mark.
7571
7572 2000-07-06  Nathan Sidwell  <nathan@codesourcery.com>
7573
7574         * pt.c (instantiate_pending_templates): Reset template level.
7575
7576 2000-07-05  Jason Merrill  <jason@redhat.com>
7577
7578         * call.c (joust): Don't complain about `operator char *()' beating
7579         `operator const char *() const'.
7580
7581 2000-07-04  scott snyder  <snyder@fnal.gov>
7582             Jason Merrill  <jason@redhat.com>
7583
7584         * repo.c (repo_get_id): Handle the case where a class with virtual
7585         bases has a null TYPE_BINFO_VTABLE.
7586
7587 2000-07-04  Kevin Buhr  <buhr@stat.wisc.edu>
7588             Jason Merrill  <jason@redhat.com>
7589
7590         * parse.y (member_init): Just pass in the type.
7591         * init.c (expand_member_init): Handle getting a type.
7592
7593 2000-07-04  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
7594             Jason Merrill  <jason@redhat.com>
7595
7596         * decl.c (finish_function): Warn if a function has no return
7597         statement.
7598         Suggested by Andrew Koenig.
7599         * typeck.c (check_return_expr): Do set current_function_returns_value
7600         if we got an error_mark_node.
7601
7602 2000-07-03  Nathan Sidwell  <nathan@codesourcery.com>
7603
7604         * decl2.c (push_decl_namespace): Push the original namespace.
7605
7606 2000-07-03  Nathan Sidwell  <nathan@codesourcery.com>
7607
7608         * pt.c (instantiate_class_template): Set CLASSTYPE_VBASECLASSES.
7609         * semantics.c (begin_class_definition): Clear it.
7610
7611 2000-07-02  Benjamin Chelf  <chelf@codesourcery.com>
7612
7613         * cp-tree.h (genrtl_goto_stmt): Remove declaration.
7614         (genrtl_expr_stmt): Likewise.
7615         (genrtl_decl_stmt): Likewise.
7616         (genrtl_if_stmt): Likewise.
7617         (genrtl_while_stmt): Likewise.
7618         (genrtl_do_stmt): Likewise.
7619         (genrtl_return_stmt): Likewise.
7620         (genrtl_for_stmt): Likewise.
7621         (genrtl_break_stmt): Likewise.
7622         (genrtl_continue_stmt): Likewise.
7623         (genrtl_scope_stmt): Likewise.
7624         (genrtl_switch_stmt): Likewise.
7625         (genrtl_case_label): Likewise.
7626         (genrtl_begin_compound_stmt): Likewise.
7627         (genrtl_finish_compound_stmt): Likewise.
7628         (genrtl_compound_stmt): Likewise.
7629         (genrtl_asm_stmt): Likewise.
7630
7631         * init.c (begin_init_stmts): Remove call to
7632         genrtl_begin_compound_stmt.
7633         (finish_init_stmts): Remove call to genrtl_finish_compound_stmt.
7634
7635         * semantics.c (lang_expand_stmt): Changed call to
7636         genrtl_compound_stmt to ignore return value.
7637
7638 2000-07-02  Mark Mitchell  <mark@codesourcery.com>
7639
7640         * mangle.c (canonicalize_for_substitution): Return the canonical
7641         variant of a type.
7642
7643         * decl.c (duplicate_decls): Preserve DECL_ORIGINAL_TYPE for a
7644         TYPE_DECL.
7645         * typeck.c (commonparms): Remove obstack manipulations.
7646
7647 2000-07-01  Benjamin Chelf  <chelf@codesourcery.com>
7648
7649         * Make-lang.in (cc1plus$(exeext)): Added c-semantics.o.
7650
7651         * Makefile.in (OBJS): Added ../c-semantics.o.
7652         (OBJDEPS): Likewise.
7653
7654         * cp-tree.h (TREE_LANG_FLAG_?): Moved common documentation to
7655         ../c-common.h.
7656         (struct stmt_tree): Added comment.
7657         (current_function_name_declared): Removed.
7658         (stmts_are_full_exprs_p): Likewise.
7659         (genrtl_do_pushlevel): Likewise.
7660         (genrtl_clear_out_block): Likewise.
7661         (COMPOUND_STMT_NO_SCOPE): Moved to ../c-common.h.
7662         (DECL_ANON_UNION_ELEMS): Likewise.
7663         (emit_local_var): Likewise.
7664         (make_rtl_for_local_static): Likewise.
7665         (do_case): Likewise.
7666         (expand_stmt): Likewise.
7667         (genrtl_decl_cleanup): Likewise.
7668         (c_expand_asm_operands): Likewise.
7669         (c_expand_return): Likewise.
7670         (c_expand_start_case): Likewise.
7671
7672         * decl.c (make_rtl_for_local_static): Moved to c-semantics.c.
7673         (emit_local_var): Likewise.
7674         (initialize_local_var): Change reference to
7675         stmts_are_full_exprs_p to call to stmts_are_full_exprs_p().
7676         Change reference to stmts_are_full_exprs_p to
7677         current_stmt_tree->stmts_are_full_exprs_p.
7678         (push_cp_function_context): Likewise.
7679
7680         * expect.c (expand_throw): Change reference to
7681         stmts_are_full_exprs_p.
7682
7683         * init.c (build_aggr_init): Change reference to
7684         stmts_are_full_exprs_p.
7685         (build_vec_init): Likewise.
7686
7687         * optimize.c (maybe_clone_body): Change reference to
7688         current_function_name_declared to
7689         cp_function_chain->name_declared.
7690
7691         * pt.c (instantiate_decl): Change reference to
7692         current_function_name_declared to
7693         cp_function_chain->name_declared.
7694
7695         * semantics.c (expand_cond): Moved declaration to c-common.h.
7696         (genrtl_do_pushlevel): Moved to c-semantics.c.
7697         (genrtl_clear_out_block): Likewise.
7698         (genrtl_goto_stmt): Likewise.
7699         (genrtl_expr_stmt): Likewise.
7700         (genrtl_decl_stmt): Likewise.
7701         (gerntl_if_stmt): Likewise.
7702         (genrtl_while_stmt): Likewise.
7703         (genrtl_do_stmt): Likewise.
7704         (genrtl_return_stmt): Likewise.
7705         (genrtl_for_stmt): Likewise.
7706         (genrtl_break_stmt): Likewise.
7707         (genrtl_continue_stmt): Likewise.
7708         (genrtl_scope_stmt): Likewise.
7709         (genrtl_switch_stmt): Likewise.
7710         (genrtl_case_label): Likewise.
7711         (genrtl_begin_compound_stmt): Likewise.
7712         (genrtl_finish_compound_stmt): Likewise.
7713         (genrtl_compound_stmt): Likewise.
7714         (genrtl_asm_stmt): Likewise.
7715         (genrtl_decl_cleanup): Likewise.
7716         (expand_cond): Likewise.
7717         (expand_stmt): Renamed to ...
7718         (lang_expand_stmt): ... this.
7719         (lang_expand_expr_stmt): Initialize.
7720         (set_current_function_name_declared): Likewise.
7721         (stmts_are_full_exprs_p): Likewise.
7722         (current_function_name_declared): Likewise.
7723         (anon_aggr_type_p): Likewise.
7724         (do_poplevel): Change reference to
7725         stmts_are_full_exprs_p to call to stmts_are_full_exprs_p().
7726         Change reference to stmts_are_full_exprs_p to
7727         current_stmt_tree->stmts_are_full_exprs_p.
7728         (add_tree): Likewise.
7729         (finish_expr_stmt): Likewise.
7730         (prep_stmt): Likewise.
7731         (lang_expand_stmt): Likewise.
7732         (begin_compound_stmt): Change reference to
7733         current_function_name_declared to
7734         cp_function_chain->name_declared and call to
7735         current_function_name_declared().
7736         (setup_vtbl_ptr): Likewise.
7737         (genrtl_do_poplevel): Removed.
7738
7739 2000-06-30  Jason Merrill  <jason@redhat.com>
7740
7741         * init.c (init_init_processing): Go back to aligning like
7742         double_type_node for old ABI.
7743         (get_cookie_size): Make cookie larger if we get a type that needs
7744         more alignment.
7745         (build_vec_delete): Call it.
7746
7747         * typeck.c (qualify_type_recursive): New fn.
7748         (composite_pointer_type): Use it.
7749         (build_binary_op): Use composite_pointer_type.
7750
7751 2000-06-24  Carlos O'Ryan  <coryan@cs.wustl.edu>
7752             Jason Merrill  <jason@redhat.com>
7753
7754         * typeck.c (check_return_expr): Don't complain about returning
7755         NULL from operator new if -fcheck-new.
7756         * cp-tree.h: Declare flag_check_new here.
7757         * init.c: Not here.
7758
7759 2000-06-28  Alex Samuel  <samuel@codesourcery.com>
7760
7761         * mangle.c (find_substitution): Use same_type_p.
7762         (write_encoding): Don't check for substitutions.
7763
7764 2000-06-30  Nathan Sidwell  <nathan@codesourcery.com>
7765
7766         * parse.y (expr_no_comma_rangle): New non-terminal.
7767         (template_parm): Use it for default parameter case.
7768         (template_arg): Use it.
7769         (expr_no_commas): Remove commented out undefined extensions.
7770         * Makefile.in (CONFLICTS): Adjust to 33 s/r & 48 r/r.
7771         * parse.h, parse.c: Rebuilt.
7772
7773 2000-06-30  Mark Mitchell  <mark@codesourcery.com>
7774
7775         * semantics.c (genrtl_asm_stmt): Don't decay input operands here.
7776         (finish_asm_stmt): Do it here, instead.
7777
7778         * cp-tree.h (ridpointers): Don't declare.
7779         * decl.c (record_builtin_type): Use CP_RID_MAX instead of RID_MAX.
7780         (record_builtin_java_type): Likewise.
7781         (init_decl_processing): Likewise.
7782         * lex.c: Move inclusion of lex.h.
7783         (ridpointers): Don't define.
7784         (init_parse): Initialize ripdointers.  Use CP_RID_MAX instead of
7785         RID_MAX.
7786         * lex.h (enum rid): Rename to ...
7787         (enum cp_rid): ... this.
7788         (ridpointers): Don't declare.
7789         * parse.y: Move inclusion of lex.h.
7790         * parse.c: Regenerated.
7791         * spew.c: Move inclusion of lex.h.
7792
7793         * cp-tree.h (struct language_function): Remove temp_name_counter.
7794         (temp_name_counter): Remove.
7795         (get_temp_name): Change prototype.
7796         (get_guard): New function.
7797         (get_guard_cond): Likewise.
7798         (set_guard): Likewise.
7799         * cvt.c (build_up_reference): Adjust call to get_temp_name.
7800         * decl.c (expand_static_init): Use get_guard and friends to
7801         implement guard variables.
7802         * decl2.c (get_temp_name): Assume that the variables created are
7803         always static.
7804         (get_sentry): Rename to ...
7805         (get_guard): ... this.  Implement new ABI guard variables.
7806         (get_guard_bits): New function.
7807         (get_guard_cond): Likewise.
7808         (set_guard): Likewise.
7809         (start_static_initialization_or_destruction): Use them.
7810         (do_static_initialization): Replace sentry with guard throughout.
7811         (do_static_destruction): Likewise.
7812         * init.c (create_temporary_var): Add comment.
7813
7814 2000-06-28  Alex Samuel  <samuel@codesourcery.com>
7815
7816         * mangle.c (find_substitution): Use same_type_p.
7817         (write_encoding): Don't check for substitutions.
7818
7819 2000-06-30  Nathan Sidwell  <nathan@codesourcery.com>
7820
7821         * parse.y (expr_no_comma_rangle): New non-terminal.
7822         (template_parm): Use it for default parameter case.
7823         (template_arg): Use it.
7824         (expr_no_commas): Remove commented out undefined extensions.
7825         * Makefile.in (CONFLICTS): Adjust to 33 s/r & 48 r/r.
7826         * parse.h, parse.c: Rebuilt.
7827
7828 2000-06-29  Mark Mitchell  <mark@codesourcery.com>
7829
7830         * cp-tree.h (flag_const_strings): Remove.
7831         (warn_parentheses): Likewise.
7832         (warn_format): Likewise.
7833         (common_type): Likewise.
7834         (default_conversion): Likewise.
7835         (build_binary_op): Likewise.
7836         (cp_build_binary_op): New macro.
7837         * call.c (build_new_op): Use cp_build_binary_op instead of
7838         build_binary_op.
7839         * class.c (build_vtable_entry_ref): Likewise.
7840         * decl.c (expand_static_init): Likewise.
7841         (compute_array_index_type): Likewise.
7842         (build_enumerator): Likewise.
7843         * decl2.c (delete_sanity): Likewise.
7844         (start_static_initialization_or_destruction): Likewise.
7845         * error.c (dump_type_suffix): Likewise.
7846         * init.c (resolve_offset_ref): Likewise.
7847         (build_new): Likewise.
7848         (build_new_1): Likewise.
7849         (build_vec_delete_1): Likewise.
7850         (build_vec_init): Likewise.
7851         (build_delete): Likewise.
7852         * rtti.c (synthesize_tinfo_fn): Likewise.
7853         (synthesize_tinfo_var): Likewise.
7854         * search.c (expand_upcast_fixups): Likewise.
7855         (fixup_all_virtual_upcast_offsets): Likewise.
7856         * typeck.c (build_array_ref): Likewise.
7857         (get_member_function_from_ptrfunc): Likewise.
7858         (build_binary_op): Add parameter.
7859         (pointer_int_sum): Use cp_build_binary_op.
7860         (pointer_diff): Likewise.
7861         (build_modify_expr): Likewise.
7862         (get_delta_difference): Likewise.
7863         (build_ptrmemfunc): Likewise.
7864
7865 2000-06-29  Nathan Sidwell  <nathan@codesourcery.com>
7866
7867         * cp-tree.h (SET_DECL_ARTIFICIAL): Remove.
7868         * decl.c (create_implicit_typedef): Adjust.
7869         * decl2.c (build_artificial_parm): Adjust.
7870         * method.c (implicitly_declare_fn): Adjust.
7871         * pt.c (push_inline_template_parms_recursive): Adjust.
7872         (process_template_parm): Adjust.
7873         (overloaded_template_name): Adjust.
7874         * semantics.c (finish_template_template_parm): Adjust.
7875
7876 2000-06-28  Mark Mitchell  <mark@codesourcery.com>
7877
7878         * cp-tree.h (CLEAR_BINFO_NEW_VTABLE_MARKED): Remove.
7879         * class.c (update_vtable_entry_for_fn): Correct logic for deciding
7880         where to emit thunks.
7881         (build_vtt): Adjust call to build_vtt_inits.
7882         (build_vtt_inits): Add parameter to indicate whether or not
7883         sub-VTTs for virtual bases should be included.  Adjust handling of
7884         construction vtables.
7885         (get_matching_base): New function.
7886         (dfs_build_vtt_inits): Rename to ...
7887         (dfs_build_secondary_vptr_vtt_inits): Adjust handling of
7888         construction vtables.
7889         (dfs_fixup_binfo_vtbls): Likewise.
7890         (build_ctor_vtbl_groups): Build construction vtables for virtual
7891         bases, too.
7892         (accumulate_vtbl_inits): Tweak logic for deciding whether or not
7893         to build construction vtbls.
7894         (dfs_accumulate_vtbl_inits): Adjust handling of
7895         construction vtables.
7896
7897         * pt.c (tsubst, case TEMPLATE_TEMPLATE_PARM): Handle cv-qualified
7898         types correctly.
7899
7900 2000-06-27  Mark Mitchell  <mark@codesourcery.com>
7901
7902         * decl.c (grokfndecl): Set DECL_CONTEXT for static functions too.
7903
7904 2000-06-26  Nathan Sidwell  <nathan@codesourcery.com>
7905
7906         * search.c (hides): Remove.
7907         (is_subobject_of_p): Add most_derived parameter. Use
7908         CANONICAL_BINFO.
7909         (lookup_field_queue_p): Adjust.
7910         (lookup_field_r): Adjust.
7911
7912 2000-06-26  Nathan Sidwell  <nathan@codesourcery.com>
7913
7914         * decl2.c (handle_class_head): Bash typedefs to the type's main
7915         decl.
7916
7917 2000-06-25  Mark Mitchell  <mark@codesourcery.com>
7918
7919         * cp-tree.h (genrtl_begin_stmt_expr): Rename to ...
7920         (begin_global_stmt_expr): ... this.
7921         (genrtl_finish_stmt_expr): Rename to ...
7922         (finish_global_stmt_expr): ... this.
7923         * init.c (begin_init_stmts): Adjust calls.
7924         (finish_init_stmts): Likewise.
7925         * semantics.c (genrtl_begin_stmt_expr): Rename to ...
7926         (begin_global_stmt_expr): ... this.
7927         (genrtl_finish_stmt_expr): Rename to ...
7928         (finish_global_stmt_expr): ... this.
7929
7930 2000-06-25 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
7931
7932         * search.c (lookup_member): Fix typo in comment.
7933
7934 2000-06-24  Jason Merrill  <jason@redhat.com>
7935
7936         * decl.c (pushdecl): Don't set DECL_CONTEXT from current_namespace.
7937         (push_namespace): Set DECL_CONTEXT for a new NAMESPACE_DECL.
7938
7939 2000-06-24  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
7940
7941         * parse.y (complex_direct_notype_declarator): Support global_scope.
7942         * Makefile.in: Adjust conflict count.
7943
7944 2000-06-23  Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
7945
7946         * parse.y (template_arg): Convert TEMPLATE_DECL
7947         that is a template template parameter to
7948         TEMPLATE_TEMPLATE_PARM here.
7949
7950         * cp-tree.def (TEMPLATE_TEMPLATE_PARM): Adjust comment.
7951         * cp-tree.h (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): New macro.
7952         (copy_template_template_parm): Adjust prototype.
7953         * decl.c (grokdeclarator): Remove dead code.
7954         * pt.c (process_template_parm): Tidy.
7955         (lookup_template_class): Construct nodes in
7956         copy_template_template_parm.
7957         (tsubst): Pass TEMPLATE_DECL rather than IDENTIFIER_NODE to
7958         lookup_template_class.  Use TYPE_TI_TEMPLATE.
7959         * tree.c (copy_template_template_parm): Add NEWARGS
7960         parameter.
7961         (mapcar): Adjust call to copy_template_template_parm.
7962         * typeck.c (comptypes): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL.
7963         * method.c (build_template_template_parm_names): Change error
7964         code to avoid compilation warning.
7965
7966         * gxxint.texi: Document template template parameter
7967         name mangling.
7968
7969 2000-06-21  Alex Samuel  <samuel@codesourcery.com>
7970
7971         * Make-lang.in (CXX_LIB2FUNCS): Add cp-demangle.o and dyn-string.o.
7972         (CXX_LIB2SRCS): Add cp-demangle.c and dyn-string.c.
7973         (cp-demangle.o): New rule.
7974         (dyn-string.o): Likewise.
7975         * inc/cxxabi.h (__cxa_demangle): New declaration.
7976
7977 2000-06-22  Mark Mitchell  <mark@codesourcery.com>
7978
7979         * cp-tree.h (BV_USE_VCALL_INDEX_P): New macro.
7980         (BV_GENERATE_THUNK_WITH_VTABLE_P): Likewise.
7981         (lang_decl_flags): Add generate_with_vtable_p.  Make vcall_offset
7982         a tree, not an int.
7983         (THUNK_GENERATE_WITH_VTABLE_P): New macro.
7984         (make_thunk): Change prototype.
7985         (emit_thunk): Rename to use_thunk.
7986         (mangle_thunk): Change prototype.
7987         * class.c (get_derived_offset): Simplify.
7988         (copy_virtuals): Clear BV_USE_VCALL_INDEX_P and
7989         BV_GENERATE_THUNK_WITH_VTABLE_P.
7990         (build_primary_vtable): Simplify.
7991         (add_virtual_function): Use BV_FN, rather than TREE_VALUE.
7992         (dfs_find_base): Remove.
7993         (update_vtable_entry_for_fn): Correct bug in finding the base
7994         where a virtual function was first declared.  Figure out whether
7995         or not to emit a vcall-thunk with the vtables in which it appears.
7996         Correct logic for deciding whether to use an ordinary thunk, or a
7997         vcall thunk.
7998         (finish_struct_1): Remove unnecssary code.
7999         (build_vtbl_initializer): Use ssize_int for the running counter of
8000         negative indices.
8001         (build_vtbl_initializer): Only use vcall thunks where necessary.
8002         Mark thunks as needing to be emitted with their vtables, or not.
8003         (build_vbase_offset_vtbl_entries): Adjust for use of ssize_int in
8004         indices.  Use size_binop.
8005         (dfs_build_vcall_offset_vtbl_entries): Don't rely on
8006         BINFO_PRIMARY_MARKED_P here.  Use BV_FN consistently.  Use
8007         size_binop.
8008         (build_rtti_vtbl_entries): Adjust call to build_vtable_entry.
8009         (build_vtable_entry): Mark thunks as needing to be emitted with
8010         their vtables, or not.
8011         * decl.c (lang_mark_tree): Mark the vcall_offset in a thunk.
8012         * decl2.c (mark_vtable_entries): Use use_thunk instead of
8013         emit_thunk.
8014         * dump.c (dequeue_and_dump): Remove dead code.  Dump new thunk
8015         information.
8016         * error.c (dump_expr): Use BV_FN.
8017         * mangle.c (mangle_thunk): Adjust now that vcall_offset is a tree,
8018         not an int.
8019         * method.c (make_thunk): Likewise.
8020         (emit_thunk): Rename to use_thunk.  Allow callers to decide
8021         whether or not to actually emit the thunk.  Adjust for changes in
8022         representation of vcall offsets.
8023         * search.c (dfs_get_pure_virtuals): Use BV_FN.
8024         * semantics.c (emit_associated_thunks): New function.
8025         (expand_body): Use it.
8026         * ir.texi: Adjust decriptions of thunks.
8027
8028 2000-06-22  Jason Merrill  <jason@redhat.com>
8029
8030         * pt.c (tsubst_decl, case FUNCTION_DECL): Clear DECL_SAVED_TREE.
8031         (tsubst_friend_function): Copy it here.
8032
8033         * decl.c (grok_op_properties): Fix typo.
8034
8035         * decl2.c (delete_sanity): Clarify warning, avoid failure on
8036         deleting void*.
8037
8038         * pt.c (check_explicit_specialization): Clarify error.
8039
8040         * decl.c (pushdecl): Also pull out one of the FUNCTION_DECLs from
8041         an old OVERLOAD when we're declaring a non-function.
8042         (pushdecl, destroy_local_var): Check for error_mark_node.
8043         (warn_extern_redeclared_static): Also bail early if
8044         we're a CONST_DECL.
8045         (push_overloaded_decl): Ignore an old error_mark_node.
8046
8047 2000-06-22  Nathan Sidwell  <nathan@codesourcery.com>
8048
8049         * call.c (build_x_va_arg): Check if in a template decl.
8050         * pt.c (tsubst_copy, case VA_ARG_EXPR): Use build_x_va_arg.
8051
8052 2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8053
8054         * class.c (push_lang_context): TYPE_NAME gets you to the Java
8055         types DECLs.
8056         * decl.c (check_goto): Computed gotos assumed OK.
8057
8058 2000-06-20  Jason Merrill  <jason@redhat.com>
8059
8060         * pt.c (tsubst_decl, case TYPE_DECL): Fix test for TYPE_DECLs
8061         for which we don't need to look for instantiations.
8062
8063 2000-06-21  Nathan Sidwell  <nathan@codesourcery.com>
8064
8065         * parse.y (program): Always call finish_translation_unit.
8066         * parse.c, parse.h: Rebuilt.
8067
8068 2000-06-20  Zack Weinberg  <zack@wolery.cumb.org>
8069
8070         * method.c: Don't include hard-reg-set.h.
8071
8072 2000-06-20  Nathan Sidwell  <nathan@codesourcery.com>
8073
8074         * rtti.c (get_base_offset): Cope when vbase field is in a base.
8075
8076 2000-06-20  Nathan Sidwell  <nathan@codesourcery.com>
8077
8078         * call.c (build_conditional_expr): Use VOID_TYPE_P.
8079         * cvt.c (cp_convert_to_pointer): Likewise.
8080         (convert_to_void): Likewise.
8081         * error.c (dump_expr): Likewise.
8082         * except.c (complete_ptr_ref_or_void_ptr_p): Likewise.
8083         * init.c (build_delete): Likewise.
8084         * method.c (emit_thunk): Likewise.
8085         * optmize.c (declare_return_variable): Likewise.
8086         * rtti.c (get_tinfo_decl_dynamic): Likewise.
8087         (get_typeid): Likewise.
8088         (build_dynamic_cast_1): Likewise.
8089         * typeck.c (composite_pointer_type): Likewise.
8090         (common_type): Likewise.
8091         (build_indirect_ref): Likewise.
8092         (build_binary_op): Likewise.
8093         (build_x_compound_expr): Likewise.
8094         (check_return_expr): Likewise.
8095         * typeck2.c (add_exception_specifier): Likewise.
8096
8097         * mangle.c (write_method_parms): Use direct comparison for end
8098         of parmlist.
8099
8100 2000-06-19  Benjamin Chelf  <chelf@codesourcery.com>
8101
8102         * cp-tree.h (genrtl_try_block): Declare function.
8103         (genrtl_handler): Likewise.
8104         (genrtl_catch_block): Likewise.
8105         (genrtl_ctor_stmt): Likewise.
8106         (genrtl_subobject): Likewise.
8107         (genrtl_decl_cleanup): Likewise.
8108         (genrtl_do_poplevel): Likewise.
8109         (genrtl_do_pushlevel): Likewise.
8110         (genrtl_clear_out_block): Likewise.
8111         (genrtl_goto_stmt): Likewise.
8112         (genrtl_expr_stmt): Likewise.
8113         (genrtl_decl_stmt): Likewise.
8114         (genrtl_if_stmt): Likewise.
8115         (genrtl_while_stmt): Likewise.
8116         (genrtl_do_stmt): Likewise.
8117         (genrtl_return_stmt): Likewise.
8118         (genrtl_for_stmt): Likewise.
8119         (genrtl_break_stmt): Likewise.
8120         (genrtl_continue_stmt): Likewise.
8121         (genrtl_scope_stmt): Likewise.
8122         (genrtl_switch_stmt): Likewise.
8123         (genrtl_case_label): Likewise.
8124         (genrtl_begin_compound_stmt): Likewise.
8125         (genrtl_finish_compound_stmt): Likewise.
8126         (genrtl_compound_stmt): Likewise.
8127         (genrtl_asm_stmt): Likewise.
8128         (genrtl_named_return_value): Likewise.
8129         (genrtl_begin_stmt_expr): Likewise.
8130         (genrtl_finish_stmt_expr): Likewise.
8131         (finish_for_stmt): Removed first argument.
8132         (finish_switch_stmt): Likewise.
8133
8134         * semantics.c (genrtl_try_block): Define function.
8135         (genrtl_handler): Likewise.
8136         (genrtl_catch_block): Likewise.
8137         (genrtl_ctor_stmt): Likewise.
8138         (genrtl_subobject): Likewise.
8139         (genrtl_decl_cleanup): Likewise.
8140         (genrtl_do_poplevel): Likewise.
8141         (genrtl_do_pushlevel): Likewise.
8142         (genrtl_clear_out_block): Likewise.
8143         (genrtl_goto_stmt): Likewise.
8144         (genrtl_expr_stmt): Likewise.
8145         (genrtl_decl_stmt): Likewise.
8146         (genrtl_if_stmt): Likewise.
8147         (genrtl_while_stmt): Likewise.
8148         (genrtl_do_stmt): Likewise.
8149         (genrtl_return_stmt): Likewise.
8150         (genrtl_for_stmt): Likewise.
8151         (genrtl_break_stmt): Likewise.
8152         (genrtl_continue_stmt): Likewise.
8153         (genrtl_scope_stmt): Likewise.
8154         (genrtl_switch_stmt): Likewise.
8155         (genrtl_case_label): Likewise.
8156         (genrtl_begin_compound_stmt): Likewise.
8157         (genrtl_finish_compound_stmt): Likewise.
8158         (genrtl_compound_stmt): Likewise.
8159         (genrtl_asm_stmt): Likewise.
8160         (genrtl_named_return_value): Likewise.
8161         (genrtl_begin_stmt_expr): Likewise.
8162         (genrtl_finish_stmt_expr): Likewise.
8163         (finish_for_stmt): Removed first argument and generate rtl
8164         specific code.
8165         (finish_switch_stmt): Likewise.
8166         (do_poplevel): Removed generate rtl specific code.
8167         (do_pushlevel): Likewise.
8168         (add_tree): Likewise.
8169         (finish_goto_stmt): Likewise.
8170         (finish_expr_stmt): Likewise.
8171         (begin_if_stmt): Likewise.
8172         (finish_if_stmt_cond): Likewise.
8173         (finish_then_clause): Likewise.
8174         (begin_else_clause): Likewise.
8175         (finish_else_clause): Likewise.
8176         (finish_if_stmt): Likewise.
8177         (clear_out_block): Likewise.
8178         (begin_while_stmt): Likewise.
8179         (finish_while_stmt_cond): Likewise.
8180         (finish_while_stmt): Likewise.
8181         (begin_do_stmt): Likewise.
8182         (finish_do_body): Likewise.
8183         (finish_do_stmt): Likewise.
8184         (finish_return_stmt): Likewise.
8185         (begin_for_stmt): Likewise.
8186         (finish_for_init_stmt): Likewise.
8187         (finish_for_cond): Likewise.
8188         (finish_for_expr): Likewise.
8189         (finish_break_stmt): Likewise.
8190         (finish_continue_stmt): Likewise.
8191         (begin_switch_stmt): Likewise.
8192         (finish_switch_cond): Likewise.
8193         (finish_case_label): Likewise.
8194         (begin_try_block): Likewise.
8195         (begin_function_try_block): Likewise.
8196         (finish_try_block): Likewise.
8197         (finish_cleanup_try_block): Likewise.
8198         (finish_cleanup): Likewise.
8199         (finish_function_try_block): Likewise.
8200         (finish_handler_sequence): Likewise.
8201         (finish_function_handler_sequence): Likewise.
8202         (begin_handler): Likewise.
8203         (finish_handler_parms): Likewise.
8204         (begin_catch_block): Likewise.
8205         (finish_handler): Likewise.
8206         (begin_compound_stmt): Likewise.
8207         (finish_compound_stmt): Likewise.
8208         (finish_asm_stmt): Likewise.
8209         (finish_label_stmt): Likewise.
8210         (finish_label_decl): Likewise.
8211         (finish_subobject): Likewise.
8212         (finish_decl_cleanup): Likewise.
8213         (finish_named_return_value): Likewise.
8214         (begin_stmt_expr): Likewise.
8215         (finish_stmt_expr): Likewise.
8216
8217         * decl.c (initialize_local_var): Changed call to finish_expr_stmt
8218         to call genrtl_expr_stmt when appropriate.
8219
8220         * init.c (begin_init_stmts): Changed calls to begin_stmt_expr and
8221         begin_compound_expr to call genrtl_begin_stmt_expr and
8222         genrtl_begin_compound_expr when appropriate.
8223         (finish_init_stmts): Changed calls to finish_compound_expr and
8224         finish_stmt_expr to call genrtl_finish_compound_expr and
8225         genrtl_finish_stmt_expr when appropriate.
8226         (expand_default_init): Changed call to finish_expr_stmt to call
8227         genrtl_expr_stmt when appropriate.
8228         (build_vec_init): Likewise.
8229
8230         * parse.y (simple_stmt): Removed first argument from call to
8231         finish_for_stmt. Removed first argument from call to
8232         finish_switch_stmt.
8233
8234         * parse.c: Regenerated.
8235
8236         * pt.c (tsubst_expr): Removed first argument from call to
8237         finish_for_stmt. Removed first argument from call to
8238         finish_switch_stmt.
8239
8240 2000-06-16  Benjamin Chelf  <chelf@codesourcery.com>
8241
8242         * cp-tree.h (enum cplus_tree_code): Changed __DUMMY to
8243         CP_DUMMY_TREE_CODE. Remove #include "c-common.def".
8244
8245         * lex.c (cplus_tree_code_type[]): Removed #include "c-common.def".
8246         (cplus_tree_code_length[]): Likewise.
8247         (cplus_tree_code_name[]): Likewise.
8248         (init_parse): Added call to add_c_tree_codes. Changed
8249         LAST_AND_UNUSED_TREE_CODE to LAST_C_TREE_CODE.
8250
8251 2000-06-16  Mark Mitchell  <mark@codesourcery.com>
8252
8253         * cp-tree.h (finish_mem_initializers): Declare.
8254         (count_trees): Likewise.
8255         * parse.y (base_init): Use finish_mem_initializers.
8256         * semantics.c (finish_mem_initializers): New function.
8257
8258         * tree.c (count_trees_r): Prototype.  Use DATA parameter to store
8259         the number of trees.
8260         (n_trees): Remove.
8261         (count_trees): Don't use it.
8262
8263 2000-06-15  Jason Merrill  <jason@redhat.com>
8264
8265         * tree.c (count_trees): New debugging function.
8266
8267         * typeck.c (build_x_function_call): Use DECL_FUNCTION_TEMPLATE_P.
8268         * init.c (build_member_call): Pull out the name of a DECL.
8269
8270         * Makefile.in (semantics.o, pt.o): Depend on TIMEVAR_H.
8271         * semantics.c (expand_body): Push to TV_INTEGRATION here.
8272         * optimize.c (optimize_function): Not here.
8273         * pt.c (instantiate_decl): Push to TV_PARSE.
8274
8275 2000-06-15  Mark Mitchell  <mark@codesourcery.com>
8276
8277         * cp-tree.h (struct language_function): Remove x_base_init_list
8278         and x_member_init_list.
8279         (current_base_init_list): Remove.
8280         (current_member_init_list): Likewise.
8281         (setup_vtbl_ptr): Change prototype.
8282         (emit_base_init): Likewise.
8283         (expand_member_init): Likewise.
8284         (reinit_parse_for_function): Remove.
8285         * decl.c (save_function_data): Don't clear x_base_init_list and
8286         x_member_init_list.
8287         (mark_language_function): Don't mark them.
8288         * init.c (perform_member_init): Tweak comment.
8289         (sort_member_init): Take the list of initializers as an argument.
8290         (sort_base_init): Likewise.
8291         (emit_base_init): Likewise.
8292         (expand_member_init): Return the initializer.  Don't use global
8293         variables.
8294         * lex.c (reinit_parse_for_function): Remove.
8295         * method.c (build_template_parm_names): Correct substitution.
8296         (do_build_copy_constructor): Don't use current_member_init_list
8297         and current_base_init_list.
8298         (synthesize_method): Likewise.
8299         * parse.y (base_init): Split mem-initializers into
8300         base-initializers and field-initializers.
8301         (member_init_list): Build up the list here.
8302         (member_init): Return the initializer.
8303         (fn.depfn): Don't use reinit_parse_for_function.
8304         * parse.c: Regenerated.
8305         * pt.c (convert_nontype_argument): Don't make an ADDR_EXPR of the
8306         ERROR_MARK.
8307         (tsubst_expr): Don't use current_member_init_list
8308         and current_base_init_list.
8309         (tsubst_expr_values): Rename to ...
8310         (tsubst_initializer_list): ... this.  Use convert_from_reference.
8311         * semantics.c (setup_vtbl_ptr): Don't use current_member_init_list
8312         and current_base_init_list.
8313         (begin_function_definition): Don't call reinit_parse_for_function.
8314
8315         * dump.c (dequeue_and_dump): Use TREE_VEC_LENGTH with vectors.
8316
8317         * error.c (dump_expr): Handle ADDR_EXPRs with REFERENCE_TYPE
8318         correctly.
8319
8320         * cp-tree.h (DECL_PENDING_INLINE_P): Relax checking.
8321
8322 2000-06-14  Benjamin Chelf  <chelf@codesourcery.com>
8323
8324         * cp-tree.h (IF_COND): Move to c-common.h.
8325         (THEN_CLAUSE): Likewise.
8326         (ELSE_CLAUSE): Likewise.
8327         (WHILE_COND): Likewise.
8328         (WHILE_BODY): Likewise.
8329         (DO_COND): Likewise.
8330         (DO_BODY): Likewise.
8331         (RETURN_EXPR): Likewise.
8332         (EXPR_STMT_EXPR): Likewise.
8333         (FOR_INIT_STMT): Likewise.
8334         (FOR_COND): Likewise.
8335         (FOR_EXPR): Likewise.
8336         (FOR_BODY): Likewise.
8337         (SWITCH_COND): Likewise.
8338         (SWITCH_BODY): Likewise.
8339         (CASE_LOW): Likewise.
8340         (CASE_HIGH): Likewise.
8341         (GOTO_DESTINATION): Likewise.
8342         (COMPOUND_BODY): Likewise.
8343         (ASM_CV_QUAL): Likewise.
8344         (ASM_STRING): Likewise.
8345         (ASM_OUTPUTS): Likewise.
8346         (ASM_INPUTS): Likewise.
8347         (ASM_CLOBBERS): Likewise.
8348         (DECL_STMT_DECL): Likewise.
8349         (STMT_EXPR_STMT): Likewise.
8350         (LABEL_STMT_LABEL): Likewise.
8351         (SCOPE_BEGIN_P): Likewise.
8352         (SCOPE_END_P): Likewise.
8353         (SCOPE_STMT_BLOCK): Likewise.
8354         (SCOPE_NULLIFIED_P): Likewise.
8355         (SCOPE_NO_CLEANUPS_P): Likewise.
8356         (SCOPE_PARTIAL_P): Likewise.
8357         (ASM_VOLATILE_P): Likewise.
8358         (STMT_LINENO): Likewise.
8359         (STMT_LINENO_FOR_FN_P): Likewise.
8360
8361         * cp-tree.def: Removed SRCLOC, SIZEOF_EXPR, ARROW_EXPR,
8362         ALIGNOF_EXPR, EXPR_STMT, COMPOUND_STMT, DECL_STMT, IF_STMT,
8363         FOR_STMT, WHILE_STMT, DO_STMT, RETURN_STMT, BREAK_STMT,
8364         CONTINUE_STMT, SWITCH_STMT, GOTO_STMT, LABEL_STMT, ASM_STMT,
8365         SCOPE_STMT, CASE_LABEL, STMT_EXPR.
8366
8367         * Makefile.in (CXX_TREE_H): Added $(srcdir)/../c-common.def.
8368
8369         * Make-lang.in (CXX_SRCS): Added $(srcdir)/c-common.def.
8370         (cc1plus$(exeext)): Added $(srcdir)/c-common.def.
8371
8372         * lex.c (cplus_tree_code_type[]): Added '#include "c-common.def"'.
8373         (cplus_tree_code_length[]): Added '#include "c-common.def"'.
8374         (cplus_tree_code_name[]): Added '#include "c-common.def"'.
8375
8376 2000-06-14  Mark Mitchell  <mark@codesourcery.com>
8377
8378         * cp-tree.h (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH): New macro.
8379         * class.c (dfs_find_final_overrider): Set it appropriately.
8380         (dfs_built_vtt_inits): Check BINFO_OVERRIDE_ALONG_VIRTUAL_PATH to
8381         avoid unneeded secondary vptrs.
8382
8383 2000-06-13  Jakub Jelinek  <jakub@redhat.com>
8384
8385         * class.c (build_secondary_vtable): Set DECL_USER_ALIGN.
8386         (check_bitfield_decl, check_field_decl): Likewise.
8387         (build_vtbl_or_vbase_field, build_base_field): Likewise.
8388         (layout_class_type): Set DECL_USER_ALIGN resp. CLASSTYPE_USER_ALIGN.
8389         * decl.c (record_unknown_type): Set TYPE_USER_ALIGN.
8390         (xfer_tag, finish_enum): Likewise.
8391         * decl2.c (finish_builtin_type): Likewise.
8392         * init.c (init_init_processing): Likewise.
8393         * pt.c (instantiate_class_template): Likewise.
8394         * rtti.c (get_tinfo_decl, synthesize_tinfo_fn): Set DECL_USER_ALIGN.
8395         * cp-tree.h (struct lang_type): Add user_align member.
8396         (CLASSTYPE_USER_ALIGN): Define.
8397
8398 Tue Jun 13 15:48:03 2000  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
8399
8400         * Make-lang.in (c++.install-common): Install g++-cross in
8401         $(gcc_tooldir)/bin as g++ and c++; g++ in $(bindir) as
8402         $(target_alias)-g++ and $(target_alias)-c++.
8403
8404 2000-06-12  Mark Mitchell  <mark@codesourcery.com>
8405
8406         * class.c (vcall_offset_data_s): Add last_init and fns.
8407         (overrides): Rename to same_signature_p.
8408         (dfs_find_final_overrider): Adjust accordingly.
8409         (mark_overriders): Likewise.
8410         (warn_hidden): Likewise.
8411         (build_vtbl_initializer): Reorganize machinery for building things
8412         at negative offsets.
8413         (build_vcall_and_vbase_vtbl_entries): Likewise.
8414         (build_vbase_offset_vtbl_entries): Likewise.
8415         (dfs_build_vcall_offset_vtbl_entries): Correct order of vcall
8416         offset entries.  Do not create two entries for functions with the
8417         same signature.
8418         (build_vcall_offset_vtbl_entries): Initialize vod->fns.
8419         (build_rtti_vtbl_entries): Reorganize machinery for building things
8420         at negative offsets.
8421
8422         * optimize.c (expand_call_inline): Don't recurse into the code
8423         used to initialize the parameters more than once.
8424
8425 2000-06-11  Mark Mitchell <mark@codesourcery.com>
8426
8427         * mangle.c (NESTED_TEMPLATE_MATCH): Fix typo in comment.
8428         (is_std_substitution): Don't check CLASSTYPE_USE_TEMPLATE here.
8429         (find_substitution): Only use the `Sa' substitution for
8430         std::allocator, not instantiations of it.
8431         (write_template_prefix): Move comment.  Only use a TREE_LIST to
8432         represent substitutions for a member template.
8433         (write_array_type): Mangle array dimensions correctly.
8434         * optimize.c (maybe_clone_body): Copy more information from the
8435         cloned function.
8436         * pt.c (regenerate_decl_from_template): Preserve DECL_USE_TEMPLATE
8437         on the regenerated declaration.
8438
8439 2000-06-11  Chip Salzenberg  <chip@valinux.com>
8440             Mark Mitchell <mark@codesourcery.com>
8441
8442         * class.c (build_vtable): Clarify comment.
8443         (build_ctor_vtbl_group): Pass the most derived type to
8444         build_vtable.
8445
8446 2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8447
8448         * decl2.c (compare_options): Don't needlessly cast away const-ness.
8449
8450 2000-06-10  Mark Mitchell  <mark@codesourcery.com>
8451
8452         * decl.c (add_binding): Handle duplicate declarations of external
8453         variables.
8454
8455 2000-06-09  Chip Salzenberg  <chip@valinux.com>
8456             Mark Mitchell <mark@codesourcery.com>
8457
8458         * mangle.c (write_number): Take an unsigned HOST_WIDE_INT as an
8459         argument.
8460         (write_signed_number): New macro.
8461         (write_unsigned_number): Likewise.
8462         (write_source_name): Use them.
8463         (write_number): Handle signed and unsigned values.
8464         (write_integer_cst): Use tree_int_cst_sgn, and use
8465         write_unsigned_number or write_signed_number as appropriate.
8466         (write_discriminator): Use write_unsigned_number or
8467         write_signed_number as appropriate.
8468         (write_template_arg_literal): Likewise.
8469         (write_array_type): Use tree_low_cst.
8470         (write_template_parm):  Use write_unsigned_number or
8471         write_signed_number as appropriate.
8472         (write_substitution): Adjust call to write_number.
8473         (write_type): Get the TYPE_MAIN_VARIANT before mangling it.
8474         (write_expression): Handle non-type template arguments of
8475         reference type correctly.
8476         (mangle_thunk): Use write_signed_number.
8477
8478 2000-06-09  Chip Salzenberg  <chip@valinux.com>
8479
8480         * mangle.c (find_substition): Don't mangle objects with typename
8481         substitutions (e.g. "cin" as "Si").
8482
8483 2000-06-09  Zack Weinberg  <zack@wolery.cumb.org>
8484
8485         * call.c (add_candidate): Use ggc_alloc_cleared.
8486         * decl.c (lookup_label): Likewise.
8487         * lex.c (retrofit_lang_decl): Likewise.
8488
8489 2000-06-09  Jason Merrill  <jason@casey.soma.redhat.com>
8490
8491         * semantics.c (expand_body): Push to TV_EXPAND.
8492         * optimize.c (optimize_function): Push to TV_INTEGRATION.
8493         * decl.c (start_function): Always call announce_function.
8494
8495         * tinfo2.cc: Just declare abort.
8496
8497 2000-06-09  Gabriel Dos Reis  <gdr@codesourcery.com>
8498
8499         * lex.c (DEF_OPERATOR): Say `operator@' -not- `operator @'
8500         whenever @ is a symbolic name.
8501
8502 2000-06-08  Jakub Jelinek  <jakub@redhat.com>
8503
8504         * method.c (make_thunk): Clear DECL_VTT_PARM in thunk.
8505
8506 2000-06-07  Mark Mitchell  <mark@codesourcery.com>
8507
8508         * decl.c (pushdecl): Look up functions by DECL_NAME, not
8509         DECL_ASSEMBLER_NAME.
8510
8511 2000-06-06  Mark Mitchell  <mark@codesourcery.com>
8512
8513         * decl2.c (c_language): Define.
8514
8515 2000-06-06  Gabriel Dos Reis  <gdr@codesourcery.com>
8516
8517         * lex.c (lang_init_options): Tweak.
8518
8519         * decl2.c: Remove #inclusion of diagnostic.h
8520         (lang_decode_option): Move diagnostic formatting options to
8521         toplevel.
8522
8523         * lang-options.h: Remove documentation for diagnostic options.
8524
8525         * Makefile.in (lex.o): Depends upon diagnostic.h
8526
8527 2000-06-06  Mark Mitchell  <mark@codesourcery.com>
8528
8529         * decl.c (redeclaration_error_message): If two TEMPLATE_DECLs have
8530         the same DECL_RESULT, it's not a redefinition.
8531         * pt.c (tsubst_decl): Remove code to handle illegal
8532         specializations.
8533
8534 2000-06-06  Nathan Sidwell  <nathan@codesourcery.com>
8535
8536         * exception.cc: (__eh_alloc, __eh_free): Moved to libgcc2.c
8537
8538 2000-06-05  Jason Merrill  <jason@casey.soma.redhat.com>
8539
8540         * search.c (maybe_suppress_debug_info): Don't check
8541         CLASSTYPE_INTERFACE_ONLY if CLASSTYPE_INTERFACE_KNOWN isn't set.
8542
8543         * pt.c (mark_decl_instantiated): Do SET_DECL_EXPLICIT_INSTANTIATION
8544         here if extern_p.
8545
8546         Remember instantiation context in deferred instantiations.
8547         * cp-tree.h (struct tinst_level): Remove.
8548         (TINST_DECL, TINST_LINE, TINST_FILE): New macros.
8549         * pt.c (current_tinst_level): Now a tree.
8550         (print_template_context, push_tinst_level, pop_tinst_level,
8551         tinst_for_decl): Adjust.
8552         (reopen_tinst_level): New fn.
8553         (init_pt): Register current_tinst_level as a root.
8554         (add_pending_template): Put current_tinst_level in TREE_PURPOSE
8555         of the pending templates list.
8556         (instantiate_pending_templates): Adjust.  Call reopen_tinst_level.
8557         * lex.c (extract_interface_info): Adjust.
8558         * decl2.c (warn_if_unknown_interface): Adjust.
8559
8560 2000-06-05  Mark Mitchell  <mark@codesourcery.com>
8561
8562         * class.c (indirect_primary_base_p): New function.
8563         (determine_primary_base): Use it.
8564
8565 2000-06-05  Nathan Sidwell  <nathan@codesourcery.com>
8566
8567         Update new-abi dynamic cast algorithm.
8568         * tinfo.cc (__class_type_info::__dyncast_result): Add
8569         whole_details. Adjust constructor.
8570         (__vmi_class_type_info::__do_dyncast): Adjust for vmi_flags.
8571         Avoid unnecessary searching.
8572         (__dynamic_cast): Adjust for __dyncast_result::whole_details.
8573
8574 Mon Jun  5 06:48:55 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
8575
8576         * decl.c (init_decl_processing): Don't call record_component_aliases.
8577         * tree.c (build_cplus_array_type_1): Likewise.
8578
8579 2000-06-04  Mark Mitchell  <mark@codesourcery.com>
8580
8581         * ir.texi: Correct typo.
8582         * mangle.c (write_expression): Handle non-type template arguments
8583         with reference type.
8584         * method.c (build_overload_value): Likewise.
8585         * pt.c (convert_nontype_argument): Explicitly represent conversion
8586         to a reference with an ADDR_EXPR.
8587         (unify): Always unify arguments in left-to-right order.
8588
8589 2000-06-03  Alex Samuel    <samuel@codesourcery.com>
8590             Mark Mitchell  <mark@codesourcery.com>
8591
8592         * Make-lang.in (CXX_SRCS): Add mangle.c.
8593         * Makefile.in (CXX_OBJS): Add mangle.o.
8594         (mangle.o): New rule.
8595
8596         * class.c (local_classes): New variable.
8597         * class.c (get_vtable_name): Use mangle_vtable_for_type for new ABI.
8598         (get_vtt_name): Use mangle_vtt_name for new ABI.
8599         (init_class_processing): Initialize local_classes.
8600         (build_ctor_vtbl_group): Use mangle_ctor_vtbl_for_type for new ABI.
8601         * cp-tree.h (cp_tree_index): Add CPTI_STD_IDENTIFIER.
8602         (std_identifier): New macro.
8603         (DECL_VOLATILE_MEMFUNC_P): New macro.
8604         (DECL_NAMESPACE_STD_P): Likewise.
8605         (local_classes): Declare.
8606         (get_mostly_instantiated_function_type): Declare.
8607         (init_mangle): Declare.
8608         (mangle_decl): Likewise.
8609         (mangle_type_string): Likewise.
8610         (mangle_type): Likewise.
8611         (mangle_typeinfo_for_type): Likewise.
8612         (mangle_typeinfo_string_for_type): Likewise.
8613         (mangle_vtbl_for_type): Likewise.
8614         (mangle_vtt_for_type): Likewise.
8615         (mangle_ctor_vtbl_for_type): Likewise.
8616         (mangle_thunk): Likewise.
8617         (mangle_conv_op_name_for_type): Likewise.
8618         (mangle_guard_variable): Likewise.
8619         * decl.c (pushtag): Keep track of local classes.
8620         (initialize_predefined_identifiers): Initialize std_identifier.
8621         (init_decl_processing): Use std_identifier.
8622         (start_decl): Don't treat instantiations as specializations.
8623         (grokdeclarator): Likewise.
8624         (grokvardecl): Call mangle_decl for new ABI.  Only set mangled
8625         name for fully-instantiated templates.
8626         * decl2.c (grokclassfn): Use set_mangled_name_for_decl for
8627         destructors with the new ABI.
8628         (finish_static_data_member_decl): Use mangle_decl under the new ABI.
8629         (grokfield): Use mangle_type for new ABI.
8630         (grokoptypename): Use mangle_conv_op_for_type for new ABI.
8631         (get_sentry): Use mangle_guard_variable for new ABI.
8632         (start_static_initialization_or_destruction): Likewise.
8633         * expr.c (extract_aggr_init): Remove.
8634         (extract_scalar_init): Likewise.
8635         (extract_init): Remove #if 0'd code.
8636         * mangle.c: New function.
8637         * method.c (build_mangled_name): Assert not flag_new_abi.
8638         (build_static_name): Likewise.
8639         (build_decl_overload_real): Likewise.
8640         (build_typename_overload): Likewise.
8641         (build_overload_with_type): Likewise.
8642         (build_overload_name): Likewise.
8643         (get_ctor_vtbl_name): Likewise.
8644         (start_squangling): Likewise.
8645         (get_id_2): Likewise.
8646         (set_mangled_name_for_decl): Call mangle_decl for new ABI.
8647         (init_method): Call init_mangle for new ABI.
8648         (make_thunk): Call mangle_thunk for new ABI.
8649         * operators.def: Correct new ABI manglings for the `%' operator.
8650         Add `::' operator.
8651         * pt.c (build_template_decl): Copy DECL_OVERLOADED_OPERATOR_P and
8652         DECL_ASSIGNMENT_OPERATOR_P to the TEMPLATE_DECL.
8653         (lookup_template_class): Call mangle_decl for new ABI.
8654         (get_mostly_instantiated_function_type): New function.
8655         (set_mangled_name_for_template_decl): Use it.
8656         (tsubst_decl): Use set_mangled_name_for_decl for destructors with
8657         the new ABI.  Use mangle_conv_op_name_for_type for instantiated
8658         conversion op names.
8659         * rtti.c (tinfo_name): Call mangle_type_string for new ABI.
8660         (get_tinfo_decl): Call mangle_typeinfo_for_type for new ABI.
8661         (tinfo_base_init):  Likewise.  Mangle typeinfo string name with
8662         mangle_typeinfo_string_for_type.
8663
8664 2000-06-03  Mark Mitchell  <mark@codesourcery.com>
8665
8666         * cp-tree.h (TMPL_ARGS_LEVEL): Clarify comment.
8667         (INNERMOST_TEMPLATE_ARGS): New macro.
8668         (innermost_args): Remove.
8669         (get_innermost_template_args): New function.
8670         * decl2.c (arg_assoc_class): Use INNERMOST_TEMPLATE_ARGS.
8671         * error.c (dump_function_decl): Be caution when using
8672         most_general_template.
8673         * method.c (build_template_parm_names):  Use
8674         INNERMOST_TEMPLATE_ARGS.
8675         * pt.c (add_to_template_args): Tidy comment
8676         (get_innermost_template_args): New function.
8677         (check_explicit_specialization): Clear DECL_INITIAL for a new
8678         specialization.
8679         (process_partial_specialization): Use INNERMOST_TEMPLATE_ARGS.
8680         Tidy.
8681         (push_template_decl): Always register specializations of the most
8682         general template.
8683         (convert_template_argument): Use INNERMOST_TEMPLATE_ARGS.
8684         (coerce_template_parms): Likewise.
8685         (lookup_template_class): Likewise.
8686         (innermost_args): Remove.
8687         (tsubst_decl): Use INNERMOST_TEMPLATE_ARGS.
8688         (tsubst_decl): Handle tricky specializations.  Use
8689         get_innermost_template_args.
8690         (instantiate_template): Simplify handling of partial
8691         instantiations.
8692         (get_class_bindings): Use INNERMOST_TEMPLATE_ARGS.
8693         (most_general_template): Reimplement, in a more straightforward
8694         manner.
8695         (regenerate_decl_from_template): Tweak formatting.  Use
8696         TMPL_ARGS_DEPTH for clarity.
8697         (set_mangled_name_for_template_decl): Use INNERMOST_ARGS.
8698
8699         * dump.c (dequeue_and_dump): Dump information about thunks.
8700
8701 2000-06-01  Richard Henderson  <rth@cygnus.com>
8702
8703         * decl.c (init_decl_processing): Set lang_get_alias_set first thing.
8704
8705 2000-06-01  Richard Henderson  <rth@cygnus.com>
8706
8707         * decl2.c (unsupported_options): Fix typo, make const.
8708         (lang_decode_option): Fix bsearch argument order.
8709
8710 2000-06-01  Mark Mitchell  <mark@codesourcery.com>
8711
8712         * init.c (resolve_offset_ref): Remove check for TREE_ADDRESSABLE
8713         on FIELD_DECLs.
8714
8715 Wed May 31 14:09:00 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
8716
8717         * cp-tree.h (c_get_alias_set): Deleted.
8718         * Makefile.in (decl.o): Include ../expr.h.
8719         * decl.c (expr.h): Include.
8720         (init_decl_processing): Call record_component_aliases for arrays.
8721         (grokdeclarator): Likewise.
8722         Set TREE_ADDRESSABLE for fields that aren't bitfields.
8723         * tree.c (build_cplus_array_type_1): Call record_component_aliases.
8724
8725 2000-05-31  Mark Mitchell  <mark@codesourcery.com>
8726
8727         Remove guiding declaration support.
8728         * cp/cp-tree.h (flag_dump_translation_unit): Make it const.
8729         (flag_guiding_decls): Remove.
8730         * call.c (build_user_type_conversion_1): Remove support for
8731         guiding decls.
8732         (build_new_function_call): Likewise.
8733         (build_new_op): Likewise.
8734         (build_new_method_call): Likewise.
8735         * decl.c (start_function): Likewise.
8736         * friend.c (is_friend): Likewise.
8737         (do_friend): Likewise.
8738         * decl2.c ((flag_dump_translation_unit): Make it const.
8739         (flag_guiding_decls): Remove.
8740         (unsupported_options): New variable
8741         (compare_options): New function.
8742         (lang_decode_option): Use them.
8743
8744         * decl.c (build_cp_library_fn): Set DECL_CONTEXT.
8745
8746         * method.c (mangle_expression): Adjust test for legal expression
8747         operators.
8748
8749         * pt.c (instantiate_decl): Save and restore the local
8750         specializations list.
8751
8752 2000-05-30  Jason Merrill  <jason@decepticon.cygnus.com>
8753
8754         * decl.c (grok_reference_init): Pass LOOKUP_ONLYCONVERTING.
8755
8756 2000-05-30  Mark Mitchell  <mark@codesourcery.com>
8757
8758         * call.c (add_template_candidate_real): Handle member template
8759         constructors for classes with virtual bases.
8760         (build_user_type_conversion_1): Use in_charge_arg_for_name.
8761         (build_new_method_call): Use DECL_NONSTATIC_MEMBER_FUNCTION_P.
8762
8763         * ir.texi: Update thunk documentation.
8764
8765         * call.c (joust): Fix handling of overloaded builtin operators.
8766
8767 2000-05-30  Zack Weinberg  <zack@wolery.cumb.org>
8768
8769         * cp-tree.h (DECL_ANTICIPATED): New macro.
8770         Document new use of DECL_LANG_FLAG_7.
8771         * decl.c (builtin_function): Set DECL_ANTICIPATED on builtins
8772         in the user namespace.
8773         * lex.c (do_identifier): If the identifier's declaration has
8774         DECL_ANTICIPATED on, it has not yet been declared.  But do not
8775         replace it with an ordinary implicit declaration.
8776
8777         * tinfo2.cc: Include stdlib.h.
8778
8779 2000-05-29  Mark Mitchell  <mark@codesourcery.com>
8780
8781         * cp-tree.h (CLASSTYPE_ALIGN_UNIT): New macro.
8782         * class.c (layout_empty_base): Use CLASSTYPE_ALIGN_UNIT, not
8783         CLASSTYPE_ALIGN.
8784
8785 2000-05-28  Gabriel Dos Reis  <gdr@codesourcery.com>
8786
8787         * decl2.c (lang_decode_option): Use skip_leading_substring instead
8788         of plain strncmp.
8789
8790 2000-05-28  Alexandre Oliva  <aoliva@cygnus.com>
8791
8792         * operators.def (<?): Duplicated, should have been...
8793         (>?): this.  Fixed.
8794
8795 2000-05-27  Alex Samuel    <samuel@codesourcery.com>
8796             Mark Mitchell  <mark@codesourcery.com>
8797
8798         * cp-tree.h (ansi_opname): Make it a macro.
8799         (ansi_assopname): Likewise.
8800         (struct lang_decl_flags): Add assignment_operator_p.
8801         (struct lang_decl): Add operator_code.
8802         (DECL_VTT_PARM): Adjust.
8803         (DECL_OVERLOADED_OPERATOR_P): Return the operator_code for an
8804         overloaded operator.
8805         (SET_OVERLOADED_OPERATOR_CODE): New macro.
8806         (DECL_ASSIGNMENT_OPERATOR_P): New macro.
8807         (DECL_ARRAY_DELETE_OPERATOR_P): Adjust.
8808         (opname_tab): Remove.
8809         (assignop_tab): Likewise.
8810         (operator_name_info_t): New type.
8811         (operator_name_info): New variable.
8812         (assignment_operator_name_info): Likewise.
8813         (build_cp_library_fn): Remove declaration.
8814         (push_cp_library_fn): Likewise.
8815         (operator_name_string): Likewise.
8816         (build_decl_overload): Likewise.
8817         * call.c (print_z_candidates): Simplify.
8818         (build_object_call): Adjust usage of ansi_opname.  Use
8819         DECL_OVERLOADED_OPERATOR_P.
8820         (op_error): Adjust operator name lookup.
8821         (build_conditional_expr): Adjust usage of ansi_opname.
8822         (build_new_op): Likewise.
8823         (build_op_delete_call): Likewise.
8824         (build_over_call): Likewise.
8825         (joust): Use DECL_OVERLOADED_OPERATOR_P.
8826         * decl.c (duplicate_decls): Copy operator_code.
8827         (init_decl_processing): Adjust parameters to push_cp_library_fn.
8828         (builtin_function): Adjust parameters to build_library_fn_1.
8829         (build_library_fn_1): Accept an overloaded operator code.
8830         (build_library_fn): Pass ERROR_MARK.
8831         (build_cp_library_fn): Accept an overloaded operator code.
8832         (push_cp_library_fn): Likewise.
8833         (grokfndecl): Tweak.
8834         (grokdeclarator): Simplify code to compute names of overloaded
8835         operators.  Adjust use of ansi_opname.
8836         (ambi_op_p): Work on tree_codes, not identifiers.
8837         (unary_op_p): Likewise.
8838         (grok_op_properties): Likewise.
8839         (start_function): Use DECL_OVERLOADED_OPERATOR_P.
8840         (lang_mark_tree): Don't try to mark the operator_code.
8841         * decl2.c (grok_function_init): Use DECL_OVERLOADED_OPERATOR_P.
8842         * error.c (dump_decl): Remove special handling for operator
8843         names.
8844         (dump_function_name): Likewise.
8845         (dump_expr): Adjust name lookup of operators.
8846         (op_to_string): Simplify.
8847         (assop_to_string): Likewise.
8848         * init.c (build_new_1): Adjust use of ansi_opname.
8849         * lex.c (opname_tab): Remove.
8850         (assignop_tab): Likewise.
8851         (ansi_opname): Likewise.
8852         (ansi_assopname): Likewise.
8853         (operator_name_string): Likewise.
8854         (reinit_lang_specific): Likewise.
8855         (operator_name_info): New variable.
8856         (assignment_operator_name_info): Likewise.
8857         (init_operators): New function.
8858         (init_parse): Use it.
8859         (do_identifier): Adjust use of ansi_opname.
8860         * method.c (mangle_expression): Don't use ansi_opname for
8861         mangling.
8862         (build_decl_overload_real): Use DECL_OVERLOADED_OPERATOR_P.
8863         (build_decl_overload): Remove.
8864         (build_typename_overload): Use OPERATOR_TYPENAME_FORMAT directly.
8865         (do_build_assign_ref): Adjust use of ansi_opname.
8866         (synthesize_method): Likewise.
8867         (implicitly_declare_fn): Likewise.
8868         * operators.def: New file.
8869         * parse.y (operator): Adjust use of ansi_opname.
8870         * pt.c (tsubst_decl): Use IDENTIFIER_OPNAME_P.
8871         (set_mangled_name_for_template_decl): Don't play games with
8872         current_namespace.
8873         (special_function_p): Adjust use of ansi_opname.
8874         * typeck.c (check_return_expr): Likewise.
8875         * Make-lang.in (cc1plus): Depend on operators.def.
8876         * Makefile.in (lex.o): Likewise.
8877         (decl.o): Likewise.
8878
8879 2000-05-27  Zack Weinberg  <zack@wolery.cumb.org>
8880
8881         * Make-lang.in (cplib2.ready): Eradicate.
8882
8883 Sat May 27 11:25:46 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
8884
8885         * method.c (mangle_expression): Use TREE_CODE_LENGTH.
8886         * tree.c (break_out_calls, build_min_nt): Use TREE_CODE_LENGTH.
8887         (built_min, cp_tree_equal): Likewise.
8888
8889 2000-05-26  Mark Mitchell  <mark@codesourcery.com>
8890
8891         * class.c (layout_nonempty_base_or_field): Replace
8892         `record_layout_info' with `record_layout_info_s'.
8893
8894 2000-05-26  Jason Merrill  <jason@casey.soma.redhat.com>
8895
8896         Fix goto checking.
8897         * cp-tree.h (struct language_function): x_named_labels is now
8898         a struct named_label_list*.
8899         * decl.c (struct named_label_use_list): Renamed from...
8900         (struct named_label_list): ...this.  New struct.
8901         (push_binding_level): Don't set eh_region.
8902         (note_level_for_eh): New fn.
8903         (pop_label): Take label and old value directly.
8904         (pop_labels): Adjust for new named_labels format.
8905         (lookup_label): Likewise.
8906         (poplevel): Note characteristics of a binding level containing a
8907         named label.  Mess with named label lists earlier.
8908         (mark_named_label_lists): New fn.
8909         (mark_lang_function): Call it.
8910         (use_label): New fn, split out from...
8911         (make_label_decl): ...here.  Don't call it.
8912         (decl_jump_unsafe, check_previous_goto, check_previous_goto_1,
8913         check_previous_gotos): New fns, split out from...
8914         (define_label): ...here.
8915         (check_switch_goto): New fn.
8916         (define_case_label): Call it.
8917         (check_goto): New fn.
8918         * semantics.c (finish_goto_stmt): Call it and use_label.
8919         (begin_compound_stmt): If we're a try block, call note_level_for_eh.
8920         (expand_stmt): Never pass 1 as DONT_JUMP_IN to expand_end_bindings.
8921
8922 2000-05-26  Mark Mitchell  <mark@codesourcery.com>
8923
8924         * class.c (build_vtable_entry_ref): Correct usage of
8925         get_vtbl_decl_for_binfo.
8926
8927         * decl2.c (grokclassfn): Set DECL_LANGUAGE here.
8928         * method.c (implicitly_declare_fn): Not here.
8929
8930 2000-05-26  Nathan Sidwell  <nathan@codesourcery.com>
8931
8932         * cp-tree.h (CPTI_PTMD_DESC_TYPE): Rename to ...
8933         (CPTI_PTMD_DESC_TYPE): ... here.
8934         (ptmd_desc_type_node): Rename to ...
8935         (ptm_desc_type_node): ... here.
8936         * decl.c: Likewise.
8937         * rtti.c (ptmd_initializer): Rename to ...
8938         (ptm_initializer): ... here.
8939         (sythesize_tinfo_var): Adjust. Deal with pointer to member
8940         function.
8941         (create_tinfo_types): Adjust.
8942
8943 2000-05-25  Mark Mitchell  <mark@codesourcery.com>
8944
8945         Finish implementation of VTTs.
8946         * cp-tree.h (cp_tree_index): Add CPTI_VTT_PARM_TYPE and
8947         CPTI_VTT_PARM_IDENTIFIER.
8948         (vtt_parm_identifier): New macro.
8949         (vtt_parm_type): Likewise.
8950         (BINFO_SUBVTT_INDEX): Likewise.
8951         (BINFO_VPTR_INDEX): Likewise.
8952         (struct lang_decl): Add vtt_parm.
8953         (DECL_VTT_PARM): New macro.
8954         (DECL_USE_VTT_PARM): Likewise.
8955         (DECL_NEEDS_VTT_PARM_P): Likewise.
8956         (get_vtt_name): Declare.
8957         (build_artificial_parm): Likewise.
8958         (fixup_all_virtual_upcast_offsets): Likewise.
8959         (expand_indirect_vtbls_init): Remove.
8960         * call.c (build_new_method_call): Pass the vtt to subobject
8961         constructors and destructors.
8962         * class.c (get_vtt_name): Give it external linkage.
8963         (build_clone): Handle the magic VTT parameters for clones.
8964         (clone_function_decl): Fix typo in comment.
8965         (build_vtt): Keep track of the indices in the VTTs where various
8966         entities are stored.
8967         (build_vtt_inits): Likewise.
8968         (dfs_build_vtt_inits): Likewise.
8969         (build_ctor_vtbl_group): Tweak type of construction vtables.
8970         (dfs_accumulate_vtbl_inits): Build vtables for all bases, even
8971         primary bases, when building construction vtables.
8972         * decl.c (duplicate_decls): Handle DECL_VTT_PARM.
8973         (initialize_predefined_identifiers): Add vtt_parm_identifier.
8974         (init_decl_processing): Initialize vtt_parm_type.
8975         (grokfndecl): Use DECL_OVERLOADED_OPERATOR_P.
8976         (lang_mark_tree): Make vtt_parm.
8977         * decl2.c (build_artificial_parm): New function.
8978         (maybe_retrofit_in_chrg): Use it.  Add VTT parameters.
8979         (grokclassfn): Use build_artificial_parm.
8980         * init.c (initialize_vtbl_ptrs): Call
8981         fixup_all_virtual_upcast_offsets directly.
8982         (perform_member_init): Use the complete subobject destructor for
8983         member cleanups.
8984         (build_vtbl_address): New function.
8985         (expand_virtual_init): Handle VTTs.
8986         * optimize (maybe_clone_body): Likewise.
8987         * search.c (fixup_all_virtual_upcast_offsets): Give it external
8988         linkage.
8989         (expand_indirect_vtbls_init): Remove.
8990         * semantics.c (setup_vtbl_ptr): Fix typos in comment.
8991         * tree.c (make_binfo): Make them bigger.
8992
8993 2000-05-25  Nathan Sidwell  <nathan@codesourcery.com>
8994
8995         * inc/cxxabi.h (__pbase_type_info): Define, based on
8996         __pointer_type_info.
8997         (__pointer_type_info): Derive from __pbase_type_info. Adjust.
8998         (__pointer_to_member_type_info): Likewise.
8999         * tinfo2.cc (__pbase_type_info::~__pbase_type_info): Implement.
9000         (__pointer_to_member_type_info::__is_pointer_p): Remove.
9001         (__pointer_type_info::__do_catch): Rename to ...
9002         (__pbase_type_info::__do_catch): ... here. Adjust.
9003         (__pbase_type_info::__pointer_catch): Implement.
9004         (__pointer_type_info::__pointer_catch): Adjust.
9005         (__pointer_to_member_type_info::__pointer_catch): Adjust.
9006
9007 2000-05-25  Nathan Sidwell  <nathan@codesourcery.com>
9008
9009         * tinfo.h (__user_type_info::contained_virtual_p): New
9010         predicate.
9011         * tinfo.cc (__user_type_info::do_upcast): Fix bug with diamond
9012         shaped hierarchy.
9013         (__vmi_class_type_info::__do_upcast): Fix bug with NULL pointer to
9014         diamond shaped hierarchy. Add early out for mixed diamond and
9015         duplicate shaped hierarchy.
9016
9017 2000-05-24  Mark Mitchell  <mark@codesourcery.com>
9018
9019         * cp-tree.h (build_delete): Change prototype.
9020         (build_vec_delete): Likewise.
9021         * call.c (build_scoped_method_call): Use special_function_kind
9022         values to indicate the kind of destruction to be done.
9023         (build_method_call): Likewise.
9024         * decl.c (finish_destructor_body): Likewise.
9025         (maybe_build_cleanup_1): Likewise.  Rename to ...
9026         (maybe_build_cleanup): ... this.
9027         * decl2.c (delete_sanity): Use special_function_kind
9028         values to indicate the kind of destruction to be done.
9029         (build_cleanup): Likewise.
9030         * init.c (perform_member_init): Likewise.
9031         (build_vec_delete_1): Likewise.
9032         (build_dtor_call): Simplify.
9033         (build_delete): Use special_function_kind
9034         values to indicate the kind of destruction to be done.
9035         (build_vbase_delete): Likewise.
9036         (build_vec_delete): Likewise.
9037
9038         * init.c (sort_member_init): Fix typo in error message generation
9039         code.
9040
9041 Mon May 15 11:46:29 2000  Donald Lindsay  <dlindsay@cygnus.com>
9042
9043         * semantics.c (begin_class_definition): make the packed
9044         attribute be sensitive to the "-fpack-struct" command line flag
9045
9046 2000-05-24  Nathan Sidwell  <nathan@codesourcery.com>
9047
9048         Update new-abi upcast algorithm.
9049         * inc/cxxabi.h (__class_type_info::__do_upcast): Change
9050         prototype and meaning of return value.
9051         (__si_class_type_info::__do_upcast): Likewise.
9052         (__vmi_class_type_info::__do_upcast): Likewise.
9053         * tinfo.cc (__class_type_info::__upcast_result): Replace
9054         whole2dst with part2dst. Adjust ctor.
9055         (__class_type_info::__do_upcast): Adjust call of worker function.
9056         (__class_type_info::__do_upcast): Adjust.
9057         (__si_class_type_info::__do_upcast): Adjust. Use parent's
9058         __do_upcast.
9059         (__vmi_class_type_info::__do_upcast): Likewise. Fix private
9060         virtual base in diamond hierarchy bug.
9061
9062 2000-05-23  Mark Mitchell  <mark@codesourcery.com>
9063
9064         * cp-tree.h (lang_decl_flags): Rename mutable_flag to uninlinable
9065         and bitfield to tinfo_fn_p.
9066         (DECL_TINFO_FN_P): Adjust.
9067         (SET_DECL_TINFO_FN_P): Likewise.
9068         (DECL_MUTABLE_P): Likewise.
9069         (DECL_C_BIT_FIELD): Likewise.
9070         (SET_DECL_C_BIT_FIELD): Likewise.
9071         (CLEAR_DECL_C_BIT_FIELD): Likewise.
9072         (DECL_UNINLINABLE): Likewise.
9073         * class.c (alter_access): Call retrofit_lang_decl if ncessary.
9074         (handle_using_decl): Remove assertion.
9075         (build_vtbl_or_vbase_field): Use build_decl, not build_lang_decl,
9076         to build FIELD_DECLs.
9077         (build_base_field): Likewise.
9078         (layout_class_type): Likewise.
9079         * decl.c (init_decl_processing): Likewise.
9080         (build_ptrmemfunc_type): Likewise.
9081         (grokdeclarator): Likewise.
9082         * decl2.c (grok_x_components): Likewise.
9083         * except.c (call_eh_info): Likewise.
9084         * init.c (init_init_processing): Likewise.
9085         * rtti.c (expand_class_desc): Likewise.
9086         (create_pseudo_type_info): Likewise.
9087         (get_vmi_pseudo_type_info): Likewise.
9088         (create_tinfo_types): Likewise.
9089         * ptree.c (print_lang_decl): Adjust.
9090         * typeck.c (build_component_ref): Don't check DECL_LANG_SPECIFIC
9091         before checking DECL_MUTABLE_P.
9092
9093         * decl2.c (maybe_retrofit_in_chrg): Don't create in-charge
9094         parameters for template functions.
9095         * pt.c (tsubst_decl): Make sure we call maybe_retrofit_in_chrg for
9096         destructors as well as constructors.
9097
9098 2000-05-22  Mark Mitchell  <mark@codesourcery.com>
9099
9100         * class.c (build_ctor_vtbl_group): Set inits.
9101         * optimize.c (maybe_clone_body): Set DECL_INLINE and
9102         DECL_THIS_INLINE appropriately for clones.
9103
9104         * cp-tree.h (IDENTIFIER_TYPENAME_P): Use a flag, not strncmp.
9105         (DECL_CONV_FN_P): Simplify.
9106         (DECL_OPERATOR): Remove.
9107         (language_to_string): Declare.
9108         * decl.c (duplicate_decls): Fix typo in comment.
9109         (grokdeclarator): Adjust use of IDENTIFIER_TYPENAME_P.
9110         (grok_op_properties): Use DECL_CONV_FN_P instead of
9111         IDENTIFIER_TYPENAME_P.
9112         * dump.c (dequeue_and_dump): Dump the language linkage of
9113         declarations.
9114         * error.c (language_to_string): Give it external linkage.
9115         * method.c (build_typename_overload): Set IDENTIFIER_TYPENAME_P.
9116         (implicitly_declare_fn): Set DECL_LANGUAGE.
9117         * pt.c (check_explicit_specialization): Use DECL_CONV_FN_P, not
9118         IDENTIFIER_TYPENAME_P.
9119         (tsubst_decl): Likewise.
9120         (tsubst_copy): Adjust use of IDENTIFIER_TYPENAME_P.
9121         * semantics.c (finish_member_declaration): Don't mark members of
9122         classes declared in an extern "C" region as extern "C".
9123
9124 2000-05-22  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
9125
9126         * decl2.c (qualified_lookup_using_namespace): Look through
9127         namespace aliases.
9128
9129         * decl.c (push_using_decl): Return the old decl on namespace level.
9130
9131 2000-05-21  Mark Mitchell  <mark@codesourcery.com>
9132
9133         * cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Add sanity checks.
9134         (VTT_NAME_PREFIX): New macro.
9135         (CTOR_VTBL_NAME_PREFIX): Likewise.
9136         (get_ctor_vtbl_name): New function.
9137         * class.c (get_vtable_name): Simplify.
9138         (get_vtt_name): New function.
9139         (get_vtable_decl): Don't set IDENTIFIER_GLOBAL_VALUE.
9140         (dfs_mark_primary_bases): Update the CLASSTYPE_VBASECLASSES list
9141         when a virtual base becomes primary.
9142         (finish_struct_1): Set CLASSTYPE_VFIELDS a little earlier.  Build
9143         VTTs.
9144         (finish_vtbls): Adjust calls to accumulate_vtbl_inits to pass in
9145         additional parameters.
9146         (dfs_finish_vtbls): Don't clear BINFO_NEW_VTABLE_MARKED.
9147         (initialize_array): New function.
9148         (build_vtt): Likewise.
9149         (build_vtt_inits): Likewise.
9150         (dfs_build_vtt_inits): Likewise.
9151         (dfs_fixup_binfo_vtbls): Likewise.
9152         (build_ctor_vtbl_group): Likewise.
9153         (initialize_vtable): Use initialize_array.
9154         (accumulate_vtbl_inits): Reimplement to handle construction
9155         vtables.
9156         (dfs_accumulate_vtbl_inits): Likewise.
9157         (bulid_vtbl_initializer): Adjust parameter name.
9158         * method.c (build_typename_overload): Remove #if 0'd code.
9159         (get_ctor_vtbl_name): New function.
9160         * search.c (dfs_walk_real): Use BINFO_N_BASETYPES.
9161         (init_vbase_pointers): Don't mess with the TREE_CHAIN of a binfo.
9162
9163         * cp-tree.h (struct lang_type): Remove search_slot.
9164         (CLASSTYPE_SEARCH_SLOT): Remove.
9165         (emit_base_init): Change prototype.
9166         (initialize_vtbl_ptrs): Likewise.
9167         (expand_indirect_vtbls_init): Likewise.
9168         (clear_search_slots): Remove.
9169         * decl.c (lang_mark_tree): Don't mark search_slot.
9170         * init.c (initialize_vtbl_ptrs): Simplify.
9171         (emit_base_init): Likewise.
9172         * search.c (struct vbase_info): Document decl_ptr.
9173         (convert_pointer_to_single_level): Remove.
9174         (dfs_find_vbases): Remove.
9175         (dfs_init_base_pointers): Simplify.
9176         (dfs_clear_vbase_slots): Remove.
9177         (dfs_vtable_path_unmark): New function.
9178         (init_vbase_pointers): Simplify.
9179         (expand_upcast_fixups): Don't rely on CLASSTYPE_SEARCH_SLOT.
9180         (expand_indirect_vtbls_init): Simplify.  Don't call
9181         mark_all_temps_used.
9182         * semantics.c (setup_vtbl_ptr): Adjust calls to emit_base_init and
9183         initialize_vtbl_ptrs.
9184
9185 2000-05-20  Zack Weinberg  <zack@wolery.cumb.org>
9186
9187         * except.c: Add static prototypes.
9188
9189 2000-05-20  H.J. Lu  <hjl@gnu.org>
9190
9191         * Make-lang.in (cplib2.ready): Also depend on cc1plus$(exeext).
9192
9193 2000-05-19  Mark Mitchell  <mark@codesourcery.com>
9194
9195         Don't create a separate copy of virtual bases for the
9196         CLASSTYPE_VBASECLASSES list.
9197         * cp-tree.h (CLASSTYPE_VBASECLASSES): Change documentation.
9198         (BINFO_FOR_VBASE): Remove.
9199         (CANONICAL_BINFO): Adjust.
9200         (binfo_for_vbase): New function.
9201         * class.c (build_vbase_pointer_fields): Use binfo_for_vbase
9202         instead of BINFO_FOR_VBASE.
9203         (build_vbase_pointer): Likewise.
9204         (build_secondary_vtable): Likewise.
9205         (dfs_mark_primary_bases): Likewise.
9206         (mark_primary_bases): Likewise.
9207         (layout_nonempty_base_or_field): Likewise.
9208         (dfs_set_offset_for_shared_vbases): Likewise.
9209         (dfs_set_offset_for_unshared_vbases): Likewise.
9210         (layout_virtual_bases): Likewise.  Adjust for changes to the
9211         CLASSTYPE_VBASECLASSES list.
9212         (dump_class_hierarchy_r): Use binfo_for_vbase
9213         instead of BINFO_FOR_VBASE.
9214         (dump_class_hierarchy): Likewise.
9215         (finish_vtbls): Likewise.
9216         (build_vtbl_initializer): Adjust for changes to the
9217         CLASSTYPE_VBASECLASSES list.
9218         (build_vbase_offset_vtbl_entries): Use binfo_for_vbase.
9219         * decl.c (finish_destructor_body): Adjust for changes to the
9220         CLASSTYPE_VBASECLASSES list.
9221         * init.c (sort_base_init): Use binfo_for_vbase.
9222         (construct_virtual_bases): Adjust for changes to the
9223         CLASSTYPE_VBASECLASSES list.
9224         (expand_member_init): Use binfo_for_vbase.
9225         (build_vbase_delete):  Adjust for changes to the
9226         CLASSTYPE_VBASECLASSES list.
9227         * method.c (do_build_copy_constructor): Likewise.
9228         * rtti.c (get_base_offset): Use binfo_for_vbase.
9229         (expand_class_desc): Remove #if 0'd code.
9230         * search.c (struct vbase_info): Remove vbase_types.
9231         (get_base_distance):  Use binfo_for_vbase.
9232         (lookup_field_queue_p): Use CANONICAL_BINFO.
9233         (get_shared_vbase_if_not_primary): Use binfo_for_vbase.
9234         (get_pure_virtuals): Adjust for changes to the
9235         CLASSTYPE_VBASECLASSES list.
9236         (dfs_find_vbases): Use binfo_for_vbase.
9237         (dfs_init_vbase_pointers): Likewise.
9238         (init_vbase_pointers): Don't initialize vi.vbase_types.
9239         (virtual_context): Use binfo_for_vbase.
9240         (fixup_all_virtual_upcast_offsets): Adjust for changes to the
9241         CLASSTYPE_VBASECLASSES list.
9242         (expand_indirect_vtbls_init): Simplify.
9243         (dfs_get_vbase_types): Don't replicate virtual bases.
9244         (find_vbase_instance): Use binfo_for_vbase.
9245         (binfo_for_vbase): New function.
9246         * typeck.c (get_delta_difference): Use binfo_for_vbase.
9247
9248 2000-05-17  Mark Mitchell  <mark@codesourcery.com>
9249
9250         * decl2.c (finish_anon_union): Generalize error messages to handle
9251         anonymous structures.
9252         * init.c (perform_member_init): Remove `name' parameter.
9253         (build_field_list): New function.
9254         (sort_member_init): Handle anonymous union initialization order
9255         correctly.  Check for multiple initializations of the same union.
9256         (emit_base_init): Don't look up fields by name here.
9257         (expand_member_init): Record the result of name lookup for future
9258         reference.
9259         * typeck.c (build_component_ref): Fix formatting.
9260
9261 Wed May 17 17:27:44 2000  Andrew Cagney  <cagney@b1.cygnus.com>
9262
9263         * decl.c (pop_label): Replace warn_unused with warn_unused_label.
9264         * typeck.c (build_x_compound_expr): Replace warn_unused with
9265         warn_unused_value.
9266
9267         * decl2.c (lang_decode_option): Update -Wall unused flags by
9268         calling set_Wunused.
9269
9270 2000-05-16  Mark Mitchell  <mark@codesourcery.com>
9271
9272         * cp-treeh (BINFO_NEW_VTABLE_MARKED): Update documentation.
9273         * init.c (dfs_vtable_path_unmark): Remove.
9274         * search.c (marked_new_vtable_p): Likewise.
9275         (unmarked_new_vtable_p): Likewise.
9276         (dfs_search_slot_nonempty_p): Likewise.
9277         (dfs_mark): Likewise.
9278         (dfs_vtable_path_unmark): Likewise.
9279         (dfs_find_vbases): Don't set BINFO_NEW_VTABLE_MARKED.
9280         (dfs_int_vbase_pointers): Don't clear BINFO_VTABLE_PATH_MARKED.
9281         (dfs_init_vbase_pointers): Remove special-case new ABI code.
9282         (dfs_clear_vbase_slots): Don't clear BINFO_NEW_VTABLE_MARKED.
9283         (init_vbase_pointers): Simplify.
9284         (expand_indirect_vtbls_init): Likewise.
9285
9286         * class.c (copy_virtuals): New function.
9287         (build_primary_table): Use it.
9288         (build_secondary_vtable): Likewise.
9289         (modify_vtable_entry): Use NULL_TREE, not integer_zero_node, to
9290         indicate that no vcall offset is required.
9291         (add_virtual_function): Likewise.
9292         (modify_all_vtables): Likewise.
9293         (dfs_finish_vtbls): Adjust call to build_vtbl_initializer.
9294         (dfs_accumulate_vtbl_inits): Likewise.
9295         (build_vtbl_initializer): Make changes to handle construction
9296         vtables.
9297         (dfs_build_vcall_offset_vtbl_entries): Likewise.
9298         (build_rtti_vtbl_entries): Likewise.
9299         (build_vtable_entries): Handle a NULL vcall_index.
9300
9301 2000-05-15  Gabriel Dos Reis  <gdr@codesourcery.com>
9302
9303         * decl2.c (lang_decode_option): Fix thinko.
9304
9305 2000-05-14  Jason Merrill  <jason@casey.cygnus.com>
9306
9307         * except.c (check_handlers): New fn.
9308         * cp-tree.h: Declare it.
9309         * semantics.c (finish_handler_sequence): Call it.
9310         (finish_function_handler_sequence): Likewise.
9311         (finish_handler_parms): Set TREE_TYPE on the handler.
9312         * cp-tree.h (PUBLICLY_UNIQUELY_DERIVED_P): New macro.
9313         * search.c (get_base_distance_recursive): If protect>1, ignore
9314         special access.
9315         (get_base_distance): Don't reduce watch_access.
9316
9317 2000-05-13  Gabriel Dos Reis <gdr@codesourcery.com>
9318
9319         * lex.c: #include diagnostic.h.
9320         (lang_init_options): Set default prefixing rules.
9321
9322         * lang-options.h: Add -fdiagnostics-show-location=.
9323
9324         * decl2.c: #include diagnostic.h.
9325         (lang_decode_option): Handle -fdiagnostics-show-location=.
9326
9327 2000-05-12  Nathan Sidwell  <nathan@codesourcery.com>
9328
9329         * tinfo.cc: Revert my 2000-05-08 and 2000-05-07 changes.
9330         * vec.cc: Revert my 2000-05-07 change.
9331
9332 2000-05-11  Jason Merrill  <jason@casey.cygnus.com>
9333
9334         * class.c (check_field_decls): Complain about non-static data
9335         members with same name as class in class with constructor.
9336
9337 2000-05-10  Jason Merrill  <jason@casey.cygnus.com>
9338
9339         * decl.c (grokdeclarator): Allow non-static data members with
9340         same name as class.
9341
9342 2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>
9343
9344         * cp-tree.h: Constify tree_srcloc.filename, tinst_level.file,
9345         and pending_inline.filename.  Update prototypes.
9346         * decl.c (define_label): Constify filename parameter.
9347         * decl2.c (warn_if_unknown_interface): Constify local char *.
9348         * input.c Constify input_source.filename. Don't declare
9349         input_filename or lineno.  Constify filename parameter to feed_input.
9350         * lex.c (init_parse): Constify parameter and return value.
9351         (cp_pragma_interface, cp_pragma_implementation): Constify
9352         filename argument.
9353         (reinit_parse_for_method, reinit_parse_for_block,
9354         reinit_parse_for_expr, feed_defarg, handle_cp_pragma):
9355         Constify local char *.
9356         * pt.c: Don't declare lineno or input_filename.
9357         (print_template_context, tsubst_friend_function, tsubst_decl,
9358         tsubst, instantiate_decl): Constify local char *.
9359         * semantics.c (expand_body): Constify local char *.
9360         * tree.c (build_srcloc): Constify filename parameter.
9361         * typeck.c (c_expand_asm_operands): Constify filename
9362         parameter.
9363
9364 2000-05-08  Nathan Sidwell  <nathan@codesourcery.com>
9365
9366         * tinfo.cc (__dynamic_cast): Use a reinterpret_cast. Fix
9367         offsetof expansion.
9368
9369 2000-05-08  Branko Cibej  <branko.cibej@hermes.si>
9370
9371         * inc/cxxabi.h:  Fix typos in comment.
9372         (__base_class_info::__offset): Use a static_cast.
9373
9374 2000-05-07  Nathan Sidwell  <nathan@codesourcery.com>
9375
9376         * inc/cxxabi.h: Use __SIZE_TYPE_ and __PTRDIFF_TYPE__ in place
9377         of std::size_t and std::ptrdiff_t respectively.
9378         * tinfo.cc: Likewise.
9379         * vec.cc: Likewise.
9380
9381 2000-05-06  Richard Henderson  <rth@cygnus.com>
9382
9383         * typeck.c (build_c_cast): Don't warn integer->pointer size
9384         mismatch for constants.
9385
9386 2000-05-06  Nathan Sidwell  <nathan@codesourcery.com>
9387
9388         * rtti.c (ptmd_initializer): Set non-public, if class is
9389         incomplete.
9390
9391         * inc/cxxabi.h (__dynamic_cast): Explicitly say extern "C++".
9392         (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
9393         __cxa_vec_delete): Likewise.
9394         * tinfo.cc (__dynamic_cast): Likewise.
9395         * vec.cc (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
9396         __cxa_vec_delete): Likewise.
9397
9398 2000-05-04  Mark Mitchell  <mark@codesourcery.com>
9399
9400         * cp-tree.h (DELTA_FROM_VTABLE_ENTRY): Remove.
9401         (SET_FNADDR_FROM_VTABLE_ENTRY): Likewise.
9402         (lang_decl_flags): Add vcall_offset.
9403         (THUNK_VCALL_OFFSET): Use it.
9404         * decl.c (lang_mark_tree): Don't mark DECL_ACCESS for a thunk.
9405         * method.c (make_thunk): Create the lang_decl here, not in
9406         emit_thunk.
9407         (emit_thunk): Make generic thunks into ordinary functions once
9408         they have been fed to expand_body.
9409         * semantics.c (expand_body): Set current_function_is_thunk here.
9410
9411 2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9412
9413         * class.c (update_vtable_entry_for_fn): Prototype.
9414
9415         * pt.c (tsubst_decl): Initialize variables `argvec', `gen_tmpl'
9416         and `tmpl'.
9417
9418         * search.c (dfs_build_inheritance_graph_order): Prototype.
9419
9420 2000-05-04  Mark Mitchell  <mark@codesourcery.com>
9421
9422         * cp-tree.h (special_function_kind): Add various kinds of
9423         destructors.
9424         (special_function_p): New function.
9425         * class.c (overrides): Don't let one kind of destructor override
9426         another.
9427         * decl2.c (mark_used): Use DECL_NON_THUNK_FUNCTION_P when deciding
9428         whether or not to instantiate a template.
9429         * tree.c (special_function_p): Define.
9430
9431 2000-05-03  Mark Mitchell  <mark@codesourcery.com>
9432
9433         * cp-tree.def (THUNK_DECL): Remove.
9434         * cp-tree.h (DECL_THUNK_P): New macro.
9435         (DECL_NON_THUNK_FUNCTION_P): Likewise.
9436         (DECL_EXTERN_C_FUNCTION_P): Likewise.
9437         (SET_DECL_THUNK_P): Likewise.
9438         (DELTA_FROM_VTABLE_ENTRY): Use DECL_THUNK_P.
9439         (FNADDR_FROM_VTABLE_ENTRY): Likewise.
9440         (DECL_MAIN_P): Use DECL_EXTERN_C_FUNCTION_P.
9441         * decl.c (decls_match): Use DECL_EXTERN_C_P.
9442         (duplicate_decls): Likewise.
9443         (pushdecl): Likewise.  Adjust thunk handling.
9444         (grokfndecl): Use DECL_EXTERN_C_P.
9445         * decl2.c (mark_vtable_entries): Use DECL_THUNK_P.
9446         * dump.c (dequeue_and_dump): Remove THUNK_DECL handling.
9447         * except.c (nothrow_libfn_p): Use DECL_EXTERN_C_P.
9448         * expr.c (cplus_expand_expr): Remove THUNK_DECL handling.
9449         * method.c (make_thunk): Use SET_DECL_THUNK_P.  Set
9450         DECL_NO_STATIC_CHAIN.
9451         (emit_thunk): Don't play games with TREE_CODE on thunks.  Don't
9452         set DECL_DESTRUCTOR_P or DECL_CONSTRUCTOR_P on a thunk.
9453         * search.c (covariant_return_p): Remove THUNK_DECL handling.
9454         * ir.texi: Update.
9455
9456 2000-05-01  Jason Merrill  <jason@casey.cygnus.com>
9457
9458         * tree.c (walk_tree): Set lineno.
9459
9460 2000-05-01  Mark Mitchell  <mark@codesourcery.com>
9461
9462         * exception.cc: Update license notice.
9463         * new.cc: Likewise.
9464         * new1.cc: Likewise.
9465         * new2.cc: Likewise.
9466         * tinfo.cc: Likewise.
9467         * tinfo2.cc: Likewise.
9468         * vec.cc: Likewise.
9469         * inc/cxxabi.h: Likewise.
9470         * inc/exception: Likewise.
9471         * inc/new: Likewise.
9472         * inc/new.h: Likewise.
9473         * inc/typeinfo: Likewise.
9474
9475 2000-05-01  Jason Merrill  <jason@casey.cygnus.com>
9476
9477         * tree.c (build_target_expr_with_type): If we already have a
9478         TARGET_EXPR, just return it.
9479
9480         * optimize.c (initialize_inlined_parameters): Don't generate an
9481         EXPR_STMT if we can just use DECL_INITIAL.
9482         * decl.c (emit_local_var): Only make the initialization a
9483         full-expression if stmts_are_full_exprs_p.
9484
9485 2000-05-01  Mark Mitchell  <mark@codesourcery.com>
9486
9487         * cp-tree.h (same_type_ignoring_top_level_qualifiers_p): New
9488         macro.
9489         * call.c (standard_conversion): Use it.
9490         (direct_reference_binding): Likewise.
9491         (build_over_call): Likewise.
9492         (is_properly_derived_from): Likewise.
9493         (compare_ics): Likewise.
9494         * class.c (resolves_to_fixed_type_p): Likewise.
9495         * optimize.c (declare_return_variable): Likewise.
9496         * pt.c (is_specialization_of): Likewise.
9497         (unify): Likewise.
9498         * typeck.c (comp_target_parms): Likeiwse.
9499         (build_static_cast): Likewise.
9500         (build_reinterpret_cast): Likewise.
9501         (build_const_cast): Likewise.
9502         (comp_ptr_ttypes_real): Likewise.
9503         (comp_ptr_ttypes_const): Likewise.
9504         * typeck2.c (process_init_constructor): Likewise.
9505
9506 2000-04-30  Scott Snyder <snyder@fnal.gov>
9507
9508         * decl.c (finish_destructor_body): Use the base destructor when
9509         destroying virtual bases.
9510
9511 2000-04-30  Mark Mitchell  <mark@codesourcery.com>
9512
9513         * expr.c (cplus_expand_expr): Preserve temporaries when expanding
9514         STMT_EXPRs.
9515         * optimize.c (struct inline_data): Add target_exprs field.
9516         (declare_return_variable): When a function returns an aggregate,
9517         use the variable declared in the TARGET_EXPR as the remapped
9518         DECL_RESULT.
9519         (expand_call_inline): Update the pending target_exprs stack.
9520         (optimize_function): Initialize the stack.
9521
9522         * decl2.c (finish_file): Fix typo in comment.
9523
9524         * method.c (emit_thunk): Don't try to return a `void' value.
9525
9526         * optimize.c (initialize_inlined_parameters): If the parameter is
9527         addressable, we need to make a new VAR_DECL, even if the
9528         initializer is constant.
9529
9530 2000-04-28  Cosmin Truta  <cosmint@cs.ubbcluj.ro>
9531
9532         * decl.c (grok_op_properties): Add an extra check of argtypes.
9533
9534 2000-04-27  Mark Mitchell  <mark@codesourcery.com>
9535
9536         * optimize.c (copy_body_r): Use STRIP_TYPE_NOPS when copying
9537         variables.
9538         (initialize_inlined_parameters): Try to avoid creating new
9539         VAR_DECLs.
9540
9541 2000-04-27  Alex Samuel  <samuel@codesourcery.com>
9542
9543         * lex.c (my_get_run_time): Remove.
9544         (init_filename_times): Use get_run_time instead of my_get_run_time.
9545         (check_newline): Likewise.
9546         (dump_time_statistics): Likewise.
9547         * decl2.c (finish_file): Push and pop timevar TV_VARCONST instead
9548         of computing elapsed time explicitly.
9549
9550 2000-04-26  Mark Mitchell  <mark@codesourcery.com>
9551
9552         * cp-tree.h (TREE_READONLY_DECL_P): Use DECL_P.
9553         * init.c (decl_constant_value): Check TREE_READONLY_DECL_P.
9554         * call.c (convert_like_real): Don't test TREE_READONLY_DECL_P
9555         before calling decl_constant_value.
9556         * class.c (check_bitfield_decl): Likewise.
9557         * cvt.c (ocp_convert): Likewise.
9558         (convert): Likewise.
9559         * decl.c (compute_array_index_type): Likewise.
9560         (build_enumerator): Likewise.
9561         * decl2.c (check_cp_case_value): Likewise.
9562         * pt.c (convert_nontype_argument): Likewise.
9563         (tsubst): Likewise.
9564         * typeck.c (decay_conversion): Likewise.
9565         (build_compound_expr): Likewise.
9566         (build_reinterpret_cast): Likewise.
9567         (build_c_cast): Likewise.
9568         (convert_for_assignment): Likewise.
9569
9570 2000-04-26  Jason Merrill  <jason@casey.cygnus.com>
9571
9572         * decl.c (finish_function): Don't play games with DECL_INLINE.
9573
9574 2000-04-25  Gabriel Dos Reis  <dosreis@cmla.ens-cachan.fr>
9575
9576         * ir.texi: Correct typo.
9577
9578 2000-04-25  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
9579
9580         * decl.c (grokdeclarator): Reject VLAs as members.
9581
9582 2000-04-24  Gabriel Dos Reis  <gdr@codesourcery.com>
9583
9584         * call.c (standard_conversion): Accept conversion between
9585         COMPLEX_TYPEs.
9586
9587         * cvt.c (ocp_convert): Handle conversion to COMPLEX_TYPE.
9588
9589 2000-04-24  Zack Weinberg  <zack@wolery.cumb.org>
9590
9591         * decl2.c (finish_file): Remove double setup for accounting
9592         compile time.
9593
9594 2000-04-24  Robert Lipe <robertlipe@usa.net>
9595
9596         * cp-tree.h (lang_type): Member `language' now ENUM_BITFIELD.
9597
9598 2000-04-23  Benjamin Kosnik  <bkoz@cygnus.com>
9599
9600         * new.cc (set_new_handler): Needs to be in std::.
9601
9602 2000-04-23  Mark Mitchell  <mark@codesourcery.com>
9603
9604         * cp-tree.h (lang_decl): Remove pretty_function_p.
9605         (DECL_PRETTY_FUNCTION_P): Use TREE_LANG_FLAG_0, not a bit in the
9606         language-specific node.
9607         * decl.c (cp_make_fname_decl): Use build_decl, not
9608         build_lang_decl, to build the variables.
9609         (grokvardecl): Don't call build_lang_decl for local variables in
9610         templates.
9611         (grokdeclarator): Don't call build_lang_decl for local type
9612         declarations in templates.
9613         * lex.c (retrofit_lang_decl): Use ggc_alloc_obj to allocated
9614         zero'd memory, rather than calling memset.
9615         * pt.c: Include hashtab.h.
9616         (local_specializations): New variable.
9617         (retrieve_local_specialization): Use it.
9618         (register_local_specialization): Likewise.
9619         (tsubst_decl): Don't assume local variables have
9620         DECL_LANG_SPECIFIC.
9621         (instantiate_decl): Set up local_specializations.
9622         * Makefile.in (HTAB_H): New variable.
9623
9624 2000-04-23  Richard Henderson  <rth@cygnus.com>
9625
9626         * typeck.c (c_expand_asm_operands): Restore the original
9627         contents of the output list.
9628
9629 2000-04-22  Gabriel Dos Reis <gdr@codesourcery.com>
9630
9631         * ir.texi:  Document complex number representation.
9632
9633 2000-04-20  Nathan Sidwell  <nathan@codesourcery.com>
9634
9635         * rtti.c (init_rtti_processing): Set tinfo_var_id in new-abi.
9636         (target_incomplete_p): New function.
9637         (tinfo_base_init): Create comdat NTBS name variable.
9638         (ptr_initializer): Add non_public parameter. Calculate it.
9639         (ptmd_initializer): Likewise.
9640         (synthesize_tinfo_var): Adjust. Emit incomplete class tinfo.
9641         (create_real_tinfo_var): Add non_public parameter. Use it.
9642         Push proxy into global namespace.
9643         * inc/cxxabi.h (__pointer_type_info::incomplete_class_mask):
9644         New enumeration.
9645         * inc/typeinfo (type_info::before, type_info::operator==):
9646         Compare __name addresses.
9647
9648         * tinfo2.cc: Remove new-abi builtins comment.
9649
9650 2000-04-20  Jason Merrill  <jason@casey.cygnus.com>
9651
9652         * typeck.c (build_x_function_call): Resolve an OFFSET_REF.
9653
9654         * call.c (joust): Exit early if we get the same function, too.
9655
9656         * decl2.c (key_method): Return NULL_TREE for template classes.
9657         (import_export_class): Don't need to check for template classes.
9658
9659 2000-04-18  Zack Weinberg  <zack@wolery.cumb.org>
9660
9661         * lex.c: Remove references to cccp.c.
9662
9663 2000-04-18  Mark Mitchell  <mark@codesourcery.com>
9664
9665         * cp-tree.h (lang_decl_flags): Remove const_memfunc and
9666         volatile_memfunc.  Add destructor_attr.  Adjust dummy.
9667         (DECL_DESTRUCTOR_P): Use destructor_attr.
9668         (DECL_CONST_MEMFUNC_P): Reimplement.
9669         (DECL_VOLATILE_MEMFUNC_P): Remove.
9670         * class.c (finish_struct_methods): Use CLASSTYPE_DESTRUCTORS.
9671         (overrides): Use DECL_DESTRUCTOR_P.
9672         (check_for_override): Likewise.
9673         * decl.c (start_function): Likewise.
9674         * decl2.c (grokfclassfn): Likewise.
9675         (check_classfn): Likewise.
9676         (grok_function_init): Likewise.
9677
9678 2000-04-17  Mark Mitchell  <mark@codesourcery.com>
9679
9680         * decl2.c (grokfield): Issue error on illegal data member
9681         declaration.
9682
9683 Mon Apr 17 17:11:16 2000  Mark P Mitchell  <mark@codesourcery.com>
9684
9685         * method.c (make_thunk): Set DECL_CONTEXT for a THUNK_DECL.
9686
9687 2000-04-16  Mark Mitchell  <mark@codesourcery.com>
9688
9689         * class.c (build_vtable_entry): Don't build thunks for type-info
9690         functions.
9691
9692 2000-04-16  Jason Merrill  <jason@casey.cygnus.com>
9693
9694         * decl.c (decls_match): Allow a redeclaration of a builtin to
9695         specify args while the builtin did not.
9696
9697 2000-04-15  Mark Mitchell  <mark@codesourcery.com>
9698
9699         * cp-tree.def (THUNK_DECL): Add to documentation.
9700         * cp-tree.h (flag_huge_objects): Declare.
9701         * class.c (modify_vtable_entry): Tidy.
9702         (update_vtable_entry_for_fn): Split out from dfs_modify_vtables.
9703         Calculate delta appropriately for the new ABI.
9704         (dfs_modify_vtables): Use it.
9705         (modify_all_vtables): Fix thinko in code to add overriding copies
9706         of functions to primary vtables.
9707         (build_clone): Fix typo in comment.
9708         (clone_function_decl): Correct order of destructors in vtable.
9709         (build_vbase_offset_vtbl_entries): Adjust comment.
9710         (dfs_vcall_offset_queue_p): Remove.
9711         (dfs_build_vcall_offset_vtbl_entries): Update BV_VCALL_INDEX.
9712         (build_vcall_offset_vtbl_entries): Juse use dfs_skip_vbases.
9713         (build_vtable_entry): Correct check for pure virtual functions.
9714         Don't declare flag_huge_objects.
9715         * decl.c (flag_huge_objects): Remove declaration.
9716         * method.c (make_thunk): Tweak mangling for vcall offset thunks.
9717         Use int_size_in_bytes.
9718         (emit_thunk): Handle vcall offset thunks.
9719
9720 Sat Apr 15 16:00:01 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
9721
9722         * decl2.c (parse_time, varconst_time): Delete declarations.
9723         (finish_file): Delete LINENO declaration.
9724         START_TIME and THIS_TIME now long.
9725
9726 2000-04-13  Nathan Sidwell  <nathan@codesourcery.com>
9727
9728         * class.c (build_base_field): Reformat comment.
9729
9730         * inc/cxxabi.h (stddef.h): Comment inclusion.
9731         (__base_class_info::__offset): Comment shift.
9732
9733 2000-04-12  Mark Mitchell  <mark@codesourcery.com>
9734
9735         * cp-tree.h (IDENTIFIER_CTOR_OR_DTOR_P): New macro.
9736         (cp_tree_index): Add CPTI_PUSH_EXCEPTION_IDENTIFIER.
9737         (cp_push_exception_identifier): New macro.
9738         (DECL_COMPLETE_DESTRUCTOR_P): New macro.
9739         (DECL_BASE_DESTRUCTOR_P): Likewise.
9740         (DECL_DELETING_DESTRUCTOR_P): Likewise.
9741         (get_vtbl_decl_for_binfo): Fix formatting.
9742         (in_charge_arg_for_name): New macro.
9743         (maybe_build_cleanup_and_delete): Remove declaration.
9744         * call.c (build_field_call): Use IDENTIFIER_CTOR_OR_DTOR_P.
9745         (in_charge_arg_for_name): New function.
9746         (build_new_method_call): Use it.  Handle cloned destructors.
9747         (build_clone): Don't make the base constructor virtual.
9748         Automatically defer generated functions.
9749         (clone_function_decl): Handle destructors, too.
9750         (clone_constructors_and_destructors): Likewise.
9751         (create_vtable_ptr): Don't create a vtable entry for a cloned
9752         function.
9753         * decl.c (predefined_identifier): Add ctor_or_dtor_p.
9754         (initialize_predefined_identifiers): Update appropriately.
9755         (finish_destructor_body): Simplify.
9756         (maybe_build_cleanup_and_delete): Remove.
9757         * except.c (expand_throw): Handle new-ABI destructors.
9758         * init.c (expand_cleanup_for_base): Use base_dtor_identifier.
9759         (build_dtor_call): New function.
9760         (build_delete): Use it.  Simplify.
9761         * optimize.c (maybe_clone_body): Handle destructors.
9762         * search.c (lookup_field_queue_p): Use IDENTIFIER_CTOR_OR_DTOR_P.
9763
9764         * exception.cc (cleanup_fn): New typedef.
9765         (CALL_CLEANUP): New macro.
9766         (cp_eh_info): Use them.
9767         (__cp_push_exception): Likewise.
9768         (__cp_pop_exception): Likewise.
9769
9770 2000-04-11  Mark Mitchell  <mark@codesourcery.com>
9771
9772         * cp-tree.h (cp_tree_index): Add CPTI_DTOR_IDENTIFIER.
9773         (complete_dtor_identifier): New macro.
9774         (CLASSTYPE_FIRST_CONVERSION): Remove.
9775         (CLASSTYPE_CONSTRUCTOR_SLOT): New macro.
9776         (CLASSTYPE_DESTRUCTOR_SLOT): Likewise.
9777         (CLASSTYPE_FIRST_CONVERSION_SLOT): Likewise.
9778         (CLASSTYPE_CONSTRUCTORS): Likewise.
9779         (CLASSTYPE_DESTRUCTORS): Likewise.
9780         (lang_decl): Add cloned_function.
9781         (DECL_COMPLETE_CONSTRUCTOR_P): New macro.
9782         (DECL_BASE_CONSTRUCTOR_P): Likewise.
9783         (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P): Likewise.
9784         (DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P): Likewise.
9785         (DECL_CLONED_FUNCTION_P): Likewise.
9786         (DECL_CLONED_FUNCTION): Likewise.
9787         (clone_function_decl): Declare.
9788         (maybe_clone_body): Likewise.
9789         * call.c (build_user_type_conversion_1): Call complete object
9790         constructors in the new ABI.
9791         (build_new_method_call): Don't add in-charge parameters under the
9792         new ABI.
9793         * class.c (add_method): Use DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P,
9794         DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P, CLASSTYPE_CONSTRUCTOR_SLOT, and
9795         CLASSTYPE_DESTRUCTOR_SLOT.
9796         (build_clone): New function.
9797         (clone_function_decl): Likewise.
9798         (clone_constructors_and_destructors): Likewise.
9799         (check_bases_and_members): Use it.
9800         * decl.c (iniitialize_predefined_identifiers): Initialize
9801         complete_dtor_identifier.
9802         (finish_function): Don't add extra code to a clone.
9803         (lang_mark_tree): Mark cloned_function.
9804         * decl2.c (mark_used): Don't bother trying to instantiate things
9805         we synthesized.
9806         * dump.c (dequeue_and_dump): Don't dump CP_DECL_CONTEXT twice.
9807         * method.c (set_mangled_name_for_decl): Don't treat clones as
9808         constructors.
9809         (synthesize_method): Sythesize cloned functions, not the clones.
9810         * optimize.c (inline_data): Update comment on ret_label.
9811         (remap_block): Don't assume DECL_INITIAL exists.
9812         (copy_body_r): Allow ret_label to be NULL.
9813         (maybe_clone_body): Define.
9814         * pt.c (tsubst_decl): Handle clones.
9815         (instantiate_clone): New function.
9816         (instantiate_template): Use it.
9817         (set_mangled_name_for_template_decl): Don't treat clones as
9818         constructors.
9819         * search.c (lookup_fnfields_1): Use CLASSTYPE_CONSTRUCTOR_SLOT,
9820         CLASSTYPE_DESTRUCTOR_SLOT, and CLASSTYPE_FIRST_CONVERSION_SLOT.
9821         * semantics.c (expand_body): Clone function bodies as necessary.
9822
9823         * optimize.c (remap_decl): Avoid sharing structure for arrays
9824         whose size is only known at run-time.
9825         * tree.c (copy_tree_r): Don't copy PARM_DECLs.
9826
9827         * cp-tree.h (lang_decl_flags): Rename constructor_for_vbase_attr
9828         to has_in_charge_parm_p.
9829         (DECL_CONSTRUCTOR_FOR_VBASE_P): Rename to ...
9830         (DECL_HAS_IN_CHARGE_PARM_P): ... this.
9831         (DECL_COPY_CONSTRUCTOR_P): New macro.
9832         * call.c (add_function_candidate): Use DECL_HAS_IN_CHARGE_PARM_P.
9833         (build_user_type_conversion_1): Likewise.
9834         (convert_like_real): Likewise.
9835         (build_over_call): Likeiwse.  Use DECL_COPY_CONSTRUCTOR_P.
9836         * decl.c (grokdeclarator): Use DECL_HAS_IN_CHARGE_PARM_P.
9837         (copy_args_p): Likewise.
9838         (grok_ctor_properties): Likewise.
9839         (start_function): Likewise.
9840         * decl2.c (maybe_retrofit_in_charge): Likewise.  Set it.
9841         * error.c (dump_function_decl): Use DECL_HAS_IN_CHARGE_PARM_P.
9842         * init.c (emit_base_init): Use DECL_COPY_CONSTRUCTOR_P.
9843         * method.c (do_build_copy_constructor): Use
9844         DECL_HAS_IN_CHARGE_PARM_P.
9845         (synthesize_method): Likewise.
9846         * pt.c (instantiate_template): Remove goto.
9847         * tree.c (build_cplus_method_type): Remove mention of obstacks in
9848         comment.
9849
9850         * cp-tre.h (finish_function): Change prototype.
9851         * decl.c (end_cleanup_fn): Adjust caller.
9852         (finish_function): Take only one parameter.
9853         * decl2.c (finish_objects): Adjust caller.
9854         (finish_static_storage_duration_function): Likewise.
9855         * method.c (emit_thunk): Likewise.
9856         * parse.y: Likewise.
9857         * parse.c: Regenerated.
9858         * pt.c (instantiate_decl): Likewise.
9859         * rtti.c (synthesize_tinfo_fn): Likewise.
9860         * semantics.c (expand_body): Likewise.
9861
9862         * cp-tree.h (copy_decl): New function.
9863         * class.c (finish_struct_1): Use it.
9864         * lex.c (copy_decl): Define it.
9865         * pt.c (tsubst_decl): Likewise.
9866         * tree.c (copy_template_template_parm): Likewise.
9867
9868         * cp-tree.h (lang_type): Remove has_nonpublic_ctor and
9869         has_nonpublic_assign_ref.
9870         (TYPE_HAS_NONPUBLIC_CTOR): Don't declare.
9871         (TYPE_HAS_NONPUBLIC_ASSIGN_REF): Likewise.
9872         * class.c (finish_struct_methods): Don't set
9873         TYPE_HAS_NONPUBLIC_CTOR or TYPE_HAS_NONPUBLIC_ASSIGN_REF.
9874         (interface_only): Don't declare.
9875         (interface_unknown): Likewise.
9876
9877 2000-04-11  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
9878
9879         * tree.h (HAVE_TEMPLATES): Remove definition.
9880         * lang-options.h (-fthis-is-variable): Remove documentation.
9881
9882 2000-04-10  Jason Merrill  <jason@casey.cygnus.com>
9883
9884         * class.c (instantiate_type): Handle object-relative template-id.
9885
9886         * semantics.c (finish_expr_stmt): Call convert_to_void here.
9887         * decl.c (cplus_expand_expr_stmt): Not here.
9888
9889         * rtti.c (build_dynamic_cast_1): Call non_lvalue.
9890         Initialize exprtype earlier.
9891
9892         * parse.y (fn.def1): Check for defining types in return types.
9893
9894         * decl.c (check_tag_decl): Notice extra fundamental types.
9895         Diagnose empty decls in classes, too.
9896
9897         * decl.c (grokdeclarator): Don't override an anonymous name if no
9898         declarator was given.
9899
9900         * cvt.c (convert_to_void): Call resolve_offset_ref.
9901
9902         * typeck.c (build_x_function_call): Abort if we get an OFFSET_REF.
9903
9904         * decl2.c (decl_namespace): Handle getting a type.
9905
9906         * typeck.c (build_c_cast): Re-enable warning for cast between
9907         pointer and integer of different size.
9908
9909 2000-04-10  Nathan Sidwell  <nathan@codesourcery.com>
9910
9911         * inc/cxxabi.h (__pointer_type_info): Add restrict and
9912         incomplete flags.
9913         (__pointer_type_info::__pointer_catch): New virtual function.
9914         (__pointer_to_member_type_info): Derive from
9915         __pointer_type_info. Adjust.
9916         (__pointer_to_member_type_info::__do_catch): Remove.
9917         (__pointer_to_member_type_info::__is_pointer_p): Declare.
9918         (__pointer_to_member_type_info::__pointer_catch): Declare.
9919         * rtti.c (qualifier_flags): Add restrict flag.
9920         (ptmd_initializer): Reorder members.
9921         (create_tinfo_types): Expand comments. Reorder
9922         ptmd_desc_type_node members.
9923         * tinfo2.cc (__pointer_to_member_type_info::__is_pointer_p):
9924         Implement.
9925         (__pointer_type_info::__do_catch): Move specific code into
9926         __pointer_catch. Call it.
9927         (__pointer_type_info::__pointer_catch): Non-pointer-to-member
9928         specific catch checking. Fix void conversion check.
9929         (__pointer_to_member_type_info::__do_catch): Remove.
9930         (__pointer_to_member_type_info::__pointer_catch): Implement.
9931
9932 2000-04-10  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
9933
9934         * lex.c (init_parse): Remove traces of classof and headof.
9935         * decl2.c (flag_operator_names): Default to 1.
9936         (lang_decode_option): Do not set it for -ansi.
9937
9938 2000-04-09  Mark Mitchell  <mark@codesourcery.com>
9939
9940         * cp-tree.h (struct lang_decl): Remove main_decl_variant.
9941         (DECL_MAIN_VARIANT): Remove.
9942         * decl.c (duplicate_decls): Don't set it.
9943         (start_function): Likewise.
9944         (lang_mark_tree): Don't mark it.
9945         * decl2.c (defer_fn): Don't use it.
9946         * lex.c (retrofit_lang_decl): Don't set it.
9947         * pt.c (tsubst_decl): Likewise.
9948         * ptree.c (print_lang_decl): Don't print it.
9949         * typeck.c (mark_addressable): Don't use it.
9950
9951 2000-04-09  Nathan Sidwell  <nathan@codesourcery.com>
9952
9953         * vec.cc: Include <new> and <exception>.
9954         (__cxa_vec_ctor): Use __cxa_vec_dtor for cleanup.
9955         (__cxa_vec_dtor): Catch dtor exceptions, and rethrow or
9956         terminate.
9957         (__cxa_vec_delete): Catch dtor exceptions.
9958
9959 2000-04-09  Nathan Sidwell  <nathan@codesourcery.com>
9960
9961         Prepend __ to implementation defined names.
9962         * inc/typeinfo (type_info): Rename _name to __name.
9963         (type_info::type_info): Rename parameter.
9964         (type_info::operator==, type_info::operator!=,
9965         type_info::before): Likewise.
9966         (type_info::is_pointer_p, type_info::is_function_p,
9967         type_info::do_catch, type_info::do_upcast): Prepend __. Rename
9968         parameters.
9969         * inc/cxxabi.h
9970         (__fundamental_type_info::__fundamental_type_info) Rename parameters.
9971         (__pointer_type_info::__pointer_type_info): Likewise.
9972         (__pointer_type_info::is_pointer_p,
9973         __pointer_type_info::do_catch): Prepend __. Rename parameters.
9974         (__array_type_info::__array_type_info): Rename parameters.
9975         (__function_type_info::__function_type_info): Likewise.
9976         (__function_type_info::is_function_p): Prepend __.
9977         (__enum_type_info::__enum_type_info): Rename parameters.
9978         (__pointer_to_member_type_info::__pointer_to_member_type_info):
9979         Likewise.
9980         (__pointer_to_member_type_info::do_catch): Prepend __. Rename
9981         parameters.
9982         (__base_class_info::is_virtual_p, is_public_p, offset): Prepend __.
9983         (__class_type_info::__class_type_info): Rename parameters.
9984         (__class_type_info::sub_kind): Prepend __. Adjust member names.
9985         (__class_type_info::upcast_result,
9986         __class_type_info::dyncast_result): Prepend __. Move definition
9987         into tinfo.cc.
9988         (__class_type_info::do_upcast, __class_type_info::do_catch,
9989         __class_type_info::find_public_src,
9990         __class_type_info::do_dyncast,
9991         __class_type_info::do_find_public_src): Prepend __. Rename
9992         parameters.
9993         (__si_class_type_info::__si_class_type_info): Rename parameters.
9994         (__si_class_type_info::do_upcast, __si_class_type_info::do_dyncast,
9995         __si_class_type_info::do_find_public_src): Prepent __. Rename
9996         parameters.
9997         (__vmi_class_type_info::__vmi_class_type_info): Rename parameters.
9998         (__vmi_class_type_info::do_upcast, __vmi_class_type_info::do_dyncast,
9999         __vmi_class_type_info::do_find_public_src): Prepent __. Rename
10000         parameters.
10001         (__dynamic_cast): Rename parameters.
10002         * tinfo.cc (type_info::is_pointer_p, type_info::is_function_p,
10003         type_info::do_catch, type_info::do_upcast): Prepend __.
10004         (contained_p, public_p, virtual_p, contained_public_p,
10005         contained_nonpublic_p, contained_nonvirtual_p): Adjust.
10006         (__class_type_info::do_catch,
10007         __class_type_info::do_upcast): Prepend __. Adjust.
10008         (__class_type_info::__upcast_result,
10009         __class_type_info::__dyncast_result): Move from inc/cxxabi.h.
10010         Adjust.
10011         (__class_type_info::find_public_src): Prepend __. Adjust.
10012         (__class_type_info::do_find_public_src,
10013         __si_class_type_info::do_find_public_src,
10014         __vmi_class_type_info::do_find_public_src): Likewise.
10015         (__class_type_info::do_dyncast,
10016         __si_class_type_info::do_dyncast,
10017         __vmi_class_type_info::do_dyncast): Likewise.
10018         (__class_type_info::do_upcast,
10019         __si_class_type_info::do_upcast,
10020         __vmi_class_type_info::do_upcast): Likewise.
10021         (__dynamic_cast): Adjust.
10022         * tinfo2.cc (__pointer_type_info::is_pointer_p): Prepend __.
10023         (__function_type_info::is_function_p): Likewise.
10024         (__pointer_type_info::do_catch): Likewise. Adjust.
10025         (__pointer_to_member_type_info::do_catch): Likewise. Adjust.
10026         (__throw_type_match_rtti_2): Adjust.
10027         (__is_pointer): Adjust.
10028
10029 2000-04-08  Mark Mitchell  <mark@codesourcery.com>
10030
10031         * cp-tree.h (cp_tree_index): Add CPTI_COMPLETE_CTOR_IDENTIFIER.
10032         (complete_ctor_identifier): New macro.
10033         (special_function_kind): Add sfk_copy_constructor and
10034         sfk_assignment_operator.
10035         (LOOKUP_HAS_IN_CHARGE): Remove.
10036         (cons_up_default_function): Rename to ...
10037         (implicitly_declare_fn): ... this.
10038         * call.c (build_new_method_call): Add in-charge parameters for
10039         constructors here.
10040         * class.c (add_implicitly_declared_members): Change parameter name
10041         from cant_have_assignment to cant_have_const_assignment.
10042         Replace calls to cons_up_default_function to implicitly_declare_fn.
10043         * cvt.c (ocp_convert): Use complete_ctor_identifier.
10044         * decl.c (initialize_predefined_identifiers): Initialize it.
10045         (start_function): Use DECL_CONSTRUCTOR_FOR_VBASE_P instead of
10046         complex expression.
10047         * init.c (expand_default_init): Don't calculate the in-charge
10048         parameter here.
10049         (build_new_1): Likewise.
10050         * lex.c (cons_up_default_function): Move to method.c.
10051         * method.c (synthesize_method): Use DECL_DESTRUCTOR_P.
10052         (implicitly_declare_fn): New function.
10053         * typeck.c (build_static_cast): Use complete_ctor_identifier.
10054         (build_modify_expr): Likewise.
10055         * typeck2.c (build_functional_cast): Likewise.
10056
10057         Under the new ABI, constructors don't return `this'.
10058         * cp-tree.h (warn_reorder): Declare.
10059         (special_function_kind): New enum.
10060         (global_base_init_list): Remove declaration.
10061         (emit_base_init): Don't return a value.
10062         (check_base_init): Don't declare.
10063         (is_aggr_typedef): Likewise.
10064         * decl.c (check_special_function_return_type): New function.
10065         (return_types): Remove.
10066         (grokdeclarator): Use check_special_function_return_type.
10067         (start_function): Don't initialize ctor_label under the new ABI.
10068         (finish_construtor_body): Don't create a corresponding LABEL_STMT.
10069         * init.c (begin_init_stmts): Move to top of file.
10070         (finish_init_stmts): Likewise.
10071         (warn_reorder): Don't declare.
10072         (emit_base_init): Don't create a STMT_EXPR here.  Don't return a
10073         value.
10074         (check_base_init): Remove.
10075         (is_aggr_typedef): Likewise.
10076         (build_new_1): Don't use the return value of a constructor.
10077         * semantics.c (setup_vtbl_ptr): Don't use the return value
10078         of emit_base_init.
10079         * typeck.c (check_return_expr): Don't magically convert return
10080         statements into `return this' in constructors under the new ABI.
10081
10082         * cp-tree.h (cp_tree_index): Add CPTI_BASE_CTOR_IDENTIFIER,
10083         CPTI_BASE_DTOR_IDENTIFIER, and CPTI_DELETING_DTOR_IDENTIFIER.
10084         (base_ctor_identifier): New macro.
10085         (base_dtor_identifier): Likewise.
10086         (deleting_dtor_identifier): Likewise.
10087         * decl.c: Don't include obstack.h.
10088         (obstack_chunk_alloc): Don't define.
10089         (obstack_chunk_free): Likewise.
10090         (struct predefined_identifier): New type.
10091         (initialize_predefined_identifiers): New function.
10092         (init_decl_processing): Use it.
10093         (debug_temp_inits): Remove.
10094         (start_method): Don't call preserve_data.
10095         (hack_incomplete_structures): Update comment.
10096         * init.c (init_init_processing): Don't initialize
10097         nelts_identifier.
10098         (build_offset_rf): Remove dead code.
10099         (build_delete): Use CLASSTYPE_N_BASECLASSES.
10100         * search.c (init_search_processing): Don't initialize
10101         vptr_identifier.
10102
10103 2000-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10104
10105         * typeck.c (build_binary_op): Call `tree_expr_nonnegative_p' to elide
10106         some sign_compare warnings.
10107
10108 2000-04-07  Nathan Sidwell  <nathan@codesourcery.com>
10109
10110         Rename abi::__vmi_class_type_info members.
10111         * inc/cxxabi.h (__vmi_class_type_info): Rename details, n_bases,
10112         base_list, detail_masks members to vmi_flags, vmi_base_count,
10113         vmi_bases and vmi_flags_masks respectively.
10114         (__vmi_class_type_info::vmi_flags_masks): Rename
10115         details_unknown_mask to flags_unknown_mask.
10116         * tinfo.cc (__class_type_info::do_upcast): Adjust.
10117         (__vmi_class_type_info::do_find_public_src): Adjust.
10118         (__vmi_class_type_info::do_dyncast): Adjust.
10119         (__vmi_class_type_info::do_upcast): Adjust.
10120
10121 2000-04-07  Nathan Sidwell  <nathan@codesourcery.com>
10122
10123         * tinfo.cc (convert_to_base): New function.
10124         (get_vbase_offset): Remove. Move into convert_to_base.
10125         (__vmi_class_type_info::do_find_public_src): Adjust.
10126         (__vmi_class_type_info::do_dyncast): Adjust.
10127         (__vmi_class_type_info::do_upcast): Adjust.
10128
10129 2000-04-06  Jason Merrill  <jason@yorick.cygnus.com>
10130
10131         * tinfo.cc (operator=): Use __builtin_strcmp.
10132         * tinfo2.cc (before): Likewise.
10133
10134 2000-04-06  Mark Mitchell  <mark@codesourcery.com>
10135
10136         * cp-tree.h (lang_decl_flags): Rename saved_inline to deferred.
10137         (DECL_SAVED_INLINE): Rename to ...
10138         (DECL_DEFERRED_FN): ... this.
10139         (in_function_p): Remove declaration.
10140         (mark_inline_for_output): Rename to ...
10141         (defer_fn): ... this.
10142         * decl.c (finish_function): Adjust call to mark_inline_for_output.
10143         (in_function_p): Remove definition.
10144         * decl2.c (saved_inlines): Rename to ...
10145         (deferred_fns): ... this.
10146         (saved_inlines_used): Rename to ...
10147         (deferred_fns_used): ... this.
10148         (mark_inline_for_output): Rename to ...
10149         (defer_fn): ... this.
10150         (finish_file): Adjust accordingly.
10151         (init_decl2): Likewise.
10152         * lex.c (cons_up_default_function): Likewise.
10153         * pt.c (mark_decl_instantiated): Likewise.
10154         (instantiate_decl): Don't set DECL_DEFER_OUTPUT under any
10155         circumstances.
10156         * rtti.c (get_tinfo_decl): Adjust call to mark_inline_for_output.
10157         * semantics.c (expand_body): Defer more functions.
10158
10159 2000-04-06  Nathan Sidwell  <nathan@codesourcery.com>
10160
10161         * vec.cc: New file.
10162         * Make-lang.in (CXX_LIB2FUNCS): Add it.
10163         (vec.o): Build it.
10164         * inc/cxxabi.h (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
10165         __cxa_vec_delete): Declare.
10166
10167 2000-04-06  Nathan Sidwell  <nathan@codesourcery.com>
10168
10169         * rtti.c (dfs_class_hint_mark): New static function.
10170         (dfs_class_hint_unmark): New static function.
10171         (class_hint_flags): Use them.
10172
10173 2000-04-05  Benjamin Kosnik  <bkoz@cygnus.com>
10174
10175         * decl2.c: Make flag_honor_std dependent on ENABLE_STD_NAMESPACE.
10176
10177 2000-04-05  Mark Mitchell  <mark@codesourcery.com>
10178
10179         * cp-tree.h (instantiate_decl): Change prototype.
10180         * decl2.c (mark_used): Adjust call.
10181         * optimize.c (inlinable_function_p): Adjust handling of templates.
10182         * pt.c (do_decl_instantiation): Adjust call to instantiate_decl.
10183         (do_type_instantiation): Likewise.
10184         (instantiate_decl): Defer more templates.
10185         (instantiate_pending_templates): Adjust logic to handle inline
10186         friend functions.
10187
10188         * Makefile.in (GGC_H): New variable.  Use it throughout in place
10189         of ggc.h.
10190
10191         * call.c: Don't include obstack.h.  Include ggc.h.
10192         (obstack_chunk_alloc): Don't define.
10193         (obstack_chunk_free): Likewise.
10194         (add_candidate): Allocate the z_candidate with ggc_alloc_obj.
10195         * decl.c (push_switch): Use xmalloc to allocate the cp_switch.
10196         (pop_switch): Free it.
10197
10198         * decl2.c (grokclassfn): Set TREE_READONLY for PARM_DECLs.
10199
10200         * dump.c (dequeue_and_dump): Don't try to print the bit_position
10201         if we don't have a DECL_FIELD_OFFSET.
10202
10203 Wed Apr  5 15:12:18 MET DST 2000  Jan Hubicka  <jh@suse.cz>
10204
10205         * optimize.c (calls_setjmp_r): Use setjmp_call_p instead of
10206         special_function_p.
10207
10208 2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10209
10210         * cfns.gperf (hash, libc_name_p): Prototype.
10211
10212         * rtti.c (build_dynamic_cast_1): Constification.
10213
10214         * search.c (dfs_debug_unmarkedp, dfs_debug_mark): Unhide prototypes.
10215
10216         * semantics.c (deferred_type_access_control): Prototype.
10217
10218 2000-04-04  Mark Mitchell  <mark@codesourcery.com>
10219
10220         Correct many new ABI issues regarding vbase and vcall offset
10221         layout.
10222         * cp-tree.h (BINFO_VTABLE): Document.
10223         (struct lang_type): Tweak formatting.
10224         (BINFO_PRIMARY_BINFO): Add to documentation.
10225         (CLASSTYPE_VSIZE): Fix typo in comment.
10226         (CLASSTYPE_VBASECLASSES): Update documentation.
10227         (BINFO_VBASE_MARKED): Remove.
10228         (SET_BINFO_VBASE_MARKED): Likewise.
10229         (CLEAR_BINFO_VBASE_MARKED): Likewise.
10230         (BINFO_FIELDS_MARKED): Remove.
10231         (SET_BINFO_FIELDS_MARKED): Likewise.
10232         (CLEAR_BINFO_FIELDS_MARKED): Likewise.
10233         (enum access_kind): New enumeration.
10234         (num_extra_vtbl_entries): Remove declaration.
10235         (size_extra_vtbl_entries): Likewise.
10236         (get_vtbl_decl_for_binfo): New function.
10237         (dfs_vbase_unmark): Remove declaration.
10238         (mark_primary_bases): Likewise.
10239         * class.c (SAME_FN): Remove.
10240         (struct vcall_offset_data_s): Move definition.
10241         (build_vbase_pointer): Use `build', not `build_binary_op', to
10242         access the vbase pointer under the new ABI.
10243         (build_vtable_entry_ref): Use get_vtbl_decl_for_binfo.
10244         (build_primary_vtable): Likewise.
10245         (dfs_mark_primary_bases): Move here from search.c.
10246         (mark_primary_bases): Likewise.
10247         (determine_primary_bases): Under the new ABI, don't make a base
10248         class a primary base just because we don't yet have any virtual
10249         functions.
10250         (layout_vtable_decl): Use get_vtbl_decl_for_binfo.
10251         (num_vfun_entries): Remove.
10252         (dfs_count_virtuals): Likewise.
10253         (num_extra_vtbl_entries): Likewise.
10254         (size_extra_vtbl_entries): Likewise.
10255         (layout_virtual_bases): Iterate in inheritance graph order under
10256         the new ABI.
10257         (finish_struct_1): Use TYPE_VFIELD, not CLASSTYPE_VSIZE, to
10258         indicate that a vfield is present.
10259         (init_class_processing): Initialize access_public_node, etc., from
10260         ak_public, etc.
10261         (get_vtbl_decl_for_binfo): New function.
10262         (dump_class_hierarchy_r): Likewise.
10263         (dump_class_hierarchy): Use it.
10264         (finish_vtbls): Build the vtbls in inheritance graph order.
10265         (dfs_finish_vtbls): Adjust call to build_vtbl_initializer.
10266         (initialize_vtable): Use get_vtbl_decl_for_binfo.
10267         (accumulate_vtbl_inits): Add comments explaining why a pre-order
10268         walk is required.
10269         (dfs_accumulate_vtbl_inits): Set BINFO_VTABLE to the location
10270         where the vptr points, even for primary vtables.
10271         (build_vtbl_initializer): Adjust handling of vbase and vcall
10272         offsets.
10273         (build_vcall_and_vbase_vtable_entries): New function.
10274         (dfs_build_vbase_offset_vtbl_entries): Remove.
10275         (build_vbase_offset_vtbl_entries): Reimplement.
10276         (dfs_build_vcall_offset_vtbl_entries): Don't include virtuals that
10277         were already handled in a primary base class vtable.
10278         (build_vcall_offset_vtbl_entries): Adjust.
10279         (build_rtti_vtbl_entries): Adjust.
10280         * decl2.c (output_vtable_inherit): Use get_vtbl_decl_for_binfo.
10281         * init.c (expand_virtual_init): Simplify.
10282         * repo.c (repo_get_id): Use get_vtbl_decl_for_binfo.
10283         * rtti.c (create_pseudo_type_info): Adjust calculation of vptr.
10284         * search.c (BINFO_ACCESS): New macro.
10285         (SET_BINFO_ACCESS): Likewise.
10286         (dfs_access_in_type): Manipulate access_kinds, not access nodes.
10287         (access_in_type): Likewise.
10288         (dfs_accessible_p): Likewise.
10289         (protected_accessible_p): Likewise.
10290         (lookup_fnfields_1): Adjust documentation.
10291         (dfs_mark_primary_bases): Move to class.c
10292         (mark_primary_bases): Likewise.
10293         (dfs_vbase_unmark): Remove.
10294         (virtual_context): Use BINFO_FOR_VBASE.
10295         (dfs_get_vbase_types): Simplify.
10296         (dfs_build_inheritance_graph_order): New function.
10297         (get_vbase_types): Use it.
10298         * tree.c (debug_binfo): Use get_vtbl_decl_for_binfo.
10299
10300         * tinfo.cc (get_vbase_offset): New function.
10301         (__vmi_class_type_info::do_find_public_src): Use it.
10302         (__vmi_class_type_info::do_dyncast): Likewise.
10303         (__vmi_class_type_info::do_upcast): Likewise.
10304
10305 2000-04-03  Zack Weinberg  <zack@wolery.cumb.org>
10306
10307         * lang-specs.h: Pass -fno-show-column to the preprocessor.
10308
10309 2000-03-30  Nathan Sidwell  <nathan@codesourcery.com>
10310
10311         * rtti.c (class_hint_flags): Rename flags.
10312         (class_initializer): Remove flags.
10313         (synthesize_tinfo_var): Combine offset and flags. Add flags
10314         for __vmi_class_type_info.
10315         (create_tinfo_types): Remove flags from __class_type_info and
10316         __si_class_type_info. Merge flags and offset from
10317         base_class_type_info.
10318         * inc/cxxabi.h (__base_class_info): Merge offset and vmi_flags.
10319         (__base_class_info::is_virtual_p): Adjust.
10320         (__base_class_info::is_public_p): Adjust.
10321         (__base_class_info::offset): New accessor.
10322         (__class_type_info::details): Remove member.
10323         (__class_type_info::__class_type_info): Lose details.
10324         (__class_type_info::detail_masks): Remove.
10325         (__si_class_type_info::__si_class_type_info): Lose details.
10326         (__vmi_class_type_info::details): New member.
10327         (__vmi_class_type_info::__vmi_class_type_info): Adjust.
10328         (__vmi_class_type_info::detail_masks): New member.
10329         * tinfo.cc (__class_type_info::do_upcast): Initialize result
10330         with unknown_details_mask.
10331         (__vmi_class_type_info::do_find_public_src): Adjust
10332         (__vmi_class_type_info::do_dyncast): Adjust.
10333         (__vmi_class_type_info::do_upcast): Set result details, if
10334         needed. Adjust.
10335         (__dynamic_cast): Temporarily #if out optimization.
10336
10337 2000-03-29  Nathan Sidwell  <nathan@codesourcery.com>
10338
10339         * rtti.c (get_tinfo_decl): Mark used.
10340         (emit_tinfo_decl): Don't optimize polymorphic type_info. Only
10341         mark as dealt with, if we output it.
10342
10343 2000-03-28  Mark Mitchell  <mark@codesourcery.com>
10344
10345         * class.c: Reorganize to put virtual function table initialization
10346         machinery at the end of the file.
10347
10348 2000-03-28  Jason Merrill  <jason@casey.cygnus.com>
10349
10350         * class.c (finish_struct): Use bitsize_zero_node.
10351         * pt.c (instantiate_class_template): Likewise.
10352
10353 2000-03-28  Mark Mitchell  <mark@codesourcery.com>
10354
10355         Put RTTI entries at negative offsets in new ABI.
10356         * class.c (dfs_build_vbase_offset_vtbl_entries): Put the first
10357         vbase offset at index -3, not -1.
10358         (build_vtabe_offset_vtbl_entries): Use unmarked_vtable_pathp, not
10359         dfs_vtable_path_unmarked_real_bases_queue_p to walk bases.
10360         (dfs_build_vcall_offset_vtbl_entries): Don't use skip_rtti_stuff.
10361         (build_rtti_vtbl_entries): New function.
10362         (set_rtti_entry): Remove.
10363         (build_primary_vtable): Don't use it.
10364         (build_secondary_vtable): Likewise.
10365         (start_vtable): Remove.
10366         (first_vfun_index): New function.
10367         (set_vindex): Likewise.
10368         (add_virtual_function): Don't call start_vtable.  Do call
10369         set_vindex.
10370         (set_primary_base): Rename parameter.
10371         (determine_primary_base): Likewise.
10372         (num_vfun_entries): Don't use skip_rtti_stuff.
10373         (num_extra_vtbl_entries): Include RTTI information.
10374         (build_vtbl_initializer): Use build_rtti_vtbl_entries.
10375         (skip_rtti_stuff): Remove.
10376         (dfs_modify_vtables): Don't use it.
10377         (modify_all_vtables): Don't use start_vtable.  Do use set_vindex.
10378         (layout_nonempty_base_or_field): Update size handling.
10379         (create_vtable_ptr): Tweak.
10380         (layout_class_type): Adjust parameter names.
10381         (finish_struct_1): Simplify.
10382         * cp-tree.h (CLASSTYPE_VSIZE): Tweak documentation.
10383         (skip_rtti_stuff): Remove.
10384         (first_vfun_index): New function.
10385         (dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
10386         (dfs_vtable_path_marked_real_bases_queue_p): Remove.
10387         (marked_vtable_pathp): Declare.
10388         (unmarked_vtable_pathp): Likewise.
10389         * error.c (dump_expr): Use first_vfun_index to calculate vtable
10390         offsets.
10391         * rtti.c (build_headof): Look for RTTI at negative offsets.
10392         (get_tinfo_decl_dynamic): Likewise.
10393         (tinfo_base_init): Don't take the address of the TINFO_VTABLE_DECL
10394         here.
10395         (create_pseudo_type_info): Do it here instead.  Adjust so that
10396         vptr points at first virtual function.
10397         * search.c (marked_vtable_pathp): Make it global.
10398         (unmarked_vtable_pathp): Likewise.
10399         (dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
10400         (dfs_vtable_path_marked_real_bases_queue_p): Likewise.
10401         (dfs_get_pure_virtuals): Don't use skip_rtti_stuff.
10402         (get_pure_virtuals): Likewise.
10403         (expand_upcast_fixups): Likewise.
10404         * tree.c (debug_binfo): Likewise.
10405         * tinfo.cc (__dynamic_cast): Look for vtable_prefix at appropriate
10406         negative offset.
10407
10408 Sun Mar 26 20:15:26 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10409
10410         * class.c (check_field_decl): Fix typo.
10411         (build_vtbl_or_vbase_field): Don't clear DECL_SAVED_INSNS.
10412         (check_methods): Likewise.
10413         (check_field_decls): Likewise.
10414         Use DECL_CONTEXT, not DECL_FIELD_CONTEXT.
10415         * cp-tree.h (DECL_SHADOWED_FOR_VAR, DECL_TEMPLATE_RESULT):
10416         Use DECL_RESULT_FLD, not DECL_RESULT.
10417         * decl.c (xref_tag): Use DECL_TEMPLATE_RESULT.
10418         * lex.c (identifier_type): Likewise.
10419         * pt.c (determine_specialization, lookup_template_class): Likewise.
10420         (tsubst_friend_function, tsubst_decl, instantiate_template): Likewise.
10421         (resolve_overloaded_unification, more_specialized): Likewise.
10422         * semantics.c (finish_member_declaration): Likewise.
10423         * typeck.c (build_x_function_call): Likewise.
10424
10425 2000-03-26  Mark Mitchell  <mark@codesourcery.com>
10426
10427         * class.c (layout_empty_base): Handle empty bases with non-byte
10428         alignment.
10429         (build_base_field): Likewise.
10430         (layout_virtual_bases): Likewise.
10431
10432         * class.c (finish_struct_1): Fix typo in this change:
10433
10434         Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10435
10436 2000-03-25  Mark Mitchell  <mark@codesourcery.com>
10437
10438         * decl.c (grokdeclarator): Count partial specializations when
10439         keeping track of how many template classes have been seen.
10440
10441         * dump.c (dequeue_and_dump): Dump DECL_TEMPLATE_RESULT.
10442
10443 Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10444
10445         * class.c (build_vbase_pointer_fields): layout_field now place_field.
10446         (get_vfield_offset): Use byte_position.
10447         (set_rtti_entry): Set OFFSET to ssizetype zero.
10448         (get_binfo_offset_as_int): Deleted.
10449         (dfs_record_base_offsets): Use tree_low_cst.
10450         (dfs_search_base_offsets): Likewise.
10451         (layout_nonempty_base_or_field): Reflect changes in RLI format
10452         and call byte_position.
10453         (layout_empty_base): Convert offset to ssizetype.
10454         (build_base_field): use rli_size_unit_so_far.
10455         (dfs_propagate_binfo_offsets): Do computation in proper type.
10456         (layout_virtual_bases): Pass ssizetype to propagate_binfo_offsets.
10457         (layout_class_type): Reflect changes in RLI names and fields.
10458         (finish_struct_1): Set DECL_FIELD_OFFSET.
10459         * dump.c (dequeue_and_dump): Call bit_position.
10460         * expr.c (cplus_expand_constant): Use byte_position.
10461         * rtti.c (expand_class_desc): Use bitsize_one_node.
10462         * typeck.c (build_component_addr): Use byte_position and don't
10463         special case for zero offset.
10464
10465 2000-03-24  Nathan Sidwell  <nathan@codesourcery.com>
10466
10467         * decl.c (vtype_decl_p): Use TYPE_POLYMORPHIC_P.
10468
10469         * rtti.c (get_tinfo_decl): Set comdat linkage on new-abi
10470         tinfo object.
10471         (emit_tinfo_decl): Only emit polymorphic tinfo's when emitting
10472         vtable.
10473
10474 2000-03-20 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
10475
10476         * call.c (check_dtor_name, build_new_method_call): Use TYPE_P and
10477         DECL_P macros.
10478         * decl.c (push_class_binding, poplevel, pushtag, lookup_namespace_name,
10479         make_typename_type, check_initializer, cp_finish_decl,
10480         xref_tag): Likewise.
10481         * decl2.c (grokfield, build_expr_from_tree, build_expr_from_tree,
10482         decl_namespace, arg_assoc_template_arg, arg_assoc,
10483         validate_nonmember_using_decl, do_class_using_decl): Likewise.
10484         * error.c (dump_template_argument, dump_expr, cp_file_of, cp_line_of,
10485         args_to_string): Likewise.
10486         * friend.c (is_friend): Likewise.
10487         * lex.c (note_got_semicolon, note_list_got_semicolon,
10488         is_global): Likewise.
10489         * method.c (build_overload_nested_name, build_overload_value,
10490         build_qualified_name, build_qualified_name, hack_identifier): Likewise.
10491         * parse.y (typename_sub, typename_sub1): Likewise.
10492         * pt.c (push_inline_template_parms_recursive, check_template_shadow,
10493         process_partial_specialization, convert_template_argument,
10494         template_args_equal, add_pending_template, lookup_template_class,
10495         for_each_template_parm_r, maybe_fold_nontype_arg,
10496         tsubst, instantiate_template, type_unification_real, unify,
10497         instantiate_pending_templates, set_mangled_name_for_template_decl):
10498         Likewise.
10499         * repo.c (repo_get_id, repo_template_used): Likewise.
10500         * search.c (lookup_field_1): Likewise.
10501         * tree.c (walk_tree, get_type_decl, cp_tree_equal, member_p): Likewise.
10502         * xref.c (classname): Likewise.
10503
10504 2000-03-22  Mark Mitchell  <mark@codesourcery.com>
10505
10506         * cp-tree.h (BINFO_FOR_VBASE): Adjust documentation.
10507         (CANONICAL_BINFO): New macro.
10508         (BINFO_NEW_VTABLE_MARKED): Use it.
10509         (SET_BINFO_NEW_VTABLE_MARKED): Likewise.
10510         (CLEAR_BINFO_NEW_VTABLE_MARKED): Likewise.
10511         * class.c (dfs_build_vbase_offset_vtbl_entries): Use BINFO_TYPE,
10512         not TREE_TYPE.
10513         (build_primary_vtable): Adjust usage of BINFO_NEW_VTABLE_MARKED.
10514         (build_secondary_vtable): Likewise.
10515         (dfs_finish_vtbls): Likewise.
10516         (dfs_accumulate_vtbl_inits): Likewise.
10517         (accumulate_vtbl_inits): New function.
10518         (finish_vtbls): Make sure that virtual bases come after
10519         non-virtual bases in the vtable group.
10520         (record_base_offsets): Don't save and restore TREE_VIA_VIRTUAL.
10521         (finish_struct_1): Adjust usage of BINFO_NEW_VTABLE_MARKED.
10522         * search.c (struct vbase_info): Move definition.
10523         (marked_new_vtable_p): Adjust usage of BINFO_NEW_VTABLE_MARKED.
10524         (unmarked_new_vtable_p): Likewise.
10525         (dfs_mark_vtable_path): Remove.
10526         (dfs_mark_new_vtable): Remove.
10527         (dfs_unmark_new_vtable): Likewise.
10528         (dfs_clear_search_slot): Likewise.
10529         (dfs_find_vbases):  Adjust usage of BINFO_NEW_VTABLE_MARKED.
10530         (dfs_clear_vbase_slots): Likewise.
10531         (init_vbase_pointers): LIkewise.
10532
10533 2000-03-22  Jason Merrill  <jason@casey.cygnus.com>
10534
10535         * typeck.c (type_after_usual_arithmetic_conversions): Prefer a
10536         SIZETYPE to a non-SIZETYPE.
10537
10538 2000-03-21  Mark Mitchell  <mark@codesourcery.com>
10539
10540         * class.c (layout_virtual_bases): Adjust names in conditionally
10541         compiled code.
10542
10543         * class.c (record_base_offsets): New function.
10544         (layout_conflict_p): Likewise.
10545         (layout_nonempty_base_or_field): Use it.
10546         (layout_empty_base): New function.
10547         (build_base_field): Use it.
10548         (build_base_fields): Update comment.
10549         (layout_virtual_bases): Fold in a little code form
10550         layout_basetypes.  Use layout_empty_base.
10551         (layout_basetypes): Remove.
10552         (end_of_class): New function.
10553         (layout_class_type): Use it.  Adjust.
10554
10555         * cp-tree.h (CLASSTYPE_VBASECLASSES): Fix typo in comment.
10556         (fntype_p): Remove.
10557         * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Fix typo in
10558         comment.
10559         (dfs_skip_nonprimary_vbases_markedp): Likewise.
10560         * typeck.c (fntype_p): Remove.
10561
10562         * cp-tree.h (TI_SPEC_INFO): Remove.
10563         (CLASSTYPE_TI_SPEC_INFO): Likewise.
10564         * pt.c (process_partial_specialization): Likewise.
10565
10566         * class.c (build_base_field): Fix thinko in computation of binfo
10567         offsets.
10568
10569         * tree.c (mark_local_for_remap_p): Mark variables declared in
10570         TARGET_EXPRs as well.
10571
10572 2000-03-21  Nathan Sidwell  <nathan@codesourcery.com>
10573
10574         * typeck.c (require_complete_type, complete_type,
10575         complete_type_or_else, c_sizeof, c_sizeof_nowarn,
10576         build_array_ref, convert_arguments, pointer_diff,
10577         build_x_unary_op, build_unary_op, build_c_cast,
10578         build_modify_expr): Use COMPLETE_TYPE_P etc.
10579         * call.c (is_complete, convert_like_real,
10580         build_new_method_call): Likewise.
10581         * class.c (build_vbase_pointer_fields, check_bases,
10582         build_base_field, finish_struct_1, pushclass): Likewise.
10583         * cvt.c (cp_convert_to_pointer, convert_to_void): Likewise.
10584         * decl.c (maybe_process_template_type_declaration, pushtag,
10585         pushdecl, redeclaration_error_message, start_decl, start_decl_1,
10586         layout_var_decl, check_initializer, cp_finish_decl,
10587         grokdeclarator, require_complete_types_for_parms,
10588         grok_op_properties, xref_tag, xref_basetypes,
10589         check_function_type): Likewise.
10590         * decl2.c (check_classfn, reparse_absdcl_as_casts): Likewise.
10591         * friend.c (do_friend): Likewise.
10592         * init.c (build_offset_ref): Likewise.
10593         * parse.y (structsp): Likewise.
10594         * pt.c (maybe_process_partial_specialization,
10595         tsubst_friend_function, instantiate_class_template, tsubst,
10596         do_type_instantiation, instantiate_pending_templates): Likewise.
10597         * repo.c (repo_get_id): Likewise.
10598         * rtti.c (build_typeid, get_typeid, build_dynamic_cast_1,
10599         synthesize_tinfo_var, emit_support_tinfos): Likewise.
10600         * search.c (lookup_fnfields_1, lookup_conversions): Likewise.
10601         * semantics.c (begin_class_definition): Likewise.
10602         * tree.c (build_cplus_method_type): Likewise.
10603         * typeck2.c (digest_init, build_functional_cast,
10604         add_exception_specifier): Likewise.
10605         * parse.h, parse.c: Regenerated.
10606
10607 2000-03-21  Nathan Sidwell  <nathan@codesourcery.com>
10608
10609         * inc/cxxabi.h: New header file. Define new-abi entry points.
10610         (__pointer_type_info::target): Rename member to ...
10611         (__pointer_type_info::type): ... here.
10612         (__base_class_info::type): Rename member to ...
10613         (__base_class_info::base): ... here.
10614         * Make-lang.in (CXX_EXTRA_HEADERS): Add cxxabi.h
10615         * cp-tree.h (CPTI_ABI): New global tree enumeration.
10616         (abi_node): New global tree node.
10617         * decl.c (abi_node): Document.
10618         (init_decl_processing): Initialize abi_node.
10619         * rtti.c (build_dynamic_cast_1): Use abi_node for new-abi.
10620         (get_vmi_pseudo_type_info): Likewise.
10621         (create_tinfo_types): Likewise.
10622         (emit_support_tinfos): Likewise.
10623         * tinfo.h (cxxabi.h): Include for new-abi.
10624         Move rtti class definitions to new header file.
10625         * tinfo.cc (abi): Use the namespace.
10626         (std): Move new abi rtti classes from here ...
10627         (__cxxabiv1): ... to here.
10628         * tinfo2.cc (cxxabi.h): Include for new-abi.
10629         Move rtti class definitions to new header file.
10630         (std): Move new abi rtti classes from here ...
10631         (__cxxabiv1): ... to here.
10632         * inc/typeinfo (__class_type_info): Move into __cxxabiv1
10633         namespace.
10634
10635 2000-03-20  Jed Wing <jedwin@zloty.ugcs.caltech.edu>
10636             Jason Merrill  <jason@casey.cygnus.com>
10637
10638         * method.c (build_overload_int): Use host_integerp.
10639
10640 2000-03-20 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
10641
10642         * init.c (build_offset_ref): Handle the case of a templated member
10643         function.
10644
10645 2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
10646
10647         * except.c (expand_exception_blocks): Clear catch_clauses_last.
10648
10649 2000-03-18  Mark Mitchell  <mark@codesourcery.com>
10650
10651         * cp-tree.h (CLEAR_DECL_C_BIT_FIELD): New macro.
10652         * class.c (check_bitfield_decl): Turn illegal bitfields into
10653         non-bitfields.
10654         (dfs_propagate_binfo_offsets): Adjust for new size_binop
10655         semantics.
10656         (dfs_offset_for_unshared_vbases): Likewise.
10657         * cvt.c (cp_convert_to_pointer): Convert NULL to a
10658         pointer-to-member correctly under the new ABI.
10659         * expr.c (cplus_expand_constant): Don't use cp_convert when
10660         turning an offset into a pointer-to-member.
10661         * init.c (resolve_offset_ref): Don't adjust pointers-to-members
10662         when dereferencing them under the new ABI.
10663         * typeck.c (get_member_function_from_ptrfunc): Tweak calculation
10664         of pointers-to-members under the new ABI.
10665
10666         * class.c (check_bitfield_decl): Remove restriction on really long
10667         bitfields.
10668         (layout_class_type): Implement new ABI handling of bitfields
10669         longer than their types.
10670
10671 2000-03-18  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
10672
10673         * parse.y (extdefs): Call ggc_collect.
10674         * parse.c: Regenerated.
10675
10676 2000-03-18  Nathan Sidwell  <nathan@codesourcery.com>
10677
10678         * class.c (build_base_field): Use TYPE_ALIGN to examine a type.
10679         (note_name_declared_in_class): Use OVL_CURRENT to get at a
10680         potential overload.
10681
10682 Fri Mar 17 08:09:14 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10683
10684         * class.c (build_vbase_path): Use integer_zerop.
10685         (build_vtable_entry): Use tree_low_cst.
10686         (get_vfield_offset): Use bit_position.
10687         (dfs_modify_vtables): New variable vindex_val; `i' is HOST_WIDE_INT.
10688         Use tree_low_cst.
10689         (check_bitfield_decl): Set DECL_SIZE using convert.
10690         (build_base_field): Set DECL_SIZE and DECL_SIZE_UNIT using size_binop.
10691         (layout_virtual_bases): DSIZE is unsigned HOST_WIDE_INT.
10692         Use tree_low_cst.
10693         (finish_struct_1): Use bit_position.
10694         (dump_class_hierarchy): Use tree_low_cst.
10695         * cp-tree.h (min_precision): Add declaration.
10696         * decl.c (xref_tag, xref_basetypes): Use tree_low_cst.
10697         * error.c (dump_type_suffix): Use host_integerp and tree_low_cst.
10698         (dump_expr): Use integer_zerop, host_integerp, and tree_low_cst.
10699         * expr.c (cplus_expand_constant): Use bit_position.
10700         * init.c (build_vec_init): Use host_integerp and tree_low_cst.
10701         * rtti.c (get_base_offset): Use bit_position.
10702         * typeck.c (build_binary_op): Use integer_zerop, compare_tree_int,
10703         host_integerp, and tree_low_cst.
10704         (pointer_int_sum): Use integer_zerop.
10705         (build_component_addr): Use bit_position.
10706
10707 2000-03-17  Nathan Sidwell  <nathan@codesourcery.com>
10708
10709         * typeck.c (require_complete_type): Don't assume size_zero_node.
10710         (complete_type_or_else): Likewise.
10711
10712 2000-03-16  Steven Grady <grady@digitaldeck.com>
10713             Jason Merrill  <jason@casey.cygnus.com>
10714
10715         * rtti.c (build_dynamic_cast_1): Improve diagnostics.
10716
10717 2000-03-16  Nathan Sidwell  <nathan@codesourcery.com>
10718
10719         * decl2.c (grokfield): Bail out if type is error_mark_node.
10720
10721 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
10722
10723         * tinfo2.cc (__ptr_to_member_data): Rename to ...
10724         (__pointer_to_member_data): ... here. Adjust.
10725         * rtti.c (create_tinfo_types): Adjust.
10726
10727 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
10728
10729         * cp-tree.h (CPTI_REF_DESC_TYPE, ref_desc_type_node): Remove.
10730         * decl.c (ref_desc_type_node): Undocument.
10731         * rtti.c (ptr_ref_initializer): Rename to ...
10732         (ptr_initializer): ... here. Adjust comments.
10733         (ptmd_initializer): Fix comment thinko.
10734         (synthesize_tinfo_var): Remove REFERENCE_TYPE case.
10735         (create_tinfo_types): Remove ref_desc_type_node init.
10736         * tinfo2.cc (__reference_type_info): Remove.
10737
10738 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
10739
10740         * decl.c (cp_finish_decl): Remove obsolete comment.
10741
10742         * typeck.c (build_ptrmemfunc1): Kill uninitialized warning.
10743
10744 2000-03-14  Mark Mitchell  <mark@codesourcery.com>
10745
10746         * cp-tree.h: Tweak documentation.
10747         * class.c (build_vbase_pointer_fields): Layout the fields, too.
10748         (avoid_overlap): Remove.
10749         (get_binfo_offset_as_int): New function.
10750         (dfs_serach_base_offsets): Likewise.
10751         (layout_nonempty_base_or_field): Likewise.
10752         (build_base_field): Layout fields here.  Avoid placing two objects
10753         of the same type at the same address, under the new ABI.
10754         (build_base_fields): Adjust accordingly.
10755         (create_vtable_ptr): Return the new field, but don't attach it to
10756         TYPE_FIELDS.
10757         (remove_base_field): Remove.
10758         (remove_base_fields): Remove.
10759         (layout_basetypes): Adjust accordingly.
10760         (layout_class_type): Call layout_field for each field, rather than
10761         just making a wholesale call to layout_type.
10762
10763 2000-03-14  Jeff Sturm  <jsturm@sigma6.com>
10764
10765         * except.c (expand_throw): Fix typo in _Jv_Sjlj_Throw.
10766
10767 2000-03-13  Jason Merrill  <jason@casey.cygnus.com>
10768
10769         * decl.c (grokfndecl): Set TREE_NOTHROW if TYPE_NOTHROW_P.
10770
10771         * except.c (dtor_nothrow): New fn.
10772         (do_pop_exception): Use it.  Take type parm.
10773         (push_eh_cleanup): Take type parm.
10774         (expand_start_catch_block): Pass it.
10775         (build_eh_type_type_ref): Accept null type.
10776
10777 2000-03-12  Mark Mitchell  <mark@codesourcery.com>
10778
10779         * cp-tree.h (revert_static_member_fn): Change prototype.
10780         * decl.c (grokfndecl): Adjust call to revert_static_member_fn.
10781         (grok_op_properties): Likewise.
10782         (start_function): Likewise.
10783         (revert_static_member_fn): Simplify.
10784         * pt.c (check_explicit_specialization): Adjust call to
10785         revert_static_member_fn.
10786
10787 2000-03-11  Mark Mitchell  <mark@codesourcery.com>
10788
10789         * cp-tree.h (scope_kind): New type.
10790         (tmpl_spec_kind): Likewise.
10791         (declare_pseudo_global_level): Remove.
10792         (pseudo_global_level_p): Rename to template_parm_scope_p.
10793         (pushlevel): Remove declaration.
10794         (begin_scope): New function.
10795         (finish_scope): Likewise.
10796         (current_tmpl_spec_kind): Likewise.
10797         * decl.c (struct binding_level): Shorten parm_flag to 2 bits.
10798         Shorten keep to 2 bits.  Rename pseudo_global to template_parms_p.
10799         Add template_spec_p.
10800         (toplevel_bindings_p): Adjust.
10801         (declare_pseudo_global_level): Remove.
10802         (pseudo_global_level_p): Rename to template_parm_scope_p.
10803         (current_tmpl_spec_kind): New function.
10804         (begin_scope): Likewise.
10805         (finish_scope): Likewise.
10806         (maybe_push_to_top_level): Adjust.
10807         (maybe_process_template_type_declaration): Likewise.
10808         (pushtag): Likewise.
10809         (pushdecl_nonclass_level): Likewise.
10810         (lookup_tag): Likewise.
10811         (grokfndecl): Handle member template specializations.  Share
10812         constructor and non-constructor code.
10813         * decl2.c (check_classfn): Handle member template specializations.
10814         * pt.c (begin_template_parm_list): Use begin_scope.
10815         (begin_specialization): Likewise.
10816         (end_specialization): Likewise.
10817         (check_explicit_specialization): Use current_tmpl_spec_kind.
10818         Handle member template specializations.
10819         (end_template_decl): Use finish_scope.  Remove call to
10820         get_pending_sizes.
10821         (push_template_decl_real): Remove bogus error message.
10822         (tsubst_decl): Fix typo in code contained in comment.
10823         (instantiate_template): Handle member template specializations.
10824         (most_general_template): Likewise.
10825
10826 2000-03-11  Gabriel Dos Reis  <gdr@codesourcery.com>
10827
10828         * lex.c (whitespace_cr): Compress consecutive calls to warning().
10829         (do_identifier): Ditto for error().
10830
10831         * pt.c (convert_nontype_argument): Ditto for cp_error().
10832         (convert_template_argument): Ditto for cp_pedwarn().
10833
10834 2000-03-11  Jason Merrill  <jason@casey.cygnus.com>
10835
10836         * exception.cc (__check_null_eh_spec): New fn.
10837         * except.c (expand_end_eh_spec): Call it if the spec is throw().
10838
10839 2000-03-10  Jason Merrill  <jason@casey.cygnus.com>
10840
10841         * decl.c (push_throw_library_fn): Take the FUNCTION_TYPE.
10842         * except.c (expand_end_eh_spec): Add the return type.
10843         * rtti.c (throw_bad_cast): Add the parmtypes.
10844         (throw_bad_typeid): Likewise.
10845
10846         * semantics.c (expand_stmt): Only leave out rtl for unused
10847         artificials, and set DECL_IGNORED_P on them as well.
10848         * decl.c (wrapup_globals_for_namespace): Likewise.
10849
10850 2000-03-09  Nathan Sidwell  <nathan@codesourcery.com>
10851
10852         * decl.c (maybe_commonize_var): Skip all artificial decls.
10853         * pt.c (tsubst_decl): Don't copy TREE_ASM_WRITTEN.
10854
10855 2000-03-10  Jason Merrill  <jason@casey.cygnus.com>
10856
10857         * lang-options.h, decl2.c: Add -fno-enforce-eh-specs.
10858         * cp-tree.h: Declare flag_enforce_eh_specs.
10859         * decl.c (store_parm_decls, finish_function): Check it.
10860
10861         C library functions don't throw.
10862         * Makefile.in (cfns.h): New target.
10863         (except.o): Depend on it.
10864         * Make-lang.in (cc1plus): Depend on cfns.gperf.
10865         * cfns.gperf: New file.
10866         * cfns.h: Generated.
10867         * except.c: Include it.
10868         (nothrow_libfn_p): New fn.
10869         * decl.c (grokfndecl): Use it.
10870         * cp-tree.h: Declare it.
10871
10872         * decl.c (push_overloaded_decl_1, auto_function,
10873         define_function): Lose.
10874         (build_library_fn_1): New static fn.
10875         (builtin_function): Use it.
10876         (get_atexit_node): Use build_library_fn_ptr.
10877         (build_library_fn, build_cp_library_fn, build_library_fn_ptr,
10878         build_cp_library_fn_ptr, push_library_fn, push_cp_library_fn,
10879         push_void_library_fn, push_throw_library_fn): New fns.
10880         * cp-tree.h: Declare them.
10881         (cp_tree_index): Remove CPTI_BAD_CAST, CPTI_BAD_TYPEID.
10882         (throw_bad_cast_node, throw_bad_typeid_node): Lose.
10883         * except.c (init_exception_processing, call_eh_info, do_pop_exception,
10884         (expand_end_eh_spec, alloc_eh_object, expand_throw): Use above fns.
10885         * rtti.c (build_runtime_decl): Lose.
10886         (throw_bad_cast, throw_bad_typeid, get_tinfo_decl,
10887         build_dynamic_cast_1, expand_si_desc, expand_class_desc,
10888         expand_ptr_desc, expand_attr_desc, expand_generic_desc): Use above fns.
10889
10890         * call.c (build_call): Remove result_type parm.
10891         Call mark_used on unused artificial fns.
10892         * init.c, method.c, typeck.c, except.c, rtti.c: Adjust.
10893
10894 2000-03-09  Jason Merrill  <jason@casey.cygnus.com>
10895
10896         * call.c (build_call): Set TREE_NOTHROW on the CALL_EXPR as
10897         appropriate.
10898         * decl.c (define_function): Set TREE_NOTHROW on the FUNCTION_DECL.
10899         * except.c (call_eh_info, alloc_eh_object, expand_throw): Set
10900         TREE_NOTHROW or TREE_THIS_VOLATILE on the function as appropriate.
10901         * rtti.c (build_runtime_decl, get_tinfo_decl, build_dynamic_cast_1,
10902         expand_si_desc, expand_class_desc, expand_ptr_desc, expand_attr_desc,
10903         expand_generic_desc): Likewise.
10904
10905 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
10906
10907         * exception.cc (__cp_pop_exception): Cleanup the original object.
10908
10909 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
10910
10911         * decl.c (grok_op_properties): Merge conversion to void warning
10912         with other silly op warnings.
10913
10914 2000-03-08  Jason Merrill  <jason@casey.cygnus.com>
10915
10916         * typeck2.c (process_init_constructor): Set TREE_PURPOSE of
10917         array CONSTRUCTOR elements.  Don't use expr_tree_cons.
10918
10919 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
10920
10921         * decl.c (cp_make_fname_decl): New function.
10922         (wrapup_globals_for_namespace): Don't emit unused static vars.
10923         (init_decl_processing): Remove comment about use of
10924         array_domain_type. Set make_fname_decl.
10925         (cp_finish_decl): Remove __FUNCTION__ nadgering.
10926         * semantics.c (begin_compound_stmt): Remove
10927         current_function_name_declared flagging.
10928         (expand_stmt): Don't emit unused local statics.
10929         * typeck.c (decay_conversion): Don't treat __FUNCTION__ decls
10930         specially.
10931
10932 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
10933
10934         * typeck.c (convert_for_assignment): Don't look at array
10935         initializer.
10936         * call.c (convert_like_real): Likewise.
10937
10938 2000-03-07  Jason Merrill  <jason@casey.cygnus.com>
10939
10940         Add initial support for '\uNNNN' specifier.
10941         * lex.c (read_ucs): New fn.
10942         (readescape, skip_white_space): Call it.
10943         (is_extended_char, is_extended_char_1): New fns.
10944         (utf8_extend_token): New fn, #if 0'd out.
10945         (real_yylex): Treat extended chars like letters.
10946
10947         * search.c (note_debug_info_needed): Walk the bases even if we
10948         weren't deferring the type itself.
10949
10950 2000-03-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10951
10952         * decl2.c (finish_objects): Constify a char*.
10953
10954         * method.c (emit_thunk): Likewise.
10955
10956 2000-03-06  Nathan Sidwell  <nathan@codesourcery.com>
10957
10958         * typeck.c (dubious_conversion_warnings): Look through
10959         REFERENCE_TYPE.
10960
10961 Mon Mar  6 08:46:47 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10962
10963         * class.c (dfs_modify_vtables): I is now unsigned.
10964         (check_bitfield_decl): Use tree_int_cst_sgn and compare_tree_int.
10965         (build_base_field): Add casts of TREE_INT_CST_LOW to HOST_WIDE_INT.
10966         * error.c (dump_expr): Cast TREE_INT_CST_HIGH to unsigned.
10967         * init.c (build_vec_init): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
10968         * method.c (build_overload_int): Cast TREE_INT_CST_HIGH to unsigned.
10969         * typeck.c (build_binary_op, case TRUNC_DIV_EXPR):
10970         Call integer_all_onesp.
10971         * typeck2.c (process_init_constructor): Use compare_tree_int.
10972
10973         * lang-specs.h (as): Don't call if -syntax-only.
10974
10975 2000-03-06  Mark Mitchell  <mark@codesourcery.com>
10976
10977         * expr.c (cplus_expand_expr, case STMT_EXPR): Don't set
10978         RTL_EXPR_HAS_NO_SCOPE after all.
10979
10980 2000-03-05  Mark Mitchell  <mark@codesourcery.com>
10981
10982         * expr.c (cplus_expand_expr, case STMT_EXPR): Use
10983         expand_start_stmt_expr and expand_end_stmt_expr directly.  Set
10984         RTL_EXPR_HAS_NO_SCOPE.
10985
10986         * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG a little
10987         later.
10988
10989         * dump.c (dequeue_and_dump): Dump SCOPE_NO_CLEANUPS_P.
10990
10991 2000-03-05  Nathan Sidwell  <nathan@codesourcery.com>
10992
10993         * call.c (convert_like): Macrofy.
10994         (convert_like_with_context): New macro.
10995         (convert_like_real): Renamed from convert_like.  Add calling
10996         context parameters, for diagnostics. Add recursive flag.  Call
10997         dubious_conversion_warnings for outer conversion.
10998         (build_user_type_conversion): Use convert_like_with_context.
10999         (build_over_call): Likewise. Don't warn about dubious
11000         conversions here. Adjust convert_default_arg calls.
11001         (convert_default_arg): Add context parameters for diagnostics.
11002         Pass through to convert_like_with_context.
11003         * cp-tree.h (convert_default_arg): Add context parameters.
11004         (dubious_conversion_warnings): Prototype new function.
11005         * typeck.c (convert_arguments): Adjust convert_default_arg call.
11006         (dubious_conversion_warnings): New function, broken
11007         out of convert_for_assignment.
11008         (convert_for_assignment): Adjust.
11009
11010 2000-03-03  Jason Merrill  <jason@casey.cygnus.com>
11011
11012         * decl2.c (key_method): Break out from...
11013         (import_export_vtable, import_export_class): ...here.
11014
11015         * decl.c (finish_function): Don't mess with flag_keep_inline_functions.
11016         * decl2.c (finish_vtable_vardecl): Don't check decl_function_context.
11017
11018         * search.c (note_debug_info_needed, dfs_debug_mark,
11019         dfs_debug_unmarkedp): Uncomment.  Adjust for new scheme.
11020         * decl2.c (finish_vtable_vardecl): Call note_debug_info_needed.
11021
11022 2000-03-03  Nathan Sidwell  <nathan@codesourcery.com>
11023
11024         * decl.c (cp_finish_decl): Remove obsolete obstack comments, fix
11025         typos.
11026
11027 2000-03-02  Mark Mitchell  <mark@codesourcery.com>
11028
11029         * cp-tree.h (TYPE_NEEDS_DESTRUCTOR): Rename to ...
11030         (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): ... this.
11031         (TYPE_HAS_TRIVIAL_DESTRUCTOR): New macro.
11032         (lang_type): Split gets_new into has_new and has_array_new.
11033         (TYPE_VEC_NEW_USES_COOKIE): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
11034         (TYPE_GETS_NEW): Split into ...
11035         (TYPE_HAS_NEW_OPERATOR): ... this, and ...
11036         (TYPE_HAS_ARRAY_NEW_OPERATOR): ... this.
11037         (DECL_ARRAY_DELETE_OPERATOR_P): New macro
11038         (build_op_new_call): Don't declare.
11039         (build_new_1): Likewise.
11040         * call.c (build_op_new_call): Remove.
11041         * class.c (check_bases): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR
11042         instead of TYPE_NEEDS_DESTRUCTOR.
11043         (finish_struct_bits): Likewise.
11044         (add_implicitly_declared_members): Likewise.
11045         (check_field_decl): Likewise.
11046         (check_methods): Set TYPE_VEC_DELETE_TAKES_SIZE here, and set it
11047         correctly under the new ABI.
11048         * decl.c (start_decl_1): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR
11049         instead of TYPE_NEEDS_DESTRUCTOR.
11050         (initialize_local_var): Likewise.
11051         (destroy_local_var): Likewise.
11052         (cp_finish_decl): Likewise.
11053         (register_dtor_fn): Likewise.
11054         (grok_op_properties): Set TYPE_HAS_NEW_OPERATOR and
11055         TYPE_HAS_ARRAY_NEW_OPERATOR, not TYPE_HAS_NEW.  Don't set
11056         TYPE_VEC_DELETE_TAKES_SIZE here.
11057         (xref_basetypes): Set TYPE_HAS_NEW_OPERATOR and
11058         TYPE_HAS_ARRAY_NEW_OPERATOR, not TYPE_HAS_NEW.
11059         (store_parm_decls):  Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
11060         (finish_destructor_body): Likewise.
11061         (maybe_build_cleanup_1): Likewise.
11062         * decl2.c (do_static_destruction): Likewise.
11063         * init.c (build_new_1): Make it static.
11064         (perform_member_init): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
11065         (expand_cleanup_for_base): Likewise.
11066         (get_cookie_size): New function.
11067         (build_new_1): Handle array-new cookies correctly under the new
11068         ABI.
11069         (build_vec_delete_1): Likewise.
11070         (build_vec_init):  Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
11071         (build_delete): Likewise.
11072         (build_vec_delete): Handle array-new cookies correctly under the new
11073         ABI.
11074         * lex.c (do_identifier): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
11075         * pt.c (instantiate_class_template): Set TYPE_HAS_NEW_OPERATOR and
11076         TYPE_HAS_ARRAY_NEW_OPERATOR.
11077         * ptree.c (print_lang_type): Check them.
11078         * search.c (context_for_name_lookup): Fix typo in comment.
11079         (tree_has_any_destructor_p): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
11080         * tree.c (break_out_cleanups): Likewise.
11081         (build_cplus_array_test_1): Likewise.
11082         (cp_build_qualified_type_real): Likewise.
11083         * typeck.c (complete_type): Likewise.
11084
11085         * g++spec.c (lang_specific_driver): Add -fnew-abi at the start of
11086         the command-line, not the end.
11087
11088 2000-03-01  Jason Merrill  <jason@casey.cygnus.com>
11089
11090         * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG.
11091
11092 2000-03-02  Tom Tromey  <tromey@cygnus.com>
11093
11094         * cp-tree.h (build_java_class_ref): Declare.
11095         * init.c (build_java_class_ref): No longer static.
11096         * except.c (expand_throw): Generate a Java-style `throw' if the
11097         thrown object is a "Java" object.
11098         (initialize_handler_parm): Generate a Java-style lookup of
11099         exception info if the caught object is a "Java" object.
11100         (catch_language, catch_language_init): New globals.
11101         (decl_is_java_type): New function.
11102         (expand_start_catch_block): Don't call push_eh_info() or
11103         push_eh_cleanup() when handling a Java-style "catch".  Pass Java
11104         class reference to build_catch_block.
11105
11106 Thu Mar  2 13:32:01 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11107
11108         * typeck.c (comptypes): Treat sizetype like its language equivalent.
11109
11110 2000-03-01  Bernd Schmidt  <bernds@cygnus.co.uk>
11111
11112         * typeck.c (maybe_warn_about_returning_address_of_local): Reorganize
11113         to merge reference/pointer code and fix incorrect warnings.
11114
11115 2000-02-29  Jason Merrill  <jason@casey.cygnus.com>
11116
11117         * search.c (protected_accessible_p): Use context_for_name_lookup.
11118
11119         * init.c (construct_virtual_bases): Fix thinko.
11120         * typeck.c (expand_ptrmemfunc_cst): Fix thinko.
11121
11122 2000-03-01  Martin von Loewis  <loewis@informatik.hu-berlin.de>
11123
11124         * decl.c (current_function_decl): Move to toplev.c.
11125
11126 2000-02-29  Nathan Sidwell  <nathan@codesourcery.com>
11127
11128         * pt.c (fn_type_unification): Unify return type, whenever
11129         provided.
11130         (get_bindings_real): Only pass return type when necessary.
11131         Remove explicit return type check.
11132         * class.c (resolve_address_of_overloaded_function): Pass desired
11133         return type to fn_type_unification.
11134
11135 Mon Feb 28 08:15:23 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11136
11137         * class.c (build_vtbl_or_vbase_field, check_methods): Don't clear
11138         DECL_FIELD_SIZE.
11139         (check_bitfield_decl, check_field_decls): Set DECL_SIZE, not
11140         DECL_FIELD_SIZE.
11141         * rtti.c (expand_class_desc): Likewise.
11142         * cp-tree.h (DECL_INIT_PRIORITY): Use underlying union name.
11143         (THUNK_VCALL_OFFSET): Likewise.
11144         (THUNK_DELTA): Reflect changes in ../tree.h.
11145
11146 2000-02-28  Jason Merrill  <jason@casey.cygnus.com>
11147
11148         * search.c (protected_accessible_p): Also allow the access if
11149         the member is public in DERIVED.  Lose TYPE parm.
11150         (friend_accessible_p): Lose TYPE parm.
11151         (accessible_p): Adjust.
11152
11153 Sun Feb 27 16:40:33 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11154
11155         * class.c (dfs_build_vtable_offset_vtbl_entries): Don't use size_binop
11156         on things that are not sizes; ssize_binop deleted.
11157         Call size_diffop when appropriate.
11158         (dfs_build_vcall_offset_vtbl_entries): Likewise.
11159         (build_primary_vtable, build_secondary_vtable): Likewise.
11160         (dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise.
11161         Variable I is HOST_WIDE_INT.
11162         (get_vfield_offset): Pass proper types to size_binop.
11163         (size_extra_vtbl_entries, layout_virtual_bases): Likewise.
11164         (finish_struct_1): Likewise.
11165         (skip_rtti_stuff): Arg N is now pointer to signed.
11166         (layout_class_type): Use size_zero_node.
11167         * cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed.
11168         * cvt.c (cp_convert_to_pointer): Pass proper types to size_binop.
11169         * decl.c (complete_arry_type): Pass proper types to size_binop.
11170         (xref_basetypes): BINFO_OFFSET is sizetype.
11171         * error.c (dump_expr): Don't use size_binop non-sizes.
11172         * expr.c (cplus_expand_constant): Pass proper types to size_binop.
11173         * init.c (construct_virtual_bases): Fix type error.
11174         (build_vec_delete_1): Pass proper type to size_binop and don't
11175         fold result.
11176         * lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype.
11177         * rtti.c (get_base_offset): Pass proper type to size_binop.
11178         * search.c (dfs_find_vbases): Fix type error.
11179         (expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed.
11180         (dfs_get_vbase_types): BINFO_OFFSET is sizetype.
11181         * tree.c (debug_binfo): Variable N is signed.
11182         Use HOST_WIDE_INT_PRINT_DEC.
11183         * typeck.c (comptypes): sizetype is same as equivalent integer type.
11184         (c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT,
11185         size_one_node and size_zero_node.
11186         (c_alignof): Use size_one_node.
11187         (build_component_addr): Pass proper types to size_binop.
11188         (expand_ptrmemfunc_cst): Don't use size_binop on non-sizes.
11189
11190 2000-02-26  Jason Merrill  <jason@casey.cygnus.com>
11191
11192         Implement class scope using-declarations for functions.
11193         * class.c (handle_using_decl): Call add_method for used functions.
11194         Use IDENTIFIER_CLASS_VALUE to check for conflicts.
11195         (add_method): Used functions are hidden by local functions.
11196         (check_bases_and_members): Handle using-decls before finalizing
11197         CLASSTYPE_METHOD_VEC.
11198         * call.c (add_function_candidate): Add ctype parm; if non-zero,
11199         override the type of 'this' accordingly.
11200         (add_template_candidate, add_template_candidate_real): Add ctype parm.
11201         (convert_class_to_reference, build_user_type_conversion_1,
11202         build_new_function_call, build_object_call, build_new_op,
11203         build_new_method_call): Pass ctype parm.
11204
11205         * search.c (lookup_member): Put rval_binfo, not basetype_path, in
11206         the baselink.
11207         * call.c (convert_class_to_reference, build_user_type_conversion_1,
11208         build_new_function_call, build_object_call, build_new_op,
11209         build_new_method_call, build_op_delete_call): Don't get basetype_path
11210         from a baselink.
11211         * typeck.c (build_component_ref): Likewise.
11212         * init.c (build_offset_ref): Likewise.
11213         (resolve_offset_ref): Don't call enforce_access.
11214         Call build_scoped_ref.
11215         * typeck2.c (build_scoped_ref): Simplify.  Do nothing if it
11216         would cause an error or if -pedantic.
11217         * class.c (alter_access): Lose binfo parm.
11218
11219 2000-02-26  Mark Mitchell  <mark@codesourcery.com>
11220
11221         * semantics.c (simplify_aggr_init_exprs_p): Don't walk into
11222         types.
11223
11224 2000-02-25  Alfred Minarik <a8601248@unet.univie.ac.at>
11225
11226         * rtti.c (get_vmi_pseudo_type_info): Move __vmi_class_type_info
11227         pseudo_type_info creation into the std namespace
11228
11229 2000-02-26  Mark Mitchell  <mark@codesourcery.com>
11230
11231         * cp-tree.h (DECL_NEEDED_P): Tweak to correct usage before EOF.
11232         (import_export_class): Remove declaration.
11233         * decl2.c (import_export_class): Make it static.
11234         * dump.c (dequeue_and_dump): Handle PREDECREMENT_EXPR,
11235         PREINCREMENT_EXPR, POSTDECREMENT_EXPR, POSTINCREMENT_EXPR,
11236         EXPR_WITH_FILE_LOCATION.
11237         * lex.c (check_newline): Tweak filename/lineno setting.
11238         * semantics.c (begin_while_stmt): Fix typo in comment.
11239
11240 Sat Feb 26 19:50:23 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11241
11242         * lang-options.h (-fmessage-length=): Add missing option.
11243
11244         * Make-lang.in (CXX_SRCS): Add .h files and sort list.
11245
11246 2000-02-26  Zack Weinberg  <zack@wolery.cumb.org>
11247
11248         * Make-lang.in: Delete refs to LIBGCC2_DEPS.
11249
11250 Fri Feb 25 14:52:33 2000  Jim Wilson  <wilson@cygnus.com>
11251
11252         * optimize.c (expand_call_inline): Emit the return label before
11253         evaluating the return value.
11254
11255 2000-02-24  Mark Mitchell  <mark@codesourcery.com>
11256
11257         * lex.c (check_newline): Use push_srcloc and pop_srcloc, rather
11258         than duplicating functionality here.
11259         * optimize.c: Include input.h.
11260         (expand_call_inline): Use push_srcloc and pop_srcloc.
11261         * parse.y (maybe_cv_qualifier): Remove calls to emit_line_note.
11262         * parse.c: Regenerated.
11263         * Makefile.in (lex.o): Depend on input.h.
11264         (optimize.o): Likewise.
11265
11266 2000-02-24  Nathan Sidwell  <nathan@codesourcery.com>
11267
11268         * decl.c (grokdeclarator): Diagnose qualifiers on non-member
11269         function type, rather than ICE.
11270
11271 2000-02-23  Jason Merrill  <jason@casey.cygnus.com>
11272
11273         * decl.c (grokdeclarator): Call decl_type_access_control.
11274         * parse.y (parse_end_decl): Don't call decl_type_access_control if
11275         decl is null.
11276
11277 2000-02-23  Nathan Sidwell  <nathan@codesourcery.com>
11278
11279         * decl.c (decls_match): Remove obsolete static member nadgering.
11280
11281 2000-02-21  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
11282
11283         * decl.c (grokdeclarator): Change ANSI to ISO.
11284         * lex.c (consume_string, readescape, do_identifier): Likewise.
11285         (parse_float, real_yylex): Likewise.
11286         * parse.y (paren_expr_or_null, paren_cond_or_null): Likewise.
11287         (unary_expr, new_initializer, cast_expr, primary, primary_no_id,
11288         new_type_id, maybe_label_decls, simple_stmt,
11289         for.init.statement): Likewise.
11290         * pt.c (do_decl_instantiation, do_type_instantiation): Likewise.
11291         * semantics.c (finish_named_return_value): Likewise.
11292         * parse.c: Regenerate.
11293
11294 2000-02-21  Mark Mitchell  <mark@codesourcery.com>
11295
11296         * cp-tree.h (CPTI_VTABLE_INDEX_TYPE): New macro.
11297         (CPTI_CLASS_STAR_TYPE): Remove.
11298         (vtable_index_type): Likewise.
11299         (class_star_type_node): Remove.
11300         (TYPE_PTRMEMFUNC_FN_TYPE): Adjust for the new ABI.
11301         (build_binary_op_nodefault): Remove.
11302         * call.c (build_new_op): Use build_binary_op instead of
11303         build_binary_op_nodefault.
11304         * decl.c (init_decl_processing): Remove class_star_type_node
11305         initialization.  Make delta_type_node ptrdiff_type_node under the
11306         new ABI.  Initialize vtable_index_type.
11307         (build_ptrmemfunc_type): Build different structures for the new
11308         ABI.
11309         (build_enumerator): Use build_binary_op instead of
11310         build_binary_op_nodefault.
11311         * method.c (build_overload_value): Mangle pointers-to-members
11312         appropriately under the new ABI.
11313         * typeck.c (build_array_ref): Use build_binary_op instead of
11314         build_binary_op_nodefault.
11315         (get_member_function_from_ptrfunc): Adjust for the new ABI.
11316         (build_binary_op_nodefault): Rename to ...
11317         (build_binary_op): ... this.  Remove old version.  Adjust for
11318         pointer-to-member comparisons under the new ABI.
11319         (build_ptrmemfunc1): Remove dead code.  Adjust for the new ABI.
11320         (build_ptrmemfunc): Adjust for the new ABI.
11321         (expand_ptrmemfunc_cst): Likewise.
11322         (delta2_from_ptrmemfunc): Assert that we're not using the new ABI.
11323         (pfn_from_ptrmemfunc): Adjust for the new ABI.
11324
11325 2000-02-21  Gabriel Dos Reis  <gdr@codesourcery.com>
11326
11327         * call.c (build_object_call): Compress consecutive calls to
11328         cp_error.
11329         (build_conditional_expr): Say 'ISO C++' not 'ANSI C++'.
11330         (build_op_delete_call): Adjust message formatting.
11331
11332         * class.c (check_bases): Compress consecutive calls to
11333         cp_pedwarn.
11334         (finish_struct_anon): Say 'ISO C++'.
11335
11336         * decl.c (start_decl): Same here.
11337         (grok_reference_init): Likewise.
11338         (grokfndecl): Correct message formatting.
11339         (grokfndecl): Improve diagnostic.
11340         (check_static_variable_definition): Likewise. Say 'ISO C++'
11341         (compute_array_index_type): Say 'ISO C++'
11342         (create_array_type_for_decl): Compress consecutive calls to
11343         cp_error.
11344         (grokdeclarator): Say 'ISO C++'
11345         (grok_op_properties): Likewise.
11346
11347         * decl2.c (delete_sanity): Clairify diagnostic.
11348         (check_member_template): Same here.
11349         (grok_function_init): Use consistent terminology.
11350
11351         * expr.c (do_case): Say 'ISO C++'
11352
11353         * friend.c (do_friend): Compress consecutive calls to warning.
11354
11355 2000-02-20  Mark Mitchell  <mark@codesourcery.com>
11356
11357         * cp-tree.h (merge_primary_and_secondary_vtables_p): New macro.
11358         * class.c (build_secondary_vtable): Reorganize.  Don't create a
11359         new vtable under the new ABI.
11360         (layout_vtable_decl): Don't add num_extra_vtbl_entries when
11361         computing the size.
11362         (build_vtbl_initializer): Don't return a CONSTRUCTOR; just return
11363         the initializing elements.
11364         (initialize_vtable): New function.
11365         (dfs_finish_vtbls): Use it.
11366         (dfs_accumulate_vtbl_inits): New function.
11367         (finish_vtbls): Merge primary and secondary vtables under the new
11368         ABI.
11369         (finish_struct_1): Remove redundant call to layout_vtable_decl.
11370         * init.c (expand_virtual_init): Deal with BINFO_VTABLEs that
11371         aren't VAR_DECLs.
11372
11373         * class.c (build_vtable): New function, split out from ...
11374         (get_vtable_decl): ... here, and ...
11375         (build_secondary_vtable): ... here.
11376
11377         * pt.c (tsubst_decl): Fix formatting.
11378
11379 Sat Feb 19 18:43:13 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11380
11381         * class.c (build_primary_vtable, layout_vtable_decl): Likewise.
11382         (avoid_overlap, build_base_field): Likewise.
11383         (build_base_field, build_base_fields, is_empty_class):
11384         Test DECL_SIZE with integer_zero.
11385         (layout_class_type): Set CLASSTYPE_SIZE_UNIT.
11386         * cp-tree.h (struct lang_type): New field size_unit.
11387         (CLASSTYPE_SIZE_UNIT): New macro.
11388         * decl.c (init_decl_processing): Set DECL_SIZE_UNIT.
11389         (cp_finish_decl): Delete -Wlarger-than processing.
11390         * optimize.c (remap_decl): Walk DECL_SIZE_UNIT.
11391         * pt.c (tsubst_decl): Set DECL_SIZE_UNIT.
11392         * tree.c (make_binfo): binfo vector is one entry longer.
11393         (walk_tree): Walk DECL_SIZE_UNIT.
11394
11395 2000-02-19  Mark Mitchell  <mark@codesourcery.com>
11396
11397         * class.c (dfs_build_vcall_offset_vtbl_entries): Fix typo in
11398         comment.
11399         (build_vtable_entry): Don't assume all vtable entries are
11400         functions.
11401         (build_vtbl_initializer): Adjust accordingly.
11402         (get_vtable_decl): Fix formatting.
11403
11404 2000-02-18  Jason Merrill  <jason@casey.cygnus.com>
11405
11406         * semantics.c (deferred_type_access_control): Walk the entire
11407         type_lookups list.
11408         (save_type_access_control): Rename from
11409         initial_deferred_type_access_control.  Just remember the value.
11410         (decl_type_access_control): New fn.
11411         (begin_function_definition): Use deferred_type_access_control, after
11412         we've started the function.  Set type_lookups to error_mark_node.
11413         * parse.y (frob_specs, fn.def1): Adjust.
11414         (parse_decl0, parse_field, parse_field0, parse_bitfield): New fns.
11415         (parse_end_decl, parse_bitfield0, parse_method): New fns.
11416         (fn.def2, initdcl, initdcl0_innards, nomods_initdcl0): Use them.
11417         (after_type_component_declarator0): Likewise.
11418         (after_type_component_declarator): Likewise.
11419         (notype_component_declarator): Likewise.
11420         * cp-tree.h: Adjust.
11421
11422         * decl.c (redeclaration_error_message): Allow redeclaration of
11423         namespace-scope decls.
11424
11425 2000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
11426
11427         * typeck2.c (my_friendly_abort): Use GCCBUGURL.
11428
11429 2000-02-17  Mark Mitchell  <mark@codesourcery.com>
11430
11431         * class.c (add_method): Don't set DECL_VIRTUAL_CONTEXT.
11432         * decl2.c (grokclassfn): Likewise.
11433
11434         * ir.texi: Document DECL_TEMPLATE_INSTANTIATIONS.
11435
11436         * decl2.c (lang_decode_option): Don't set default message length
11437         here.
11438         * lex.c (lang_init_options): Set it here.
11439
11440 2000-02-16  Mark Mitchell  <mark@codesourcery.com>
11441
11442         Make DECL_CONTEXT mean the class in which a member function was
11443         declared, even for a virtual function.
11444         * cp-tree.h (DECL_CLASS_CONTEXT): Adjust.
11445         (DECL_FRIEND_CONTEXT): New macro.
11446         (DECL_REAL_CONTEXT): Remove.
11447         (SET_DECL_FRIEND_CONTEXT): Likewise.
11448         (DECL_VIRTUAL_CONTEXT): Adjust.
11449         (DECL_CLASS_SCOPE_P): Use TYPE_P.
11450         (add_friends): Remove.
11451         (hack_decl_function_context): Likewise.
11452         * call.c (build_new_function_call): Replace DECL_REAL_CONTEXT with
11453         CP_DECL_CONTEXT.
11454         (build_over_call): Fix indentation.  Use DECL_CONTEXT
11455         instead of DECL_CLASS_CONTEXT.
11456         * class.c (dfs_build_vcall_offset_vtbl_entries): Likewise.
11457         (add_method): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT.
11458         (strictly_overrides): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
11459         (build_vtbl_or_vbase_field): Don't set DECL_CLASS_CONTEXT.
11460         (build_base_field): Likewise.
11461         (finish_struct_1): Likewise.
11462         (build_self_reference): Likewise.
11463         * decl.c (push_class_binding): Use CP_DECL_CONTEXT, not
11464         DECL_REAL_CONTEXT.
11465         (pushtag): Use decl_function_context, not
11466         hack_decl_function_context.
11467         (decls_match): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
11468         (duplicate_decls): Use DECL_VIRTUAL_CONTEXT.
11469         (pushdecl): Remove bogus code.
11470         (start_decl): Use DECL_CONTEXT rather than DECL_CLASS_CONTEXT.
11471         (cp_finish_decl): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
11472         (grokfndecl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
11473         Use decl_function_context, nothack_decl_function_context.
11474         (grokvardecl): Don't set DECL_CLASS_CONTEXT.
11475         (grokdeclarator): Likewise.  Use decl_function_context, not
11476         hack_decl_function_context.
11477         (copy_args_p): Document.  Don't use DECL_CLASS_CONTEXT.
11478         (start_function): Use DECL_FRIEND_CONTEXT, not
11479         DECL_CLASS_CONTEXT.  Use decl_function_context, not
11480         hack_decl_function_context.
11481         (finish_function): Use decl_function_context, not
11482         hack_decl_function_context.
11483         (maybe_retrofit_in_chrg): Use DECL_CONTEXT, not
11484         DECL_CLASS_CONTEXT.
11485         (grokclassfn): Set DECL_VIRTUAL_CONTEXT, not DECL_CONTEXT.
11486         (finish_static_data_member_decl): Don't set DECL_CLASS_CONTEXT.
11487         (grokfield): Likewise.
11488         (finish_builtin_type): Likewise.
11489         (finish_vtable_vardec): Use decl_function_context, not
11490         hack_decl_function_context.
11491         (import_export_decl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
11492         (start_static_initialization_or_destruction): Likewise.
11493         (finish_static_initialization_or_destruction): Likewise.
11494         (mark_used): Adjust logic for deciding when to synthesize methods.
11495         * dump.c (dequeue_and_dump): Use CP_DECL_CONTEXT, not
11496         DECL_REAL_CONTEXT.
11497         * error.c (dump_function_decl): Use DECL_CONTEXT, not
11498         DECL_CLASS_CONTEXT.
11499         * friend.c (is_friend): Likewise.
11500         (add_friends): Remove.
11501         (do_friend): Use SET_DECL_FRIEND_CONTEXT.
11502         * lex.c (begin_definition_of_inclass_inline): Use
11503         decl_function_context, not hack_decl_function_context.
11504         (process_next_inline): Likewise.
11505         (do_identifier): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
11506         * method.c (set_mangled_name_for_decl): Use DECL_CONTEXT, not
11507         DECL_CLASSS_CONTEXT.
11508         (hack_identifier): Likewise.
11509         (synthesize_method):  Use decl_function_context, not
11510         hack_decl_function_context.
11511         * pt.c (template_class_depth_real): Use CP_DECL_CONTEXT, not
11512         DECL_REAL_CONTEXT.
11513         (is_member_template): Use decl_function_context, not
11514         hack_decl_function_context.  Use DECL_CONTEXT, not
11515         DECL_CLASS_CONTEXT.
11516         (build_template_decl): Set DECL_VIRTUAL_CONTEXT, not
11517         DECL_CLASS_CONTEXT.
11518         (check_default_tmpl_args): Use CP_DECL_CONTEXT, not
11519         DECL_REAL_CONTEXT.
11520         (push_template_decl_real): Likewise.
11521         (instantiate_class_template): Don't call add_friends.
11522         (tsubst_default_argument): Use DECL_CONTEXT, not
11523         DECL_REAL_CONTEXT.
11524         (tsubst_decl): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT.
11525         Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
11526         (set_meangled_name_for_template_decl): Use DECL_CONTEXT, not
11527         DECL_CLASS_CONTEXT.
11528         * repo.c (repo_inline_used): Likewise.
11529         * search.c (current_scope): Adjust for new _CONTEXT macros.
11530         (context_for_name_lookup): Use CP_DECL_CONTEXT, not
11531         DECL_REAL_CONTEXT.
11532         (friend_accessible_p): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
11533         (lookup_fnfields_here):Likewise.
11534         (check_final_overrider): Likewise.
11535         (init_vbase_pointers): Likewise.
11536         (virtual_context): Likewise.
11537         * semantics.c (finish_member_declaration): Just set DECL_CONTEXT.
11538         (expand_body): Use decl_function_context, not
11539         hack_decl_function_context.
11540         * tree.c (hack_decl_function_context): Remove.
11541         * typeck.c (build_x_function_call): Use DECL_CONTEXT, not
11542         DECL_CLASS_CONTEXT.
11543         * typeck2.c (error_not_base_type): Likewise.
11544
11545 2000-02-15  Jason Merrill  <jason@casey.cygnus.com>
11546
11547         * decl.c (xref_tag): Don't SET_IDENTIFIER_NAMESPACE_VALUE.
11548
11549 2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11550
11551         * Make-lang.in (g++spec.o): Depend on $(GCC_H), not gcc.h.
11552
11553 2000-02-15  Jonathan Larmour  <jlarmour@redhat.co.uk>
11554
11555         * lang-specs.h: Add new __GNUC_PATCHLEVEL__ define to default spec.
11556
11557 2000-01-16  Gabriel Dos Reis  <gdr@codesourcery.com>
11558
11559         * decl2.c (lang_decode_option): Enable automatic line wrapping.
11560
11561 2000-02-13  Jason Merrill  <jason@casey.cygnus.com>
11562
11563         * parse.y (frob_specs): Split out...
11564         (parse_decl): From here.
11565         (fn.def2): Call initial_deferred_type_access_control.
11566         (after_type_component_declarator0): Call frob_specs.
11567         (notype_component_declarator0): Likewise.
11568         * search.c (friend_accessible_p): Nested classes are friends of their
11569         enclosing classes.
11570
11571 2000-02-10  Mark Mitchell  <mark@codesourcery.com>
11572
11573         * ir.texi (ADDR_EXPR): Document the fact that an ADDR_EXPR can be
11574         used to create an implicit temporary.
11575
11576         * class.c (dfs_modify_vtables): Tweak calculation of functions to
11577         override.
11578
11579 2000-02-08  Nathan Sidwell  <nathan@acm.org>
11580
11581         * typeck.c (strip_all_pointer_quals): Use TYPE_MAIN_VARIANT, to
11582         strip array element qualifiers too.
11583
11584 2000-02-07  Mark Mitchell  <mark@codesourcery.com>
11585
11586         * decl.c (store_parm_decls): Don't build cleanups for parameters
11587         while processing_template_decl.
11588
11589 2000-02-07  Jason Merrill  <jason@casey.cygnus.com>
11590
11591         * cp-tree.h (struct saved_scope): Add incomplete field.
11592         (namespace_scope_incomplete): New macro.
11593         * decl.c (pushdecl): Use it.
11594         (hack_incomplete_structures): Use it.  See through artificial
11595         binding levels.
11596         (mark_saved_scope): Mark it.
11597
11598         Implement access control for nested types.
11599         * search.c (type_access_control): New fn.
11600         (accessible_p): Now we do perform access control for types.
11601         * semantics.c (deferred_type_access_control): New fn.
11602         (initial_deferred_type_access_control): New fn.
11603         (begin_function_definition): Call it.  Add lookups parm.
11604         * decl.c (struct binding_level): Add this_class field.
11605         (pushlevel_class): Set it.
11606         (mark_binding_level): Mark it.
11607         (lookup_name_real): Use it.  Call type_access_control.
11608         (mark_saved_scope): Mark lookups field.
11609         * cp-tree.h (flagged_type_tree): Add lookups field.
11610         (struct saved_scope): Add lookups field.
11611         (type_lookups): New macro.
11612         * parse.y (declmods): Now <ftype>.
11613         (parse_decl): Add lookups parm.  Call
11614         initial_deferred_type_access_control.
11615         (lang_extdef): Clear type_lookups.
11616         (typed_declspecs, declmods, typespec): Set lookups field.
11617         (initdcl): Call deferred_type_access_control.
11618         (fn.def1, fn.def2, typed_declspecs1, initdcl0_innards, nomods_initdcl0,
11619         component_decl_1, named_parm): Adjust.
11620         * friend.c (is_friend): Nested classes are friends of their
11621         enclosing classes.
11622
11623         * class.c (currently_open_derived_class): New fn.
11624         * method.c (hack_identifier): Use it.
11625
11626         * lex.c (do_identifier): Remove obsolete code.
11627
11628         * parse.y (typed_typespecs): Propagate new_type_flag properly.
11629
11630 2000-02-05  Zack Weinberg  <zack@wolery.cumb.org>
11631
11632         * tinfo.h: Remove apostrophes from C++ comment (xgettext
11633         thinks this file is plain C).
11634
11635 2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11636
11637         * Makefile.in (call.o): Depend on $(EXPR_H).
11638
11639         * call.c: Include "expr.h".
11640
11641         * class.c (dump_class_hierarchy): Add prototype.
11642
11643         * search.c (dfs_get_pure_virtuals): Likewise.
11644
11645 2000-02-1  Ulrich Drepper  <drepper@redhat.com>
11646
11647         * parse.y (simple_stmt): Allow :: token in asm parameter list.
11648         * parse.c: Rebuilt.
11649
11650 Mon Jan 31 15:35:29 2000  Jim Wilson  <wilson@cygnus.com>
11651
11652         * class.c (build_vtbl_or_vbase_field): New parameter fcontext.
11653         Store it in DECL_FCONTEXT.
11654         (build_vbase_pointer_fields, create_vtable_ptr): Fix callers.
11655
11656 2000-01-31  Jason Merrill  <jason@casey.cygnus.com>
11657
11658         * tinfo.h (old abi): #include "tconfig.h".
11659         * tinfo.cc (convert_to_base): Move into old abi section.
11660
11661 2000-01-31  Mark Mitchell  <mark@codesourcery.com>
11662
11663         * cp-tree.h (BINFO_VIRTUALS): Tweak documentation.
11664         (CLASSTYPE_PRIMARY_BINFO): Use BINFO_PRIMARY_BINFO.
11665         (BINFO_PRIMARY_BINFO): New macro.
11666         (BF_DELTA): Rename to ...
11667         (BV_DELTA): ... this.
11668         (BF_VCALL_INDEX): Rename to ...
11669         (BV_VCALL_INDEX): ... this.
11670         (BF_FN): Rename to ...
11671         (BV_FN): ... this.
11672         * class.c (build_vbase_path): Adjust for changes to reverse_path.
11673         (set_rtti_entry): Rename BF_ macros to BV_ variants.
11674         (modify_vtable_entry): Simplify.
11675         (add_virtual_function): Rename BF_ macros to BV_ variants.
11676         (build_vtable_initializer): Likewise.
11677         (get_class_offset_1): Remove.
11678         (dfs_get_class_offset): Likewise.
11679         (get_class_offset): Likewise.
11680         (dfs_find_final_overrider): New function.
11681         (find_final_overrider): Likewise.
11682         (modify_one_vtable): Remove.
11683         (dfs_find_base): New function.
11684         (dfs_modify_vtables): Fold modify_one_vtable in here.  Use
11685         find_final_overrider.
11686         (modify_all_vtables): Adjust.  Set BV_VCALL_INDEX on new
11687         virtuals.
11688         (dfs_fixup_vtable_deltas): Remove.
11689         (override_one_vtable): Remove.
11690         (merge_overrides): Likewise.
11691         (layout_virtual_bases): Make sure BINFO_OFFSET is set right for
11692         unreal chilren of virtual bases.
11693         (finish_struct_1): Don't use merge_overrides.  Don't use
11694         dfs_fixup_vtable_deltas.
11695         * tree.c (reverse_path): Return a TREE_LIST, not a chain of
11696         BINFOs.
11697
11698 2000-01-31  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
11699             Jason Merrill  <jason@yorick.cygnus.com>
11700
11701         * tinfo.h: Rename USItype to myint32, depend on BITS_PER_UNIT.
11702
11703 2000-01-31  Alfred Minarik <a8601248@unet.univie.ac.at>
11704
11705         * exception.cc (__throw_bad_typeid): Add missing std::.
11706
11707 2000-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11708
11709         * cp-tree.h (make_thunk): PROTO -> PARAMS.
11710
11711 2000-01-31  Nathan Sidwell  <sidwell@codesourcery.com>
11712
11713         * cp-tree.h (new_abi_rtti_p): Use flag_new_abi.
11714
11715         Runtime support for new-abi rtti.
11716         * inc/typeinfo (type_info::operator!=): Define in class.
11717         (type_info::before, type_info::name, type_info::operator==,
11718         type_info::operator!=): Define new ABI implementations.
11719         (type_info::is_pointer_p, type_info::is_function_p): Declare
11720         new virtual functions.
11721         (type_info::do_catch, type_info::do_upcast): Likewise.
11722
11723         * tinfo.h (__base_class_info): Define new class.
11724         (__class_type_info): Likewise.
11725         (__si_class_type_info): Likewise.
11726         (__vmi_class_type_info): Likewise.
11727         (__dynamic_cast): Prototype.
11728
11729         * tinfo.cc: Conditionalize old and new rtti mechanisms.
11730         (type_info::is_pointer_p): Define new function.
11731         (type_info::is_function_p): Likewise.
11732         (type_info::do_catch): Likewise.
11733         (type_info::do_upcast): Likewise.
11734         (vtable_prefix): New structure for vtable access.
11735         (adjust_pointer): Define new template function.
11736         (contained_p, public_p, virtual_p, contained_public_p,
11737         contained_nonpublic_p, contained_nonvirtual_p): Define new
11738         functions.
11739         (nonvirtual_base_type): New local variable.
11740         (__class_type_info::~__class_type_info): Define.
11741         (__si_class_type_info::~__si_class_type_info): Likewise.
11742         (__vmi_class_type_info::~__vmi_class_type_info): Likewise.
11743         (__class_type_info::do_catch): Define new function.
11744         (__class_type_info::do_upcast): Likewise.
11745         (__class_type_info::find_public_src): Likewise.
11746         (__class_type_info::do_find_public_src): Likewise.
11747         (__si_class_type_info::do_find_public_src): Likewise.
11748         (__vmi_class_type_info::do_find_public_src): Likewise.
11749         (__class_type_info::do_dyncast): Likewise.
11750         (__si_class_type_info::do_dyncast): Likewise.
11751         (__vmi_class_type_info::do_dyncast): Likewise.
11752         (__class_type_info::do_upcast): Likewise.
11753         (__si_class_type_info::do_upcast): Likewise.
11754         (__vmi_class_type_info::do_upcast): Likewise.
11755         (__dynamic_cast): Likewise.
11756
11757         * tinfo2.cc (__fundamental_type_info): Define new class.
11758         (__pointer_type_info): Likewise.
11759         (__reference_type_info): Likewise.
11760         (__array_type_info): Likewise.
11761         (__function_type_info): Likewise.
11762         (__enum_type_info): Likewise.
11763         (__ptr_to_member_type_info): Likewise.
11764         (__fundamental_type_info::~__fundamental_type_info): Define.
11765         (__pointer_type_info::~__pointer_type_info): Likewise.
11766         (__reference_type_info::~__reference_type_info): Likewise.
11767         (__array_type_info::~__array_type_info): Likewise.
11768         (__function_type_info::~__function_type_info): Likewise.
11769         (__enum_type_info::~__enum_type_info): Likewise.
11770         (__ptr_to_member_type_info::~__ptr_to_member_type_info): Likewise.
11771         (__pointer_type_info::do_catch): Define new function.
11772         (__ptr_to_member_type_info::do_catch): Define new function.
11773
11774         (__throw_type_match_rtti_2): Use new ABI interface, if enabled.
11775         (__is_pointer): Likewise.
11776
11777         * exception.cc (__cplus_type_matcher): Deal with new-abi rtti.
11778
11779 2000-01-30  Mark Mitchell  <mark@codesourcery.com>
11780
11781         * cp/class.c (build_vtable): Rename to build_primary_vtable.
11782         (prepare_fresh_vtable): Rename to build_secondary_vtable.
11783         (make_new_vtable): New function.
11784         (modify_vtable_entry): Handle generation of new vtables correctly.
11785         (modify_one_vtable): Remove unused parameter.
11786         (dfs_fixup_vtable_deltas): Likewise.
11787         (override_one_vtable): Use build_secondary_vtable.
11788         (finish_struct_1): Use build_primary_vtable and
11789         build_secondary_vtable.
11790
11791 2000-01-28  Ulrich Drepper  <drepper@redhat.com>
11792
11793         * cp/decl.c: Adjust variable names, comments, help strings.
11794
11795 2000-01-29  Nathan Sidwell  <nathan@acm.org>
11796
11797         * new2.cc (operator delete[]): Use operator delete, don't assume
11798         implementation.
11799
11800 2000-01-29  Nathan Sidwell  <sidwell@codesourcery.com>
11801
11802         * class.c (build_vtbl_initializer): Add argument to
11803         build_vtable_entry call.
11804
11805 2000-01-27  Mark Mitchell  <mark@codesourcery.com>
11806
11807         * cp-tree.def (THUNK_DECL): Discuss vcall indices.
11808         * cp-tree.h (BINFO_VIRTUALS): Update documentation.
11809         (BF_DELTA): New macro.
11810         (BF_VCALL_INDEX): Likewise.
11811         (BF_FN): Likewise.
11812         (THUNK_VCALL_OFFSET): Likewise.
11813         (make_thunk): Change prototype.
11814         * class.c (build_vtable_entry): Integrate
11815         build_vtable_entry_for_fn.  Handle vcall indices.
11816         (build_vtable_entry_for_fn): Remove.
11817         (set_rtti_entry): Handle vcall indices.  Use BF_DELTA,
11818         BF_VCALL_INDEX, BF_FN.
11819         (modify_vtable_entry): Integrate common code from
11820         modify_one_vtable and dfs_fixup_vtable_deltas.
11821         (add_virtual_function): Set BF_VCALL_INDEX.
11822         (build_vtbl_initializer): Simplify.  Use BF_DELTA, BF_VCALL_INDEX,
11823         and BF_FN.
11824         (modify_one_vtable): Simplify.
11825         (dfs_fixup_vtable_deltas): Likewise.
11826         (override_one_vtable): Use BF_DELTA, BF_VCALL_INDEX, BF_FN.
11827         * method.c (make_thunk): Handle vcall indices.
11828
11829 2000-01-28  Nathan Sidwell  <sidwell@codesourcery.com>
11830
11831         Compiler side new abi rtti (not enabled).
11832         * cp-tree.h (new_abi_rtti_p): New macro.
11833         (emit_support_tinfos): Prototype new function.
11834         (tinfo_decl_p): Likewise.
11835         (emit_tinfo_decl): Likwise.
11836         * rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL): New accessor
11837         macros.
11838         (doing_runtime): New local static.
11839         (init_rtti_processing): Add new-abi initializer.
11840         (get_tinfo_decl): Add new-abi logic.
11841         (tinfo_from_decl): Likewise.
11842         (build_dynamic_cast_1): Likewise.
11843         (qualifier_flags): New static function.
11844         (tinfo_base_init): Likewise.
11845         (generic_initializer): Likewise.
11846         (ptr_ref_initializer): Likewise.
11847         (ptmd_initializer): Likewise.
11848         (class_hint_flags): Likewise.
11849         (class_initializer): Likewise.
11850         (synthesize_tinfo_var): Likewise.
11851         (create_real_tinfo_var): Likewise.
11852         (create_pseudo_type_info): Likewise.
11853         (get_vmi_pseudo_type_info): Likewise.
11854         (create_tinfo_types): Likewise.
11855         (emit_support_tinfos): New global function.
11856         (tinfo_decl_p): New global predicate.
11857         (emit_tinfo_decl): New global function.
11858         * class.c (set_rtti_entry): Generalize for old and new rtti.
11859         (build_vtbl_initializer): Likewise.
11860         * decl2.c (finish_file): Likewise.
11861
11862 Thu Jan 27 20:53:36 2000  Jim Wilson  <wilson@cygnus.com>
11863
11864         * optimize.c (remap_decl): Add walk_tree calls for DECL_SIZE (t)
11865         and TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (t))).
11866
11867 Thu Jan 27 13:54:12 2000  Mike Stump  <mrs@wrs.com>
11868
11869         * decl.c (pushdecl): Fix up shadow warnings with respect to implicit
11870         for scopes.
11871
11872 2000-01-26  Jason Merrill  <jason@casey.cygnus.com>
11873
11874         * pt.c (unify): Use fold, not maybe_fold_nontype_arg.
11875
11876 Wed Jan 26 22:19:14 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
11877
11878         * optimize.c (calls_setjmp_r): Supply new argument
11879         to special_function_p.
11880
11881 2000-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11882
11883         * call.c: PROTO -> PARAMS.
11884         * class.c: Likewise.
11885         * cp-tree.h: Likewise.
11886         * cvt.c: Likewise.
11887         * decl.c: Likewise.
11888         * decl.h: Likewise.
11889         * decl2.c: Likewise.
11890         * dump.c: Likewise.
11891         * errfn.c: Likewise.
11892         * error.c: Likewise.
11893         * except.c: Likewise.
11894         * expr.c: Likewise.
11895         * init.c: Likewise.
11896         * input.c: Likewise.
11897         * lex.c: Likewise.
11898         * lex.h: Likewise.
11899         * method.c: Likewise.
11900         * optimize.c: Likewise.
11901         * parse.y: Likewise.
11902         * pt.c: Likewise.
11903         * repo.c: Likewise.
11904         * rtti.c: Likewise.
11905         * search.c: Likewise.
11906         * semantics.c: Likewise.
11907         * spew.c: Likewise.
11908         * tree.c: Likewise.
11909         * typeck.c: Likewise.
11910         * typeck2.c: Likewise.
11911         * xref.c: Likewise.
11912
11913 2000-01-25  Richard Henderson  <rth@cygnus.com>
11914
11915         * typeck.c (build_binary_op_nodefault): Remove UNNE_EXPR.
11916
11917 2000-01-25  Mark Mitchell  <mark@codesourcery.com>
11918
11919         * cp-tree.h (vcall_offset_in_vtable_p): New macro.
11920         * class.c (build_vbase_offset_vtbl_entries): Fix typo in commment.
11921         (struct vcall_offset_data_s): New type.
11922         (dfs_vcall_offset_queue_p): New function.
11923         (dfs_build_vcall_offset_vtbl_entries): Likewise.
11924         (build_vcall_offset_vtbl_entries): Likewise.
11925         (layout_vtable_decl): Likewise.
11926         (num_vfun_entries): Likewise.
11927         (num_extra_vtbl_entries): Add the entries for vcall offsets.
11928         (build_vtbl_initializer): Likewise.
11929         (dfs_finish_vtabls): Use layout_vtable_decl.
11930         (modify_one_vtables): Always duplicate vtables under the new ABI.
11931         (finish_struct_1): Use layout_vtable_decl.
11932
11933 2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11934
11935         * decl.c (member_function_or_else): Change third arg from a format
11936         specifier to an `enum overload_flags'.  Callers changed.
11937
11938 2000-01-25  Gabriel Dos Reis  <gdr@codesourcery.com>
11939
11940         * typeck.c (composite_pointer_type, c_sizeof, expr_sizeof,
11941         build_binary_op_nodefault, build_unary_op, build_reinterpret_cast,
11942         build_const_cast, get_delta_difference, check_return_expr): Avoid
11943         ANSI string concatenation usage.
11944
11945 2000-01-24  Mark Mitchell  <mark@codesourcery.com>
11946
11947         * class.c (layout_class_type): Put the fields required to make a
11948         class non-empty at the end, not the beginning, of the TYPE_FIELDs
11949         list.
11950
11951 2000-01-24  Jason Merrill  <jason@casey.cygnus.com>
11952
11953         * pt.c (maybe_fold_nontype_arg): Do nothing if we're not in a
11954         template.
11955
11956         * decl2.c (mark_used): Do instantiate inlines that have been
11957         explicitly instantiated.
11958
11959 2000-01-24  Richard Henderson  <rth@cygnus.com>
11960
11961         * call.c (build_over_call): Use expand_tree_builtin.
11962         * typeck.c (build_function_call_real): Likewise.
11963         (build_binary_op_nodefault): Handle unordered compares.
11964
11965 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
11966
11967         * cp-tree.h (CPTI_BAD_CAST, CPTI_BAD_TYPEID, CPTI_DCAST): New
11968         cp_tree_index values.
11969         (throw_bad_cast_node, throw_bad_typeid_node, dynamic_cast_node):
11970         New global node #defines for them.
11971         * rtti.c (call_void_fn): Replace with ...
11972         (build_runtime_decl): ... new static function.
11973         (throw_bad_cast): Use throw_bad_cast_node and build_runtime_decl.
11974         (throw_bad_typeid): Use throw_bad_typeid_node and build_runtime_decl.
11975         (build_dynamic_cast_1): Always produce correctly typed result.
11976         Explicitly produce type_info addresses. Use dynamic_cast_node.
11977         * exception.cc (__throw_bad_cast): Return `void *'.
11978         (__throw_bad_typeid): Return `const type_info &'.
11979
11980 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
11981
11982         * cp-tree.h (get_vtable_decl): Prototype new function.
11983         * class.c (get_vtable_decl): New function. Broken out from ...
11984         (build_vtable): ... here. Use it.
11985         * decl2.c (finish_vtable_vardecl): Ignore dummy vtables created
11986         by get_vtable_decl.
11987
11988 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
11989
11990         * cp-tree.h (CPTI_TP_DESC_TYPE, CPTI_ACCESS_MODE_TYPE,
11991         CPTI_USER_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_ATTR_DESC_TYPE,
11992         CPTI_PTMF_DESC_TYPE): Remove cp_tree_index enumerations.
11993         (CPTI_TI_DESC_TYPE, CPTI_REF_DESC_TYPE, CPTI_ARY_DESC_TYPE,
11994         CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_SI_CLASS_DESC_TYPE,
11995         CPTI_VMI_CLASS_DESC_TYPE, CPTI_BASE_DESC_TYPE): New enumerations.
11996         (CPTI_TINFO_FN_ID, CPTI_TINFO_FN_TYPE): Rename to ...
11997         (CPTI_TINFO_DECL_ID, CPTI_TINFO_DECL_TYPE): ... here.
11998         (CPTI_TINFO_VAR_ID): New enumeration.
11999         (__tp_desc_type_node, __access_mode_type_node,
12000         __bltn_desc_type_node, __user_desc_type_node,
12001         __class_desc_type_node, __ptr_desc_type_node,
12002         __attr_desc_type_node, __func_desc_type_node,
12003         __ptmf_desc_type_node, __ptmd_desc_type_node): Remove #defines.
12004         (ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
12005         ref_desc_type_node, ary_desc_type_node, func_desc_type_node,
12006         enum_desc_type_node, class_desc_type_node,
12007         si_class_desc_type_node, vmi_class_desc_type_node,
12008         ptmd_desc_type_node, base_desc_type_node): New #defines.
12009         (tinfo_fn_id, tinfo_fn_type): Rename to ...
12010         (tinfo_decl_id, tinfo_decl_type): ... here. Adjust.
12011         (tinfo_var_id): New enumeration.
12012         (DECL_TINFO_FN_P): Augment comment.
12013         * decl.c (cp_global_trees): Adjust documentation.
12014         * rtti.c (init_rtti_processing): Adjust for tinfo_decl_id,
12015         tinfo_decl_type and tinfo_var_id.
12016         (get_tinfo_decl_dynamic): Adjust for tinfo_decl_type.
12017         (build_typeid): Remove unused variable.
12018         (get_tinfo_var): Use tinfo_var_id.
12019         (tinfo_name): New static function.
12020         (get_tinfo_decl): Adjust for tinfo_decl_id and tinfo_decl_type.
12021         (tinfo_from_decl): Likewise.
12022         (get_base_offset): New static function, broken out of
12023         expand_class_desc.
12024         (expand_si_desc): Use tinfo_name.
12025         (expand_class_desc): Likewise. Lose local static variable.
12026         Use base_desc_type_node. Use get_base_offset.
12027         (expand_ptr_desc): Use tinfo_name.
12028         (expand_attr_desc): Likewise.
12029         (expand_generic_desc): Likewise.
12030
12031         * tinfo.cc (__GXX_ABI_VERSION): Test value and existence.
12032         * tinfo.h (__GXX_ABI_VERSION): Test value and existence.
12033
12034 2000-01-23  Mark Mitchell  <mark@codesourcery.com>
12035
12036         * cp-tree.h (__eprintf): Remove declaration.
12037         * tree.c (__eprintf): Remove definition.
12038
12039 2000-01-23  Zack Weinberg  <zack@rabi.columbia.edu>
12040             Mark Mitchell  <mark@codesourcery.com>
12041
12042         * cp-tree.h (CLASSTYPE_MARKED_N, SET_CLASSTYPE_MARKED_N,
12043         CLEAR_CLASSTYPE_MARKED_N): Avoid signed vs. unsigned warnings.
12044
12045 2000-01-23  Brad Lucier  <lucier@math.purdue.edu>
12046
12047         * class.c (dump_class_hierarchy): Print HOST_WIDE_INT properly.
12048
12049 2000-01-23  Mark Mitchell  <mark@codesourcery.com>
12050
12051         * cp-tree.h (register_dtor_fn): New function.
12052         * decl.c (destroy_local_static): Rename to ...
12053         (register_dtor_fn): ... this.  Give it external linkage.
12054         (expand_static_init): Use it.
12055         * decl2.c (do_static_initialization): Likewise, if using
12056         __cxa_atexit.
12057         (do_static_destruction): Check that __cxa_atexit is not in use.
12058         (finish_file): Don't call do_static_destruction if using
12059         __cxa_atexit.
12060
12061         * typeck.c (convert_arguments): Restore two-message error
12062         reporting.
12063
12064 2000-01-20  Nathan Sidwell  <sidwell@codesourcery.com>
12065
12066         Remap dynamic cast hint values to be consistent across ABIs.
12067         * search.c (dynamic_cast_base_recurse): Remap generated value.
12068         (get_dynamic_cast_base_type): Adjust documentation.
12069         * tinfo.h (__user_type_info::dyncast): Likewise.
12070         (__user_type_info::find_public_subobj): Remap BOFF meaning.
12071         * tinfo.cc (__si_type_info::do_dyncast): Remap BOFF meaning.
12072         (__class_type_info::do_dyncast): Likewise.
12073         (__class_type_info::do_find_public_subobj): Likewise.
12074         * tinfo2.cc (__dynamic_cast): Remap BOFF parameter.
12075
12076 2000-01-19  Gabriel Dos Reis  <gdr@codesourcery.com>
12077
12078         * typeck.c (build_unary_op): Use cp_pedwarn, not pedwarn.
12079
12080         * typeck2.c (incomplete_type_error): Restore previous
12081         cp_error and cp_error_at call sequence.
12082
12083 2000-01-20  Brad Lucier  <lucier@math.purdue.edu>
12084
12085         * class.c (dump_class_hierarchy): Make format agree with argument;
12086         cast pointer to unsigned long and print with %lx.
12087
12088 2000-01-19  Gabriel Dos Reis  <gdr@codesourcery.com>
12089
12090         * decl2.c (lang_decode_option): Set default line-wrap length to 72.
12091
12092         * typeck.c (composite_pointer_type, common_type,
12093         comp_target_parms, c_sizeof, expr_sizeof, build_array_ref,
12094         build_function_call_real, convert_arguments,
12095         build_binary_op_nodefault, pointer_int_sum, pointer_diff,
12096         build_unary_op, mark_addressable, build_compound_expr,
12097         build_static_cast, build_reinterpret_cast, build_const_cast,
12098         build_c_cast, build_modify_expr, get_delta_difference,
12099         build_ptrmemfunc, check_return_expr): Replace 'ANSI C++' with
12100         'ISO C++'.  Fusion consecutive calls to diagnostic message routines
12101         into a single one.
12102         * typeck2.c (readonly_error, abstract_virtuals_error,
12103         process_init_constructor, check_for_new_type): Likewise.
12104
12105 2000-01-19  Mark Mitchell  <mark@codesourcery.com>
12106
12107         * tree.c (bot_manip): Set DECL_CONTEXT for newly created
12108         VAR_DECLs.
12109
12110 2000-01-18  Nathan Sidwell  <sidwell@codesourcery.com>
12111
12112         * cp-tree.h (get_tinfo_fn_dynamic): Remove prototype.
12113         (build_x_typeid): Likewise.
12114         (get_tinfo_fn): Likewise.
12115         (get_tinfo_fn_unused): Rename to ...
12116         (get_tinfo_decl): ... here.
12117         * rtti.c (build_headof): Replace logic error with assertion.
12118         (get_tinfo_fn_dynamic): Rename to ...
12119         (get_tinfo_decl_dynamic): ... here. Make static. Use
12120         complete_type_or_else.
12121         (build_x_typeid): Move into ...
12122         (build_typeid): ... here. Adjust call to
12123         get_tinfo_decl_dynamic. Use tinfo_from_decl. Simplify
12124         throw_bad_typeid expression.
12125         (get_tinfo_fn_unused): Rename to ...
12126         (get_tinfo_decl): ... here. Adjust comment.
12127         (get_tinfo_fn): Delete.
12128         (tinfo_from_decl): New static function.
12129         (get_typeid_1): Call get_tinfo_decl and tinfo_from_decl.
12130         (get_typeid): Use complete_type_or_else.
12131         (build_dynamic_cast_1): Adjust calls to
12132         get_tinfo_decl_dynamic. Simplify throw_bad_cast expression.
12133         * parse.y (primary): Adjust call to build_typeid.
12134         * except.c (build_eh_type_type_ref): Adjust call to
12135         get_tinfo_decl. Mark as used.
12136         * class.c (set_rtti_entry): Adjust call to get_tinfo_decl.
12137         * decl2.c (build_expr_from_tree): Adjust call to build_typeid.
12138         * parse.c: Regenerated.
12139
12140 2000-01-17  Mark Mitchell  <mark@codesourcery.com>
12141
12142         * class.c (fixed_type_or_null): Don't clear NONNULL.  Document
12143         calling convention.
12144         (resolves_to_fixed_type_p): Document calling convention.
12145         * rtti.c (build_x_typeid): Initialize NONNULL.
12146
12147         * cp-tree.h (build_shared_int_cst): New function.
12148         * call.c (build_over_call): Use DECL_VIRTUAL_CONTEXT, for clarity.
12149         * class.c (modify_vtable_entry): Likewise.
12150         (add_virtual_function): Split out code to generated shared
12151         INTEGER_CSTs to build_share_int_cst.
12152         (modify_all_vtables): Handle all the overridden functions here.
12153         Add overridden functions from non-primary virtual bases to the
12154         primary vtable.
12155         (finish_struct_1): Adjust call to modify_all_vtables.  Add
12156         overridden functions from non-primary bases to the vtable.
12157         * tree.c (build_shared_int_cst): New function.
12158
12159         * cp-tree.h (scratchalloc): Remove.
12160         (build_scratch_list): Likewise.
12161         * call.c (convert_class_to_reference): Replace build_scratch_list
12162         and build_expr_list with build_tree_list.
12163         (add_candidate): Replace scratchalloc with expralloc.  Note memory
12164         leak.
12165         (build_user_type_conversion_1):  Replace build_scratch_list
12166         and build_expr_list with build_tree_list.
12167         (build_new_op): Likewise.
12168         (build_op_delete_call): Likewise.
12169         (convert_like): Likewise.
12170         * cvt.c (ocp_convert): Likewise.
12171         * decl.c (start_decl): Likewise.
12172         (start_function): Likewise.
12173         (finish_destructor_body): Likewise.
12174         (maybe_build_cleanup_1): Likewise.
12175         * decl2.c (reparse_decl_as_expr): Likewise.
12176         * init.c (perform_member_init): Likewise.
12177         (expand_cleanup_for_base): Likewise.
12178         (build_builtin_delete_call): Likewise.
12179         (build_new_1): Likewise.
12180         (build_delete): Likewise.
12181         * method.c (do_build_assign_ref): Likewise.
12182         * parse.y (already_scoped_stmt): Likewise.
12183         (nontrivial_exprlist): Likewise.
12184         (net_initializer): Likewise.
12185         (initlist): Likewise.
12186         * parse.c: Regenerated.
12187         * rtti.c (build_x_typeid): Likewise.
12188         (build_dynamic_cast_1): Likewise.
12189         * typeck.c (build_x_compound_expr): Likewise.
12190         (build_static_cast): Likewise.
12191         (build_modify_expr): Likewise.
12192
12193         * cp-tree.h (DECL_VINDEX): Add documentation.
12194         * class.c (build_vtable_entry): Likewise.
12195         (start_vtable): Add comment.
12196         (add_virtual_function): Replace pending_hard_virtuals with
12197         overridden_virtuals and pending_virtuals with new_virtuals.
12198         Replace redundant assignments with assertions.
12199         (check_for_override): Add comment.
12200         (check_bases_and_members): Replace pending_hard_virtuals with
12201         overridden_virtuals and pending_virtuals with new_virtuals.
12202         (create_vtbl_ptr): Likewise.
12203         (layout_class_type): Likewise.
12204         (finish_struct_1): Likewise.  Add comments.
12205
12206 2000-01-16  Mark Mitchell  <mark@codesourcery.com>
12207
12208         * class.c (finish_struct_1): Replace redundant code with
12209         assertions.
12210
12211         * cp-tree.h (flag_new_abi): Move.
12212         (flag_use_cxa_atexit): Likewise.
12213         (flag_honor_std): Likewise.
12214         (flag_rtti): Likewise.
12215         (vbase_offsets_in_vtable_p): Define.
12216         (vptrs_present_everywhere_p): Likewise.
12217         (TYPE_CONTAINS_VPTR_P): Likewise.
12218         (dfs_walk_real): Declare.
12219         * class.c (build_vbase_pointer_fields): Check
12220         vbase_offsets_in_vtable_p.
12221         (dfs_build_vbase_offset_vtbl_entries): Record the vbase indices in
12222         BINFO_VPTR_FIELD.
12223         (build_vbase_offset_vtbl_entries): Simplify.
12224         (build_vbase_offset_vtbl_entries): Adjust.
12225         (build_vbase_pointer): Add ability to look up vbase offsets in
12226         vtable.
12227         (start_vtable): New function.
12228         (add_virtual_function): Use it.
12229         (determine_primary_base): Use TYPE_CONTAINS_VPTR_P.
12230         (num_extra_vtbl_entries): Use vbase_offsets_in_vtable_p.
12231         (build_vtbl_initializer): Take the type of the complete object as
12232         input.  Use it to correctly calculate vbase offsets.
12233         (dfs_finish_vtbls): Pass the complete type to
12234         build_vtbl_initializer.
12235         (check_bases_and_members): Use TYPE_CONTAINS_VPTR_P.
12236         (create_vtable_ptr): Create a vtable even if there are no
12237         new virtual functions, under the new ABI.
12238         (finish_struct_1): Likewise.
12239         (get_vfield_name): Use TYPE_CONTAINS_VPTR_P.
12240         * decl.c (exapnd_static_init): Remove call to
12241         preserve_initializer.
12242         * decl2.c (mark_vtable_entries): Tweak to handle vbase offsets in
12243         vtables.
12244         * init.c (initialize_vtbl_ptrs): Initialize them in pre-order.
12245         (expand_virtual_init): Use vbase_offsets_in_vtable_p.
12246         (construct_virtual_bases): Don't initialize virtual base pointers
12247         under the new ABI.
12248         (build_aggr_init): Clean up comment.
12249         (expand_aggr_init_1): Likewise.
12250         * rtti.c (expand_class_desc): Store the virtual function table
12251         index where the vbase offset lives in the offset field.
12252         * search.c (dfs_walk_real): Make it global.
12253         (dfs_debug_mark): Use TYPE_CONTAINS_VPTR_P.
12254         * tree.c (make_binfo): Don't clear BINFO_VPTR_FIELD.
12255
12256         * tinfo.h (USItype): Make it signed under the new ABI.
12257         * tinfo.cc (convert_to_base): New function.  Encapsulate base
12258         conversion logic here.
12259         (__class_type_info::do_upcast): Use it.
12260         (__class_type_info::do_dyncast): Likewise.
12261         (__class_type_info::do_find_public_subobj): Likewise.
12262
12263         * init.c (construct_virtual_bases): Don't look up the addresses of
12264         virtual bases at run-time.
12265
12266         * class.c (build_vbase_pointer): Relocate.
12267         (build_vbase_pointer_fields): Likewise.
12268         (dfs_build_vbase_offset_vtbl_entries): Likewise.
12269         (build_vbase_offset_vtbl_entries): Likewise.
12270
12271         * decl.c (init_decl_processing): Complain if -fnew-abi
12272         -fno-vtable-thunks is used.
12273
12274         * decl2.c (lang_decode_option): Don't couple flag_honor_std to
12275         flag_new_abi.
12276
12277 2000-01-15  Mark Mitchell  <mark@codesourcery.com>
12278
12279         * cp-tree.h (num_extra_vtbl_entries): New function.
12280         (size_extra_vtbl_entries): Likewise.
12281         (dfs_vtable_path_unmark): Likewise.
12282         (dfs_vtable_path_unmarked_real_bases_queue_p): Likewise.
12283         (dfs_vtable_path_marked_real_bases_queue_p): Likewise.
12284         * class.c (num_extra_vtbl_entries): New function.
12285         (size_extra_vtbl_entries): Likewise.
12286         (dfs_build_vbase_offset_vtbl_entries): New function.
12287         (build_vbase_offset_vtbl_entries): Likewise.
12288         (build_vtbl_initializer): Use it.
12289         (finish_struct_1): Adjust vtable sizes (using
12290         num_extra_vtbl_entries).
12291         * expr.c (cplus_expand_expr): Assert that the DECL_RTL for a
12292         THUNK_DECL is non-NULL before expanding it.
12293         * init.c (expand_virtual_init): Adjust the vtable pointer by
12294         size_extra_vtbl_entries before storing it.
12295         * search.c (get_shared_vase_if_not_primary): Adjust prototype.
12296         Handle TREE_LIST parameters here, not in the dfs_* functions.
12297         (dfs_unmarked_real_bases_queue_p): Adjust.
12298         (dfs_marked_real_bases_queue_p): Likewise.
12299         (dfs_vtable_path_unmarked_real_bases_queue_p): New function.
12300         (dfs_vtable_path_marked_real_bases_queue_p): New function.
12301         (dfs_vtable_path_unmark): Likewise.
12302
12303 2000-01-14  Mark Mitchell  <mark@codesourcery.com>
12304
12305         * optimize.c (copy_body_r): Clear the operand three of a
12306         TARGET_EXPR when copying it.
12307
12308 2000-01-14  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
12309
12310         * method.c (build_decl_overload_real): Check whether we are in ::
12311         before returning __builtin_new/delete.
12312
12313 2000-01-13  Mark Mitchell  <mark@codesourcery.com>
12314
12315         * pt.c (tsubst_friend_function): Improve comment.
12316         (instantiate_decl): Avoid crashing when a "nested" function is
12317         instantiated from the top level.
12318
12319         * dump.c (dqeueue_and_dump): Dump
12320         DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION.
12321
12322 2000-01-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12323
12324         * call.c: If GATHER_STATISTICS, declare `n_build_method_call'.
12325
12326 2000-01-13  Nathan Sidwell  <sidwell@codesourcery.com>
12327
12328         * g++spec.c (lang_specific_driver): Add -fnew-abi if
12329         ENABLE_NEW_GXX_ABI defined.
12330         * Make-lang.in (tinfo.o, tinfo2.o, exception.o, new.o,
12331         opnew.o, opnewnt.o, opvnew.o, opvnewnt.o, opdel.o, opdelnt.o,
12332         opvdel.o, opvdelnt.o): Use GXX_ABI_FLAG switch.
12333
12334 2000-01-12  Mark Mitchell  <mark@codesourcery.com>
12335
12336         * decl.c (start_cleanup_fn): Call pushdecl.
12337
12338         * call.c (convert_class_to_reference): Fix typos.
12339         (build_conditional_expr): Handle errors gracefully.
12340         * class.c (push_nested_class): Likewise.
12341         * cp-tree.h (VAR_FUNCTION_OR_PARM_DECL_CHECK): New macro.
12342         (DECL_THIS_EXTERN): Use it.
12343         (DECL_THIS_STATIC): Likewise.
12344         * cvt.c (convert_to_void): Handle errors gracefully.
12345         (build_expr_type_conversion): Likewise.
12346         * decl.c (maybe_push_decl): Likewise.
12347         (start_decl_1): Likewise.
12348         (require_complete_types_for_parms): Likewise.
12349         * parse.y (structsp): Likewise.
12350         (base_class): Likewise.
12351         * parse.c: Regenerated.
12352         * pt.c (finish_member_template_decl): Likewise.
12353         * typeck.c (decay_conversion): Likewise.
12354
12355         * cp-tree.h (dfs_skip_vbases): New function.
12356         (find_vbase_instance): Likewise.
12357         * class.c (determine_primary_base): Allow a nearly empty base to
12358         serve as a primary base class under the new ABI.
12359         (get_class_offset_1): Rename to ...
12360         (dfs_get_class_offset): ... this.  Simplify.  Don't issue error
12361         messages here.
12362         (get_class_offset): Use it.  Issue error messages here.
12363         (dfs_modify_vtables): Rely on dfs_unmarked_real_bases_queue_p to
12364         find the right copies of virtual bases.
12365         (fixup_vtable_deltas1): Rename to ...
12366         (dfs_fixup_vtable_deltas): ... this.  Adjust to handle virtual
12367         bases as primary bases.
12368         (fixup_vtable_deltas): Remove.
12369         (override_one_vtable): Handle virtual bases as primary bases.
12370         (merge_overrides): Likewise.
12371         (finish_struct_1): Likewise.
12372         (dump_class_hierarchy): Dump primary-ness of bases as well.
12373         * search.c (mark_primary_bases): Use a pre-order traversal to
12374         handle primary virtual bases.
12375         (dfs_skip_vbases): New fiunction.
12376         (expand_upcast_fixups): Adjust to handle primary virtual bases.
12377         (fixup_virtual_upcast_offsets): Likewise.
12378         (fixup_all_virtual_upcast_offsets): Likewise.
12379         (dfs_find_vbase_instances): New function.
12380         (find_vbase_instance): Likewise.
12381
12382 2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>
12383
12384         * lex.c (DIR_SEPARATOR): Delete macro.
12385
12386 2000-01-12  Gabriel Dos Reis  <gdr@codesourcery.com>
12387
12388        * decl2.c (lang_decode_option): Handle automatic line wrapping
12389        option.
12390
12391 2000-01-11  Mark Mitchell  <mark@codesourcery.com>
12392
12393         * friend.c (do_friend): Don't resolve scopes when processing
12394         template declarations, even if the qualifying scope doesn't
12395         involve template parameters.
12396
12397 2000-01-10  Mark Mitchell  <mitchell@dumbledore.codesourcery.com>
12398
12399         * class.c (dfs_modify_vtables_queue_p): Remove.
12400         (modify_all_vtables): Use dfs_unmarked_real_bases_queue_p
12401         and dfs_marked_real_bases_queue_p instead of
12402         dfs_modify_vtables_queue_p.
12403
12404         * class.c (build_vbase_path): Simplify.
12405         (dfs_propagate_binfo_offsets): New function.
12406         (propagate_binfo_offsets): Use it.
12407         (remove_base_field): Simplify.
12408         (dfs_set_offset_for_vbases): Remove.
12409         (dfs_set_offset_for_shared_vbases): New function.
12410         (dfs_set_offset_for_unshared_vbases): Likewise.
12411         (layout_virtual_bases): Use them.
12412         (layout_basetypes): Don't call propagate_binfo_offsets.
12413         * search.c (dfs_get_vbase_types): Clone completely fresh binfos
12414         for the vbases.
12415
12416         * class.c (build_base_field): New function, split out from ...
12417         (build_base_fields): ... here.  Use it.  Allocate primary bases
12418         first, under the new ABI.
12419         (get_vtable_entry): Remove.
12420         (remove_base_field): New function, split out from ...
12421         (remove_base_fields): ... here.  Adjust since primary bases come
12422         first under the new ABI.
12423
12424         * cp-tree.h (expand_direct_vtbls_init): Remove declaration.
12425         (initialize_vtbl_ptrs): New function.
12426         (expand_indirect_vtbls_init): Change prototype.
12427         (convert_pointer_to_vbase): Declare.
12428         * init.c (expand_direct_vtbls_init): Remove.
12429         (dfs_initialize_vtbl_ptrs): New function.
12430         (initialize_vtbl_ptrs): Likewise.
12431         (emit_base_init): Use initialize_vtbl_ptrs.
12432         * search.c (convert_pointer_to_vbase): Make it global.
12433         (expand_indirect_vtbls_init): Remove vtable initialization code.
12434         * semantics.c (setup_vtbl_ptr): Use initialize_vtbl_ptrs.
12435
12436         * class.c (dfs_finish_vtbls): New function.
12437         (finish_vtbls): Use it.
12438         (dump_class_hierarchy): New function.
12439
12440         * cp-tree.h (BINFO_PRIMARY_MARKED_P): Change definition.
12441         (BINFO_VBASE_PRIMARY_P): New macro.
12442         (BINFO_VIRTUALS): Add to documentation.
12443         (SET_BINFO_PRIMARY_MARKED_P): Remove.
12444         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
12445         (dfs_mark_primary_bases_queue_p): Likewise.
12446         (dfs_unmarked_real_bases_queue_p): New function.
12447         (dfs_marked_real_bases_queue_p): Likewise.
12448         * search.c (dfs_mark_primary_bases): Adjust.
12449         (mark_primary_bases): Likewise.
12450         (get_shared_vbase_if_not_primary): New function.
12451         (dfs_unmarked_real_bases_queue_p): Likewise.
12452         (dfs_marked_real_bases_queue_p): Likewise.
12453         (dfs_get_pure_virtuals): Simplify.
12454         (get_pure_virtuals): Likewise.
12455
12456 2000-01-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12457
12458         * lex.c: Include tm_p.h.
12459
12460 2000-01-07  Nathan Sidwell  <sidwell@codesourcery.com>
12461
12462         * lang-specs.h (__GXX_ABI_VERSION): New preprocessor macro.
12463
12464 2000-01-06  Jason Merrill  <jason@casey.cygnus.com>
12465
12466         * decl2.c (comdat_linkage): Don't set DECL_DEFER_OUTPUT.
12467         * pt.c (instantiate_decl): Defer comdat templates that might not be
12468         needed.
12469
12470         * cp-tree.h (DECL_NEEDED_P): Also true if !DECL_COMDAT.
12471         * decl2.c (finish_vtable_vardecl): Don't check !DECL_COMDAT.
12472         (finish_file): Likewise.
12473
12474         * decl2.c (import_export_class): Undo 12/14 change.
12475
12476         * error.c (dump_decl): operator new, not operatornew.
12477
12478         * class.c (field_decl_cmp): A nontype is "greater" than a type.
12479         * search.c (lookup_field_1): Look for the last field with the
12480         desired name.
12481
12482 2000-01-05  Nathan Sidwell  <nathan@acm.org>
12483
12484         * decl2.c (lookup_arg_dependent): Deal with FNS not being a
12485         FUNCTION_DECL.
12486
12487 2000-01-05  Nathan Sidwell  <nathan@acm.org>
12488
12489         * typeck.c (build_static_cast): Don't strip target qualifiers
12490         when casting from a class.
12491
12492 2000-01-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12493
12494         * class.c (warn_hidden): Initialize variable `fndecl'.
12495
12496 2000-01-03  Ulrich Drepper  <drepper@cygnus.com>
12497
12498         * decl.c (flag_isoc9x): New variable to be able to use code in
12499         c-common.c.  For now always zero.
12500
12501 2000-01-03  Mark Mitchell  <mark@codesourcery.com>
12502
12503         * cp-tree.h (CLASSTYPE_VBASECLASSES): Improve documentation.
12504         * class.c (layout_basetypes): Don't set BINFO_INHERITANCE_CHAIN
12505         or unshare_base_binfos for virtual bases here.
12506         * search.c (dfs_get_vbase_types): Do it here.
12507         (get_vbase_types): Adjust.
12508
12509 2000-01-02  Mark Mitchell  <mark@codesourcery.com>
12510
12511         * cp-tree.h (CLASSTYPE_VFIELDS): Move definition.
12512         (BINFO_PRIMARY_MARKED_P): Use flag 5.
12513         (SET_BINFO_PRIMARY_MARKED_P): Likewise.
12514         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
12515         (unmark_primary_bases): Remove declaration.
12516         (unmarkedp): Declare.
12517         (dfs_vbase_unmark): Likewise.
12518         * class.c (determine_primary_base): Return immediately if there
12519         are no base classes.  Call mark_primary_bases here.
12520         (modify_all_direct_vtables): Remove.
12521         (modify_all_indirect_vtables): Remove.
12522         (dfs_modify_vtables_queue_p): New function.
12523         (dfs_modify_vtables): New function.
12524         (modify_all_vtables): Use them.
12525         (build_base_fields): Build FIELD_DECLs for primary virtual base
12526         classes.
12527         (create_vtable_ptr): Don't call determine_primary_base here.
12528         (dfs_mark_primary_bases_and_set_vbase_offsets): Rename to ...
12529         (dfs_set_offset_for_vbases): ... this.
12530         (layout_virtual_bases): Use it.
12531         (layout_class_type): Call determine_primary_base here.
12532         * search.c (unmarkedp): Make it global.
12533         (shared_marked_p): Simplify.
12534         (shared_unmarked_p): Likewise.
12535         (dfs_primary_bases_queue_p): Remove.
12536         (dfs_unmark_primary_bases): Likewise.
12537         (unmark_primary_bases): Likewise.
12538         (mark_primary_bases): Simplify.
12539         (get_pure_virtuals): Don't call mark_primary_bases here.
12540         (dfs_vbase_unmark): New function.
12541         (get_vbase_types): Simplify.
12542
12543         * class.c (struct base_info): Remove.
12544         (determine_primary_base): Take has_virtual_p rather than a
12545         base_info as input.  Don't calculate max_has_virtual.
12546         (finish_struct_bits): Remove max_has_virtual argument.
12547         (create_vtable_ptr): Remove max_has_virtual_p argument.
12548         (layout_virtual_bases): Remove max argument.
12549         (layout_basetypes): Likewise.
12550         (layout_class_type): Remove max_has_virtual_p argument.
12551         (finish_struct_1): Remove max_has_virtual.
12552
12553         * cp-tree.h (dfs_mark_primary_bases_queue_p): New function.
12554         (layout_basetypes): Remove.
12555         * class.c (propagate_binfo_offsets): Moved here from tree.c.
12556         Update to handle primary virtual bases.
12557         (remove_base_fields): New function, split out from
12558         layout_basetypes.
12559         (dfs_mark_primary_bases_and_set_vbase_offsets): New function.
12560         (layout_virtual_bases): New function, split out from
12561         layout_basetypes.  Update to handle primary virtual bases.
12562         (layout_basetypes): Moved here from tree.c.  Use
12563         remove_base_fields and layout_virtual_bases.
12564         * search.c (dfs_mark_primary_bases_queue_p): New function.
12565         (mark_primary_bases): Use it.
12566         * tree.c (CEIL): Remove.
12567         (propagate_binfo_offsets): Remove.
12568         (layout_basetypes): Remove.
12569
12570 2000-01-01  Mark Mitchell  <mark@codesourcery.com>
12571
12572         * cp-tree.h (CLASSTYPE_N_BASECLASSES): Use BINFO_N_BASETYPES.
12573         (BINFO_PRIMARY_MARKED_P): New macro.
12574         (SET_BINFO_PRIMARY_MARKED_P): Likewise.
12575         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
12576         (mark_primary_bases): New function.
12577         (unmark_primary_bases): Likewise.
12578         * search.c (get_abstract_virtuals_1): Remove.
12579         (dfs_mark_primary_bases): New function.
12580         (mark_primary_bases): Likewise.
12581         (dfs_unmark_primary_bases): Likewise.
12582         (unmark_primary_bases): Likewise.
12583         (dfs_get_pure_virtuals): Likewise.
12584
12585 2000-01-01  Mark Mitchell  <mark@codesourcery.com>
12586
12587         * cp-tree.h (skip_rtti_stuff): Adjust prototype.
12588         * class.c (skip_rtti_stuff): Reorganize parameters and return value.
12589         (modify_one_vtable): Adjust.
12590         (fixup_vtable_deltas1): Likewise.
12591         (override_one_vtable): Likewise.
12592         * search.c (get_abstract_virtuals_1): Likewise.
12593         (get_pure_virtuals): Likewise.
12594         (expand_upcast_fixups): Likewise.
12595         * tree.c (debug_binfo): Likewise.
12596
12597         * class.c (build_vtable): Don't return a value.  Don't rebuild
12598         vtables for bases that have already been handled.
12599         (prepare_fresh_vtable): Don't rebuild vtables for bases that have
12600         already been handled.
12601         (modify_one_vtable): Adjust accordingly.
12602         (fixup_vtable_deltas1): Likewise.
12603         (finish_struct_1): Likewise.
12604
12605 2000-01-01  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
12606
12607         * call.c (build_new_method_call): Also check destructors.