OSDN Git Service

PR c++/8316, c++/9315, c++/10136
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2003-03-19  Jason Merrill  <jason@redhat.com>
2
3         PR c++/8316, c++/9315, c++/10136
4         * call.c (print_z_candidate): Split out from...
5         (print_z_candidiates): ...here.
6         (joust): Use it.
7
8 2003-03-17  Roger Sayle  <roger@eyesopen.com>
9
10         PR c++/10031
11         * decl.c (duplicate_decls): Use the new type when prototyping
12         anticipated decls, even when the types match.  This defines the
13         exception list for the built-in function.
14
15 2003-03-17  Jason Merrill  <jason@redhat.com>
16
17         PR c++/10091
18         * typeck.c (build_class_member_access_expr): Compare 
19         TYPE_MAIN_VARIANTs.
20
21 2003-03-17  Mark Mitchell  <mark@codesourcery.com>
22
23         PR c++/9639
24         * parser.c (cp_parser_declarator_id): Clear parser->scope.
25
26 2003-03-16  Jason Merrill  <jason@redhat.com>
27
28         PR c++/9993
29         * decl.c (finish_function): Only allow the NRVO to use variables
30         declared at function scope.
31
32 2003-03-17  Andreas Jaeger  <aj@suse.de>
33
34         * Make-lang.in (cp/TAGS): Remove.
35
36 2003-03-16  Nathan Sidwell  <nathan@codesourcery.com>
37
38         PR c++/9629
39         * cp-tree.h (struct language_function): Add in_base_initializer.
40         (in_base_initializer): define it.
41         (expand_member_init): Remove INIT param.
42         * init.c (expand_member_init): Remove INIT param, return the member.
43         (emit_mem_initializers): Set in_base_initializer.
44         * class.c (build_base_path): Check in_base_initializer.
45         * parser.c (cp_parser_mem_initializer): Set in_base_initializer.
46         * pt.c (tsubst_initializer_list): Likewise.
47
48 2003-03-16   Gabriel Dos Reis <gdr@integrable-solutions.net>
49
50         * decl.c (binding_for_name): Fix initialization thinko.
51
52 2003-03-15  Gabriel Dos Reis <gdr@integrable-solutions.net>
53
54         Compile-time improvement: 2/n.
55         * cp-tree.h (struct cxx_binding): New datatype;
56         (struct lang_identifier): Use it.
57         (LOCAL_BINDING_P): Adjust definition.
58         (INHERITED_VALUE_BINDING_P): Likewise.
59         (BINDING_SCOPE): Likewise.
60         (BINDING_HAS_LEVEL_P): Likewise.
61         (BINDING_VALUE): Likewise.
62         (BINDING_TYPE): Likewise.
63         (IDENTIFIER_VALUE): Likewise.
64         (struct tree_binding): Remove.
65         (TS_CP_BINDING): Likewise.
66         ((union lang_tree_node): Remove field "binding".
67         (cxx_binding_clear): New macro.
68         (binding_for_name): Adjust return type.
69         (qualified_lookup_using_namespace): Adjust prototype.
70         (lookup_using_namespace): Adjust prototype.
71         (cxx_scope_find_binding_for_name): Declare.
72         * cp-tree.def: Remove CPLUS_BINDING definition.
73         * decl.c (push_binding): Adjust local variable type.
74         (add_binding): Likewise.
75         (push_class_binding): Likewise.
76         (pop_binding): Likewise.
77         (poplevel): Likewise.
78         (poplevel_class): Likewise.
79         (free_bindings):  Adjust type.
80         (find_binding): Adjust return type, add a third parameter. Remove
81         non-useful assertion now that we use static typing.
82         (cxx_scope_find_binding_for_name): New function.
83         (binding_for_name): Use it.  Adjust local variable type. Simplify.
84         (namespace_binding):  Simplify.
85         (set_namespace_binding): Likewise.
86         (set_identifier_type_value_with_scope): Adjust local variable type.
87         (lookup_tag): Don't type-abuse of local variable 'old'.
88         (lookup_namespace_name): Likewise.  Allocate binding on stack.
89         (select_decl): Adjust prototype.
90         (unqualified_namespace_lookup):  Allocate binding on stack.
91         Don't type-abuse of local variable 'val'.
92         (lookup_name_real): Likewise.
93         (maybe_inject_for_scope_var): Adjust local variable type.
94         (cp_tree_node_structure): Remove CPLUS_BINDING case label.
95         (namespace_binding): Adjust logic, simplify.
96         (BINDING_LEVEL): Adjust definition.
97         (push_class_level_binding): Adjust local variable type.
98         (struct cxx_saved_binding): Adjust field 'binding' type.
99         * decl2.c (ambiguous_decl): Adjust prototype.
100         (lookup_using_namespace): Adjust local variable type.
101         (qualified_lookup_using_namespace): Catch type error and correct
102         ensueing logic error.
103         (do_nonmember_using_decl): Adjust local variable type.  Allocate
104         temporary cxx_binding on stack.
105         (do_toplevel_using_decl): Adjust local variable type.
106         * ptree.c (cxx_print_cxx_binding): New function.
107         (cxx_print_identifier): Use it.
108         (cxx_print_xnode): Delete CPLUS_BINDING case label.
109
110 2003-03-15  Roger Sayle  <roger@eyesopen.com>
111
112         * tree.c (count_functions): Fix whitespace.
113
114 2003-03-15  Neil Booth  <neil@daikokuya.co.uk>
115
116         * Make-lang.in: Update.
117
118 2003-03-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
119
120         PR c++/6440
121         * pt.c (maybe_process_partial_specialization): Handle
122         member class template when enclosing class template is
123         explicit specialized.
124         (most_general_template): Stop looking when DECL is already
125         specialized.
126
127 2003-03-13  Jason Merrill  <jason@redhat.com>
128
129         PR c++/9420
130         * search.c (lookup_conversions): Call complete_type here.
131         * call.c (implicit_conversion): Not here.
132
133 2003-03-13  Mark Mitchell  <mark@codesourcery.com>
134
135         * decl2.c (do_nonmember_using_decl): Correct handling of
136         simultaneous type/non-type bindings.
137
138         * call.c (initialize_reference): Remove bogus assertion.
139         * decl.c (build_ptrmemfunc_type): Revert change of 2003-03-09.
140
141 2003-03-12  Andrew Lewycky  <andrew@mxc.ca>
142
143         PR c++/7050
144         * expr.c (cxx_expand_expr): Return const0_rtx for throw
145         expressions.
146
147 2003-03-11  Mark Mitchell  <mark@codesourcery.com>
148
149         PR c++/9474
150         * decl2.c (do_nonmember_using_decl): Do not call duplicate decls
151         to merge old and new declarations.
152
153 2003-03-12  Alexandre Oliva  <aoliva@redhat.com>
154
155         * g++.1: Remove.
156         * Make-lang.in (c++.generated-manpages): Build cp/g++.1.
157         (cp/g++.1): Build it from scratch in the build tree.
158         (c++.install-man): Depend on it.  Install it from the build tree.
159         (c++.mostlyclean): Clean it.
160
161 2003-03-11  Mark Mitchell  <mark@codesourcery.com>
162
163         PR c++/9474
164         * decl2.c (do_nonmember_using_decl): Do not call duplicate decls
165         to merge old and new declarations.
166
167         PR c++/9924
168         * decl2.c (do_nonmember_using_decl): Ignore anticipated builtins.
169
170 2003-03-11  Jason Merrill  <jason@redhat.com>
171
172         PR c++/9820
173         * search.c (lookup_member): Fix handling of functions in a class
174         being defined.
175
176 2003-03-11  Mark Mitchell  <mark@codesourcery.com>
177
178         PR c++/8700
179         * call.c (convert_class_to_reference): Adjust usage of
180         splice_viable.
181         (any_viable): Remove.
182         (splice_viable): Combine with any_viable.
183         (print_z_candidates): Avoid printing duplicates.
184         (build_user_type_conversion_1): Adjust usage of splice_viable.
185         (build_new_function_call): Likewise.
186         (build_operator_new_call): Likewise.
187         (build_object_call): Likewise.
188         (build_conditional_expr): Likewise.
189         (build_new_op): Likewise.
190         (build_new_method_call): Likewise.
191         (joust): Remove spurious comment.
192         * cp-tree.h (DECL_FRIENDLIST): Correct documentation.
193         * decl2.c (arg_assoc_class): Simplify.
194         * friend.c (add_friend): Likewise.
195
196 2003-03-11  Jason Merrill  <jason@redhat.com>
197
198         PR c++/8660
199         * decl2.c (check_classfn): A member template only matches a
200         member template.
201
202 2003-03-11  Neil Booth  <neil@daikokuya.co.uk>
203
204         * Make-lang.in (CXX_C_OBJS): Update.
205         * lang-specs.h: Don't define __GNUG__ here.
206
207 2003-03-10  Mark Mitchell  <mark@codesourcery.com>
208
209         * call.c (perform_overload_resolution): New function.
210         (build_new_function_call): Use it.
211         (build_operator_new_call): Likewise.
212         (add_candidates): Add explicit_targs and template_only parameters.
213         (build_new_op): Adjust accordingly.
214         * cp-tree.h (build_operator_new_call): New function.
215         (build_function_call_real): Remove.
216         (build_function_call_maybe): Likewise.
217         * init.c (build_new_1): Use build_operator_new_call.
218         * typeck.c (build_function_call_real): Rename to ...
219         (build_function_call): ... this.
220
221 2003-03-10  Devang Patel  <dpatel@apple.com>
222
223         PR c++/9394
224         * g++spec.c (lang_specific_driver): Use DEFAULT_WORD_SWTCH_TAKES_ARG.
225
226 2003-03-10  Jason Merrill  <jason@redhat.com>
227
228         PR c++/9798
229         * decl.c (push_using_directive): Push before recursing.
230
231         PR c++/9868, c++/9524
232         * call.c (resolve_scoped_fn_name): Handle the case of a function
233         pointer member.
234
235         * decl2.c (build_offset_ref_call_from_tree): Only mess with 'this'
236         argument in the pointer-to-member case.
237
238 2003-03-09  Mark Mitchell  <mark@codesourcery.com>
239
240         PR c++/9373
241         * cp-lang.c (cxx_get_alias_set): Use alias set zero for
242         pointers to member functions.
243
244         PR c++/8534
245         * decl.c (build_ptrmemfunc_type): Do not allow default arugments
246         in pointer-to-member-function types.
247
248 2003-03-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
249
250         * expr.c (cplus_expand_constant): Use C90 prototype style.
251         (cxx_expand_expr): Likewise.
252
253 2003-03-09  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
254
255         PR c++/9970
256         * decl.c (duplicate_decls): Only copy DECL_THUNKS for virtual
257         functions.
258
259 2003-03-08  Geoffrey Keating  <geoffk@apple.com>
260
261         * lang-specs.h (c++-header): Change .pch to .gch.
262
263 2003-03-08  Neil Booth  <neil@daikokuya.co.uk>
264
265         * cp-tree.h (cxx_init): Update prototype.
266         * lex.c (cxx_init): Similarly.
267
268 2003-03-08  Mark Mitchell  <mark@codesourcery.com>
269
270         PR c++/9823
271         * cp-tree.h (begin_mem_initializers): Remove.
272         * parser.c (cp_parser_mem_initializer_list): Inline it here.
273         Do not call finish_mem_initializers if not in a constructor.
274         (cp_parser_class_head): Fix typo in error message.
275         * semantics.c (begin_mem_initializers): Remove.
276         * testsuite/g++.dg/parser/constructor1.C: New test.
277
278         PR c++/9809
279         * call.c (add_function_candidate): Skip builtin fuctions that have
280         not yet been declared.
281
282         PR c++/9982
283         * init.c (build_new_1): Correct logic for determining whether or
284         not to use an array cookie.
285
286         PR c++/9524
287         * parser.c (cp_parser_postfix_expression): Call
288         finish_non_static_data_member, even when processing_template_decl.
289
290         PR c++/9912
291         * cp-tree.h (is_ancestor): New function.
292         (handle_class_head): Change prototype.
293         * decl2.c (is_namespace_ancestor): Rename to ...
294         (namespace_anecestor): ... this.
295         (set_decl_namespace): Adjust accordingly.
296         (handle_class_head): Remove unncessary parameters.
297         * parser.c (cp_parser_class_head): Check that
298         nested-name-specifiers are used appropriately.
299
300 2003-03-07  Mark Mitchell  <mark@codesourcery.com>
301
302         * call.c (reference_binding): Remove REF_IS_VAR parameter.
303         (implicit_conversion): Adjust call to reference_binding.
304         (make_temporary_var_for_ref_to_type): Add TYPE parameter.
305         (initialize_reference): Adjust handling for references bound to
306         rvalues.
307         * cp-tree.h (make_temporary_var_for_ref_to_temp): Change
308         prototype.
309         (real_non_cast_lvalue_p): New method.
310         * cvt.c (build_up_reference): Adjust use of
311         make_temporary_var_for_ref_to_temp.
312         * tree.c (real_non_cast_lvalue_p): New method.
313
314 2003-03-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>
315
316         * except.c (init_exception_processing): Use C90 prototype style.
317         (cp_protect_cleanup_actions): Likewise.
318         (prepare_eh_type): Likewise.
319         (build_eh_type_type): Likewise.
320         (build_exc_ptr): Likewise.
321         (do_begin_catch): Likewise.
322         (dtor_nothrow): Likewise.
323         (do_end_catch): Likewise.
324         (push_eh_cleanup): Likewise.
325         (decl_is_java_type): Likewise.
326         (choose_personality_routine): Likewise.
327         (initialize_handler_parm): Likewise.
328         (expand_start_catch_block): Likewise.
329         (expand_end_catch_block): Likewise.
330         (begin_eh_spec_block): Likewise.
331         (finish_eh_spec_block): Likewise.
332         (do_allocate_exception): Likewise.
333         (do_free_exception): Likewise.
334         (wrap_cleanups_r): Likewise.
335         (stabilize_throw_expr): Likewise.
336         (build_throw): Likewise.
337         (complete_ptr_ref_or_void_ptr_p): Likewise.
338         (is_admissible_throw_operand): Likewise.
339         (nothrow_libfn_p): Likewise.
340         (can_convert_eh): Likewise.
341         (check_handlers_1): Likewise.
342         (check_handlers): Likewise.
343
344 2003-03-06  Mark Mitchell  <mark@codesourcery.com>
345
346         * call.c (merge_conversion_sequences): New function.
347         (build_conv): Set ICS_USER_FLAG for USER_CONVs.
348         (convert_class_to_reference): Correct handling of second
349         standard conversion sequence in a user-defined conversion
350         sequence.
351         (build_user_type_conversion_1): Use merge_conversion_sequences.
352         * cp-tree.def: Add comments for CONV nodes.
353         * rtti.c (get_tinfo_decl): Use build_address/build_nop.
354
355 2003-03-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>
356
357         * error.c (init_error): Use C90 prototype style.
358         (dump_scope): Likewise.
359         (dump_qualifiers): Likewise.
360         (dump_template_argument): Likewise.
361         (dump_template_argument_list): Likewise.
362         (dump_template_parameter): Likewise.
363         (dump_template_bindings): Likewise.
364         (dump_type): Likewise.
365         (dump_typename): Likewise.
366         (class_key_or_enum): Likewise.
367         (dump_aggr_type): Likewise.
368         (dump_type_prefix): Likewise.
369         (dump_type_suffix): Likewise.
370         (dump_global_iord): Likewise.
371         (dump_simple_decl): Likewise.
372         (dump_decl): Likewise.
373         (dump_template_decl): Likewise.
374         (dump_function_decl): Likewise.
375         (dump_parameters): Likewise.
376         (dump_exception_spec): Likewise.
377         (dump_function_name): Likewise.
378         (dump_template_parms): Likewise.
379         (dump_char): Likewise.
380         (dump_expr_list): Likewise.
381         (dump_expr): Likewise.
382         (dump_binary_op): Likewise.
383         (dump_unary_op): Likewise.
384         (type_as_string): Likewise.
385         (expr_as_string): Likewise.
386         (decl_as_string): Likewise.
387         (context_as_string): Likewise.
388         (lang_decl_name): Likewise.
389         (cp_file_of): Likewise.
390         (cp_line_of): Likewise.
391         (decl_to_string): Likewise.
392         (expr_to_string): Likewise.
393         (fndecl_to_string): Likewise.
394         (code_to_string): Likewise.
395         (language_to_string): Likewise.
396         (parm_to_string): Likewise.
397         (op_to_string): Likewise.
398         (type_to_string): Likewise.
399         (assop_to_string): Likewise.
400         (args_to_string): Likewise.
401         (cv_to_string): Likewise.
402         (cxx_print_error_function): Likewise.
403         (cp_diagnostic_starter): Likewise.
404         (cp_diagnostic_finalizer): Likewise.
405         (cp_print_error_function): Likewise.
406         (function_category): Likewise.
407         (print_instantiation_full_context): Likewise.
408         (print_instantiation_partial_context): Likewise.
409         (maybe_print_instantiation_context): Likewise.
410         (print_instantiation_context): Likewise.
411         (cp_printer): Likewise.
412         (print_integer): Likewise.
413         (print_non_consecutive_character): Likewise.
414         (locate_error): Likewise.
415
416 2003-03-06  Mark Mitchell  <mark@codesourcery.com>
417
418         PR c++/9965
419         * call.c (reference_binding): Add ref_is_var parameter.
420         (implicit_conversion): Adjust call to reference_binding.
421         (initialize_reference): Likewise.
422
423         PR c++/9400
424         * decl.c (pushdecl): Don't check for shadowing of DECL_ARTIFICIAL
425         PARM_DECLs.
426
427         PR c++/9791
428         * class.c (get_basefndecls): Use lookup_fnfields_1.
429
430 2003-03-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
431
432         PR c++/9188
433         * parser.c (cp_parser_type_parameter): Remove redundant `expect'
434         in error message.
435         (cp_parser_single_declaration): Likewise.
436
437 2003-03-05  Jason Merrill  <jason@redhat.com>
438
439         PR c++/9440
440         * call.c (build_conditional_expr): Use convert rather than an
441         explicit NOP_EXPR.
442
443 2003-03-02  Matt Austern  <austern@apple.com>
444
445         * decl.c (cp_binding_level): Add static_decls varray member.
446         (add_decl_to_level): Add static/inline namespace scope
447         declarations to static_decls array.
448         (wrapup_global_for_namespace): Pass static_decls only, instead of
449         all decls, to wrapup_global_declarations/check_global_declarations.
450         (push_namespace): Initialize static_decls for ordinary namespaces.
451         (cxx_init_decl_processing): Initialize static_decls for global
452         namespace.
453
454 2003-03-05  Mark Mitchell  <mark@codesourcery.com>
455
456         * class.c (end_of_class): Correct thinko.
457
458 2003-03-04  Nathanael Nerode  <neroden@gcc.gnu.org>
459
460         * config-lang.in: Replace ${libstdcxx_version} by its value.
461
462 2003-03-04  Gabriel Dos Reis <gdr@integrable-solutions.net>
463
464         * cp-tree.h (cxx_saved_binding): Declare.
465         (struct saved_scope): Adjust type of field 'old_binding'.
466         * decl.c (cxx_saved_binding_make): New macro.
467         (struct cxx_saved_binding): Define.
468         (store_bindings): Adjust prototype.  Use cxx_saved_binding to save
469         C++ bindings.
470         (maybe_push_to_top_level): Adjust local variable type.
471         (pop_from_top_level): Likewise.
472
473 2003-03-04  Tom Tromey  <tromey@redhat.com>
474
475         * Make-lang.in (c++.tags): New target.
476
477 2003-03-04  Neil Booth  <neil@daikokuya.co.uk>
478
479         * Make-lang.in: Update.
480
481 2003-03-03  Jason Merrill  <jason@redhat.com>
482
483         * decl.c (finish_enum): Do set the type in a template. Simplify.
484         * pt.c (tsubst_enum, tsubst_copy): Revert last patch.
485
486 2003-03-03  Mark Mitchell  <mark@codesourcery.com>
487
488         PR c++/9878
489         * call.c (convert_class_to_reference): Correct conversion
490         sequences.
491         (reference_binding): Add ref_bound_directly_to_rvalue_p parameter.
492         (implicit_conversion): Adjust call to reference_binding.
493         (add_candidate): Change type of candidates parameter.
494         (add_function_candidate): Likewise.
495         (add_conv_candidate): Likewise.
496         (build_builtin_candidate): Likewise.
497         (add_builtin_candidate): Likewise.
498         (add_builtin_candidates): Likewise.
499         (add_template_candidate_real): Likewise.
500         (add_template_candidate): Likewise.
501         (add_template_conv_candidate): Likewise.
502         (build_user_type_conversion_1): Adjust accordingly.
503         (build_object_call): Likewise.
504         (build_conditional_expr): Likewise.
505         (add_candidates): Likewise.
506         (build_new_op): Likewise.
507         (convert_like_real): Use USER_CONV_CAND.  Use build_nop.
508         (build_new_method_call): Adjust calls to add_function_candidate.
509         (make_temporary_var_for_ref_to_temp): New function.
510         (initialize_reference): Add decl parameter.
511         * class.c (build_rtti_vtbl_entries): Use build_address and
512         build_nop.
513         * cp-tree.h (initialize_reference): Change prototype.
514         (make_temporary_var_for_ref_to_temp): New function.
515         (build_type_conversion): Change prototype.
516         (build_address): New function.
517         (build_nop): Likewise.
518         * cvt.c (cp_convert_to_pointer): Adjust call to
519         build_type_conversion.  Avoid indicating redundant NOP_EXPRs.
520         Use build_nop.
521         (convert_to_pointer_force): Use build_nop.
522         (build_up_reference): Use make_temporary_var_for_ref_to_temp.
523         (convert_to_reference): Adjust call to build_type_conversion.
524         (ocp_convert): Likewise.
525         (build_type_conversion): Remove for_sure parameter.
526         * decl.c (grok_reference_init): Use initialize_reference.
527         * typeck.c (build_address): New function.
528         (build_nop): Likewise.
529         (build_unary_op): Use them.
530         (build_ptrmemfunc): Tidy slightly.
531         (convert_for_initialization): Adjust call to
532         initialize_reference.
533         * typeck2.c (store_init_value): Remove #if 0'd code.
534
535 2003-03-03  Jason Merrill  <jason@redhat.com>
536
537         * decl.c (start_function): Clear DECL_NUM_STMTS.
538
539         * class.c (get_vtable_decl): Use vtbl_type_node.
540         (build_primary_vtable): Check for it.
541
542 2003-03-02  Aldy Hernandez  <aldyh@redhat.com>
543
544         * decl.c (check_initializer): Check for vector_opaque_p.
545
546 2003-03-02  Ashif Harji  <asharji@uwaterloo.ca>
547
548         * lang-specs.h (default_compilers): Add -no-integrated-cpp flag to
549           invoke an external cpp during compilation.
550
551 2003-03-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
552
553         * decl.c (duplicate_decls): Convert use of warning_with_decl() to
554         that of warning().
555         (start_decl): Likewise.
556         (start_function): Likewise.
557
558 2003-03-01  Neil Booth  <neil@daikokuya.co.uk>
559
560         * Make-lang.in (CXX_C_OBJS): Update.
561
562 2003-02-28  Mark Mitchell  <mark@codesourcery.com>
563
564         PR c++/9892
565         * pt.c (instantiate_decl): Clear DECL_RTL for a VAR_DECL when
566         instantiating it.
567
568 2003-02-28  Aldy Hernandez  <aldyh@redhat.com>
569
570         * parser.c (cp_parser_init_declarator): Revert opaque
571         vector_opaque_p change.
572         Do not include target.h.
573
574 2003-02-28  Mark Mitchell  <mark@codesourcery.com>
575
576         PR c++/9879
577         * cp-tree.h (build_zero_init): Add parameter.
578         * decl.c (cp_finish_decl): Adjust call.
579         * init.c (build_zero_init): Add nelts parameter.  Adjust recursive
580         calls.
581         (build_default_init): Add nelts parameter.  Adjust calls to
582         build_zero_init.
583         (build_new_1): Adjust call to build_default_init.
584         * typeck2.c (process_init_constructor): Adjust call to build_zero_init.
585
586 2003-02-26  Devang Patel  <dpatel@apple.com>
587
588         * decl.c (finish_enum): Merge two 'for' loops. Copy value node if required.
589         Postpone enum setting for template decls.
590         (build_enumerator): Delay copying value node until finish_enum (). Remove
591         #if 0'ed code.
592         * pt.c (tsubst_enum): Set TREE_TYPE and copy value node.
593         (tsubst_copy): Add check for enum type.
594
595 2003-02-25  Mark Mitchell  <mark@codesourcery.com>
596
597         PR c++/9683
598         * decl2.c (prune_vars_needing_no_initialization): Do not throw
599         away initializations for DECL_EXTERNAL VAR_DECLs.
600         (finish_file): Adjust accordingly.
601         * pt.c (instantiate_decl): Do not defer VAR_DECLs.
602
603 2003-02-24 Gabriel Dos Reis  <gdr@integrable-solutions.net>
604
605         * decl.c (add_binding): Time TV_NAME_LOOKUP.
606         (push_class_binding): Likewise.
607         (set_namespace_binding): Likewise.
608
609 2003-02-24  Mark Mitchell  <mark@codesourcery.com>
610
611         PR c++/9836
612         * cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE): Do not skip from
613         specializations back to the main template.
614         * parser.c (cp_parser_diagnose_invalid_type_name):Adjust use.
615         * pt.c (resolve_typename_type): Likewise.
616
617 2003-02-24  Jeffrey D. Oldham  <oldham@codesourcery.com>
618
619         PR c++/9778
620         * pt.c (tsubst_copy_and_build): For a templated function inside a
621         scope, process template arguments.
622
623 2003-02-24  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
624
625         PR c++/9602
626         * typeck2.c (abstract_virtuals_error): Don't check when
627         TYPE is still template parameter dependent.
628
629 2003-02-23  Mark Mitchell  <mark@codesourcery.com>
630
631         PR c++/5333
632         * cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE): New macro.
633         * parser.c (cp_parser_diagnose_invalid_type_name): Use it.
634         * pt.c (instantiate_class_template): Don't try to instantiate
635         dependent types.
636         (resolve_typename_type): Use CLASSTYPE_PRIMARY_TEMPLATE.
637
638 2003-02-21  Mark Mitchell  <mark@codesourcery.com>
639
640         PR c++/9749
641         * decl.c (grokdeclarator): Do not allow parameters with variably
642         modified types.
643
644 2003-02-21  Nathan Sidwell  <nathan@codesourcery.com>
645
646         * search.c (grow_bfs_bases): Remove. Fold into ...
647         (bfs_walk): ... here, fix fencepost error. Fix merge lossage
648         in previous patch.
649
650 2003-02-20  Mark Mitchell  <mark@codesourcery.com>
651
652         PR c++/9729
653         * mangle.c (mangle_conv_op_name_for_type): Issue an error message
654         when the G++ 3.2 ABI prevents correct compilation.
655
656 2003-02-20  Nathan Sidwell  <nathan@codesourcery.com>
657
658         Change base class access representation. Share virtual base
659         binfos.
660         * cp/call.c (build_special_member_call): Remove binfo_for_vbase
661         call.
662         * cp/class.c (build_base_path): Likewise.
663         (build_primary_vtable): Adjust BINFO_NEW_VTABLE_MARKED use.
664         (build_secondary_vtable): Remove FOR_TYPE arg. Adjust.
665         (make_new_vtable): Adjust.
666         (force_canonical_binfo_r): Delete.
667         (force_canonical_binfo): Delete.
668         (mark_primary_virtual_base): Delete.
669         (dfs_unshared_virtual_bases): Delete.
670         (mark_primary_bases): Adjust.
671         (maybe_warn_about_overly_private_class): Adjust.
672         (dfs_base_derived_from): Delete.
673         (base_derived_from): Follow the inheritance chain.
674         (struct find_final_overrider_data): Add vpath member.
675         (dfs_find_final_overrider): Adjust.
676         (dfs_find_final_overrider_q, dfs_find_final_overrider_post): New.
677         (find_final_overrider): Adjust.
678         (update_vtable_entry_for_fn): Adjust.
679         (modify_all_vtables): Adjust.
680         (walk_subobject_offsets): Adjust.
681         (layout_nonempty_base_or_field): Adjust.
682         (layout_empty_base): Remove last parameter. Adjust.
683         (build_base_field): Adjust.
684         (build_base_fields): Adjust.
685         (propagate_binfo_offsets): Remove last parameter. Adjust.
686         (dfs_set_offset_for_unshared_vbases): Delete.
687         (layout_virtual_bases): Adjust.
688         (finish_struct_1): Adjust.
689         (init_class_processing): Don't init access nodes.
690         (dfs_get_primary_binfo): Delete.
691         (get_primary_binfo): Adjust.
692         (dump_class_hierarchy_r): Remove most derived arg, add IGO
693         parameter. Adjust.
694         (dump_class_hierarchy): Adjust.
695         (finish_vtbls): Adjust.
696         (get_original_base): Delete.
697         (build_vtt_inits): Adjust.
698         (dfs_build_secondary_vptr_vtt_inits): Adjust.
699         (dfs_ctor_vtable_bases_queue_p): Adjust.
700         (build_ctor_vtbl_group): Adjust.
701         (dfs_accumulate_vtbl_inits): Adjust.
702         (build_vtbl_initializer): Adjust.
703         (build_vbase_offset_vtbl_entries): Adjust.
704         (add_vcall_offset_vtbl_entries_1): Adjust.
705         * cp/cp-tree.h (CPTI_ACCESS_*): Remove.
706         (access_*_node): Remove.
707         (CANONICAL_BINFO): Delete.
708         (BINFO_UNSHARED_MARKED): Remove.
709         (BINFO_MARKED): Set LANG_FLAG_0 directly.
710         (SET_BINFO_MARKED, CLEAR_BINFO_MARKED): Delete.
711         (BINFO_VTABLE_PATH_MARKED): Set LANG_FLAG_3 directly.
712         (SET_BINFO_VTABLE_PATH_MARKED, CLEAR_BINFO_VTABLE_PATH_MARKED):
713         Delete.
714         (BINFO_NEW_VTABLE_MARKED): Set LANG_FLAG_4 directly.
715         (SET_BINFO_NEW_VTABLE_MARKED): Adjust.
716         (SET_BINFO_PUSHDECLS_MARKED, CLEAR_BINFO_PUSHDECLS_MARKED):
717         Delete.
718         (BINFO_DEPENDENT_BASE_P): New.
719         (dfs_walk, dfs_walk_real): Queue function takes derived binfo and
720         index.
721         (markedp, unmarkedp): Adjust.
722         (dfs_unmarked_real_bases_queue_p, dfs_marked_real_bases_queue_p,
723         dfs_skip_vbases, marked_vtable_pathp, unmarked_vtable_pathp,
724         find_vbase_instance, binfo_for_vbase): Delete.
725         (copied_binfo, original_binfo): Declare.
726         (finish_base_specifier): Add virtual_p arg.
727         (unshare_base_binfos): Delete.
728         (copy_base_binfos): Declare.
729         (reverse_path): Delete.
730         * cp/decl.c (xref_basetypes): Access and virtuality passed
731         differently. Don't copy direct base binfos here. Call
732         copy_base_binfos.
733         * cp/init.c (dfs_initialize_vtbl_ptrs): Adjust.
734         (initialize_vtbl_ptrs): Adjust.
735         (expand_member_init): Adjust.
736         * cp/parser.c (cp_parser_base_specifier): Adjust.
737         * cp/pt.c (instantiate_class_template): Adjust.
738         (get_template_base_recursive): Adjust.
739         * cp/rtti.c (get_pseudo_ti_init): Adjust.
740         (get_pseudo_ti_desc): Adjust.
741         * cp/tree.c (unshare_base_binfos): Rename to ...
742         (copy_base_binfos): ... here, reimplement.
743         (make_binfo): Set BINFO_DEPENDENT_BASE_P.
744         (reverse_path): Remove.
745         * cp/typeck.c (get_delta_difference): Adjust error messages.
746         * cp/semantics.c (finish_base_specifier): Add virtual arg, adjust.
747         * cp/search.c (lookup_base_r): Adjust.
748         (dynamic_cast_base_recurse): Adjust.
749         (canonical_binfo): Remove.
750         (dfs_canonical_queue): Remove.
751         (dfs_assert_unmarked_p): Remove.
752         (assert_canonical_unmarked): Remove.
753         (shared_marked_p, shared_unmarked_p): Remove.
754         (BINFO_ACCESS, SET_BINFO_ACCESS): Use TREE_PUBLIC & TREE_PRIVATE.
755         (dfs_access_in_type): Adjust.
756         (access_in_type): Adjust.
757         (dfs_accessible_queue_p): Adjust.
758         (dfs_accessible_p): Adjust.
759         (is_subobject_of_p_1, is_subobject_of_p): Remove.
760         (struct lookup_field_info): Remove from_dep_base_p field.
761         (lookup_field_queue_p): Adjust, test BINFO_DEPENDENT_BASE_P.
762         (lookup_field_r): Remove dependent base code.
763         (lookup_member): Likewise.
764         (dfs_walk, dfs_walk_real): Add access arg to queue fn.
765         (dfs_unmarked_real_bases_queue_p): Remove.
766         (dfs_marked_real_bases_queue_p): Remove.
767         (dfs_skip_vbases): Remove.
768         (dfs_get_pure_virtuals): Adjust.
769         (markedp, unmarkedp): Adjust.
770         (marked_vtable_pathp, unmarked_vtable_pathp): Remove.
771         (marked_pushdecls_p, unmarked_pushdecls_p): Adjust.
772         (dfs_unmark): Adjust.
773         (dfs_get_vbase_types):Remove.
774         (dfs_build_inheritance_graph_order): Remove.
775         (get_vbase_types): Remove
776         (dfs_find_vbase_instance): Remove.
777         (find_vbase_instance): Remove.
778         (dfs_debug_unmarkedp): Adjust.
779         (dependent_base_p): Remove.
780         (dfs_push_type_decls): Adjust.
781         (dfs_push_decls): Adjust.
782         (dfs_no_overlap_yet): Adjust.
783         (copied_binfo): New function.
784         (original_binfo): New function.
785         (binfo_for_vbase): Remove.
786
787 2003-02-18  Zack Weinberg  <zack@codesourcery.com>
788
789         * cp/search.c (grow_bfs_bases): New subroutine of bfs_walk.
790         (bfs_walk): Rewritten using circular queue of BINFO_BASETYPES
791         vectors, for speed.
792
793 2003-02-18  Mark Mitchell  <mark@codesourcery.com>
794
795         PR c++/9704
796         * class.c (layout_class_type): In the 3.2 ABI, take into account
797         trailing bit fields when computing CLASSTYPE_SIZE_UNIT.
798
799 2003-02-18  Matt Austern <austern@apple.com>
800
801         * cp/cp-lang.c: Change lang hooks so that final_write_globals does
802         nothing for C++.
803         * cp/decl.c (wrapup_globals_for_namespace): Remove special
804         handling of global namespace.
805
806 2003-02-18  Geoffrey Keating  <geoffk@apple.com>
807
808         * cp-tree.h (rid_to_yy): Delete.
809         (C_RID_YYCODE): Delete.
810         (finish_file): Delete redundant declaration.
811
812 2003-02-18  Jason Merrill  <jason@redhat.com>
813
814         PR c++/9623
815         * decl.c (reshape_init): Don't mess with initializer labels.
816
817         PR c++/9485
818         * parser.c (cp_parser_postfix_expression): Set idk properly for
819         object->scope::member.
820
821 2003-02-18  Ben Elliston  <bje@redhat.com>
822
823         PR other/7350
824         * decl.c (duplicate_decls): Fix typo in comment.
825
826 2003-02-17  Michael Elizabeth Chastain <mec@shout.net>
827
828         PR debug/9717
829         * class.c (build_base_field): Mark fields for base classes with
830         DECL_IGNORED_P.
831
832 2003-02-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
833
834         PR c++/9457
835         * pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Substitute
836         CONSTRUCTOR_ELTS only once.
837
838 2003-02-16  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
839
840         PR c++/9459
841         * error.c (dump_type_prefix): Handle TYPEOF_TYPE.
842         (dump_type_suffix): Likewise.
843
844 2003-02-14  Nathan Sidwell  <nathan@codesourcery.com>
845
846         * search.c: ANSIfy function declarations and definitions.
847         * cp-tree.h (lookup_field, lookup_member): Last parameter is a bool.
848         * call.c (build_method_call, resolve_scoped_fn_name,
849         build_java_interface_fn_ref): Adjust lookup_field, lookup_member
850         calls.
851         * class.c (handle_using_decl): Likewise.
852         * decl.c (make_typename_type, make_unmound_class_template,
853         start_decl, compute_array_index_type): Likewise.
854         * decl2.c (build_expr_from_tree, build_call_from_tree): Likewise.
855         * init.c (expand_member_init, build_member_call): Likewise.
856         * pt.c (tsubst_copy, tsubst_copy_and_build, do_decl_instantiation,
857         resolve_typename_type): Likewise.
858         * typeck.c (lookup_destructor, finish_class_member_access_exprm
859         build_prememfunc_access_expr): Likewise.
860
861 2003-02-13  Gabriel Dos Reis <gdr@integrable-solutions.net>
862
863         * decl2.c: Include "timevar.h".
864         (namespace_ancestor): Time name lookup.
865         (add_using_namespace): Likewise.
866         (lookup_using_namespace): Likewise.
867         (qualified_lookup_using_namespace): Likewise.
868         (decl_namespace): Likewise.
869         (lookup_arg_dependent): Likewise.
870         * lex.c (do_identifier): Likewise.
871         (do_scoped_id): Likewise.
872         * pt.c (lookup_template_class): Likewise.
873
874 2003-02-14   Andrew Pinski <pinskia@physics.uc.edu>
875
876         * decl.c: (define_label): Fix warning for return 0 instead of NULL.
877
878 2003-02-13  Gabriel Dos Reis  <gdr@integrable-solutions.net>
879
880         * decl.c: Include "timevar.h".
881         (poplevel): Time name lookup.
882         (find_binding): Likewise.
883         (push_namespace): Likewise.
884         (pop_nested_namespace): Likewise.
885         (store_bindings): Likewise.
886         (maybe_push_to_top_level): Likewise.
887         (pop_from_top_level): Likewise.
888         (push_local_name): Likewise.
889         (pushtag): Likewise.
890         (pushdecl): Likewise.
891         (pushdecl_with_scope): Likewise.
892         (pushdecl_namespace_level): Likewise.
893         (pushdecl_top_level): Likewise.
894         (pushdecl_class_level): Likewise.
895         (push_class_level_binding): Likewise.
896         (push_using_decl): Likewise.
897         (push_using_directive): Likewise.
898         (push_overloaded_decl): Likewise.
899         (lookup_label): Likewise.
900         (define_label): Likewise.
901         (lookup_tag): Likewise.
902         (lookup_tag_reverse): Likewise.
903         (lookup_namespace_name): Likewise.
904         (select_decl): Likewise.
905         (unqualified_namespace_lookup): Likewise.
906         (lookup_name_real): Likewise.
907         (lookup_name_current_level): Likewise.
908         (lookup_type_current_level): Likewise.
909         (maybe_inject_for_scope_var): Likewise.
910         (xref_tag): Likewise.
911
912         * Make-lang.in (cp/decl.o): Add dependency on timevar.h
913
914 2003-02-12  Phil Edwards  <pme@gcc.gnu.org>
915
916         * decl.c (build_enumerator):  Remove unneeded test.
917
918 2003-02-09  Dan Nicolaescu  <dann@ics.uci.edu>
919
920         * cp-tree.h (struct lang_type_header): Make all fields unsigned
921         char.
922
923 2003-02-03  Mark Mitchell  <mark@codesourcery.com>
924
925         PR c++/7129
926         * call.c (z_candidate): Add args.
927         (convert_class_to_reference): Set it.
928         (implicit_conversion): Tidy.
929         (add_candidate): Add args parameter.
930         (add_function_candidate): Adjust call to add_candidate.
931         (add_conv_candidate): Likewise.
932         (build_builtin_candidate): Likewise.
933         (build_user_type_conversion_1): Eliminate wasteful tree_cons
934         usage.
935         (build_new_function_call): Likewise.
936         (build_object_call): Likewise.
937         (add_candidates): New function.
938         (build_new_op): Use it.
939         (covert_like_real): Adjust call to build_over_call.
940         (build_over_call): Remove args parameter.
941         * operators.def: Add <?= and >?=.
942
943 2003-02-01  Richard Sandiford  <rsandifo@redhat.com>
944
945         * typeck.c (build_indirect_ref): Don't check flag_volatile.
946
947 2003-01-31  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
948
949         PR c++/8849
950         * pt.c (resolve_overloaded_unification): Handle FUNCTION_DECL.
951
952 2003-01-31  Nathan Sidwell  <nathan@codesourcery.com>
953
954         * cp-tree.h (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX,
955         BINFO_PRIMARY_BASE_OF): Use BINFO_ELTS.
956         (BINFO_LANG_ELTS): New #define.
957         * tree.c (make_binfo): Use BINFO_LANG_ELTS.
958
959 2003-01-30  Geoffrey Keating  <geoffk@apple.com>
960
961         * cp/Make-lang.in: Remove -Wno-error from cp/decl.o.
962
963 2003-01-30  Mark Mitchell  <mark@codesourcery.com>
964
965         * class.c (check_field_decls): Only check C_TYPE_FIELDS_READONLY
966         for class types.
967         * cp-tree.h (C_TYPE_FIELDS_READONLY): Use a lang-specific bit
968         rather than TYPE_LANG_FLAG_0.
969         (TYPE_BUILT_IN): Remove.
970         (TYPE_DEPENDENT_P): New macro.
971         (TYPE_DEPENDENT_P_VALID): Likewise.
972         (lang_type_class): Add fields_readonly.
973         * decl.c (record_builtin_type): Don't set TYPE_BUILT_IN.
974         * pt.c (dependent_type_p_r): New function, split out from ...
975         (dependent_type_p): ... here.  Memoize results.
976         * search.c (dependent_base_p): Use dependent_type_p, not
977         uses_template_parms.
978         * typeck.c (build_modify_expr): Only check C_TYPE_FIELDS_READONLY
979         for class types.
980
981 2003-01-29  Mark Mitchell  <mark@codesourcery.com>
982
983         * call.c (build_field_call): Use build_new_op, not build_opfncall.
984         (prep_operand): New function.
985         (build_new_op): Use it.  Remove dead code.
986         * class.c (pushclass): Change "modify" parameter type from int to
987         bool.
988         (currently_open_class): Use same_type_p, not pointer equality.
989         (push_nested_class): Adjust calls to pushclass, remove modify
990         parameter.
991         * cp-tree.h (INTEGRAL_OR_ENUMERATION_TYPE_P): New macro.
992         (pushclass): Change prototype.
993         (push_nested_class): Likewise.
994         (grokoptypename): Remove.
995         (build_opfncall): Remove.
996         (value_dependent_expression_p): Declare.
997         (resolve_typename_type): Likewise.
998         (resolve_typename_type_in_current_instantiation): Likewise.
999         (enter_scope_of): Remove.
1000         (tsubst): Remove.
1001         (tsubst_expr): Likewise.
1002         (tsubst_copy): Likewise.
1003         (tsubst_copy_and_build): Likewise.
1004         * decl.c (warn_about_implicit_typename_lookup): Remove.
1005         (finish_case_label): Return error_mark_node for erroneous labels.
1006         (start_decl): Adjust calls to push_nested_class.
1007         (grokfndecl): Call push_scope/pop_scope around call to
1008         duplicate_decls.
1009         (grokdeclarator): Do not call tsubst.
1010         (start_function): Adjust calls to push_nested_class.
1011         * decl2.c (grok_array_decl): Use build_new_op, not build_opfncall.
1012         (check_classfn): Use push_scope/pop_scope around type comparisions.
1013         (grokoptypename): Remove.
1014         (push_sscope): Adjust call to push_nested_class.
1015         * error.c (dump_type): Show cv-qualification of typename types.
1016         * init.c (build_member_call): Use build_new_op, not
1017         build_opfncall.
1018         * method.c (build_opfncall): Remove.
1019         * parser.c (cp_parser): Add allow_non_constant_expression_p and
1020         non_constant_expression_p.
1021         (cp_parser_constant_expression): Adjust prototype.
1022         (cp_parser_resolve_typename_type): Remove.
1023         (cp_parser_non_constant_expression): New function.
1024         (cp_parser_non_constant_id_expression): Likewise.
1025         (cp_parser_new): Set allow_non_constant_expression_p and
1026         non_constant_expression_p.
1027         (cp_parser_primary_expression): Reject `this' and `va_arg' in
1028         constant-expressions.  Note that dependent names aren't really
1029         constant.
1030         (cp_parser_postfix_expression): Reject conversions to non-integral
1031         types in constant-expressions.  Neither are increments or
1032         decrements.
1033         (cp_parser_unary_expression): Reject increments and decrements in
1034         constant-expressions.
1035         (cp_parser_direct_new_declarator): Adjust call to
1036         cp_parser_constant_expression.
1037         (cp_parser_cast_expression): Reject conversions to non-integral
1038         types in constant-expressions.
1039         (cp_parser_assignment_expression): Rejects assignments in
1040         constant-expressions.
1041         (cp_parser_expression): Reject commas in constant-expressions.
1042         (cp_parser_labeled_statement): Adjust call to
1043         cp_parser_constant_expression.
1044         (cp_parser_direct_declarator): Simplify array bounds, even in
1045         templates, when they are non-dependent.  Use
1046         resolve_typename_type, not cp_parser_resolve_typename_type.
1047         (cp_parser_class_head): Use resolve_typename_type, not
1048         cp_parser_resolve_typename_type.
1049         (cp_parser_member_declaration): Adjust call to
1050         cp_parser_constant_expression.
1051         (cp_parser_constant_initializer): Likewise.
1052         (cp_parser_constructor_declarator): Use resolve_typename_type, not
1053         cp_parser_resolve_typename_type.
1054         (cp_parser_late_parsing_default_args): Adjust call to
1055         push_nested_class.
1056         * pt.c (tsubst): Give it internal linkage.
1057         (tsubst_expr): Likewise.
1058         (tsubst_copy): Likewise.
1059         (tsubst_copy_and_build): Likewise.
1060         (push_access_scope_real): Likewise.
1061         (tsubst_friend_class): Likewise.
1062         (instantiate_class_template): Adjust call to pushclass.
1063         (value_dependent_expression_p): Give it external linkage.
1064         Robustify.
1065         (resolve_typename_type): New function.
1066         * semantics.c (finish_call_expr): Use build_new_op, not
1067         build_opfncall.
1068         (begin_constructor_declarator): Remove.
1069         (begin_class_definition): Adjust call to pushclass.
1070         (enter_scope_of): Remove.
1071         * typeck.c (comptypes): Resolve typename types as appropriate.
1072         (build_x_indirect_ref): Use build_new_op, not build_opfncall.
1073         (build_x_compound_expr): Likewise.
1074         (build_modify_expr): Likewise.
1075         (build_x_modify_expr): Likewise.
1076         * typeck2.c (build_x_arrow): Likewise.
1077
1078 2003-01-29  Fariborz Jahanian  <fjahanian@apple.com>
1079
1080         * pt.c (last_pending_template) Declare GTY().
1081
1082 2003-01-29  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1083
1084         PR c++/8591
1085         * parser.c (cp_parser_elaborated_type_specifier): Convert
1086         TEMPLATE_DECL to TYPE_DECL only when processing template friends.
1087         (cp_parser_maybe_treat_template_as_class): Remove redundant tests.
1088
1089 2003-01-28  Nathan Sidwell  <nathan@codesourcery.com>
1090
1091         PR c++/9437
1092         * pt.c (unify): Don't unify '*T' with 'U C::*'.
1093
1094         PR c++/3902
1095         * parser.c (cp_parser_decl_specifier_seq): Cannot have constructor
1096         inside a declarator.
1097
1098 2003-01-27  Nathan Sidwell  <nathan@codesourcery.com>
1099
1100         * class.c (update_vtable_entry_for_fn): Add index parameter.
1101         Generate vcall thunk for covariant overriding from a virtual
1102         primary base.
1103         (dfs_modify_vtables): Adjust.
1104
1105 2003-01-25  Nathan Sidwell  <nathan@codesourcery.com>
1106
1107         PR c++/9403
1108         * parser.c (cp_parser_class_or_namespace_name): Reject duplicate
1109         template keyword.
1110         (cp_parser_base_specifier): Look for and consume a
1111         TEMPLATE keyword. Replace switch with array index.
1112
1113         PR c++/795
1114         * semantics.c (finish_non_static_data_member): Remember the
1115         field's type even in a template.
1116
1117         PR c++/9415
1118         * pt.c (tsubst_copy_and_build, CALL_EXPR): BASELINK exprs are
1119         already scoped.
1120
1121         PR c++/8545
1122         * parser.c (cp_parser_cast_expression): Be more tentative.
1123
1124 2003-01-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1125
1126         * cp-tree.h (flagged_type_tree_s): Remove.
1127         (check_for_new_type): Likewise.
1128         * typeck2.c (check_for_new_type): Likewise.
1129
1130 2003-01-23  Nathanael Nerode  <neroden@gcc.gnu.org>
1131
1132         * dump.c: ANSIfy function declarations and definitions.
1133
1134         * cp-tree.h, decl.h: Get rid of PARAMS.  Again.
1135
1136 2003-01-22  Mark Mitchell  <mark@codesourcery.com>
1137
1138         PR c++/9354
1139         * init.c (build_new): Set the type of the new-expression, even
1140         when processing_templte_decl.
1141
1142         PR c++/9216
1143         * parser.c (cp_parser_primary_expression): Improve error message
1144         for templates used in an expression context.
1145
1146         PR c++/8696
1147         * parser.c (cp_parser_decl_specifier_seq): Commit to tentative
1148         parse when encountering "typedef".
1149
1150 2003-01-22  Nathanael Nerode  <neroden@gcc.gnu.org>
1151
1152         * class.c, parser.c: ANSIfy function definitions and declarations.
1153
1154 2003-01-22  Mark Mitchell  <mark@codesourcery.com>
1155
1156         PR c++/9328
1157         * error.c (dump_decl): For an OVERLOAD, just print the name of the
1158         function; it doesn't make sense to try to print its type.
1159         * semantics.c (finish_typeof): Issue errors about invalid uses.
1160
1161         PR c++/9298
1162         * parser.c (cp_parser_consume_semicolon_at_end_of_statement): New
1163         function.
1164         (cp_parser_expression_statement): Use it.
1165         (cp_parser_explicit_instantiation): Likewise.
1166         * pt.c (do_decl_instantiation): Improve error handling logic.
1167
1168 2003-01-22  Mark Mitchell  <mark@codesourcery.com>
1169
1170         PR c++/9384
1171         * parser.c (cp_parser_using_declaration): Issue error messages
1172         about name resolution failures here.
1173
1174         PR c++/9388
1175         * class.c (currently_open_derived_class): Use dependent_type_p.
1176         * cp-tree.h (dependent_type_p): New function.
1177         (dependent_template_arg_p): Likewise.
1178         (dependent_template_p): Likewise.
1179         (type_dependent_expression_p): Likewise.
1180         * parser.c (cp_parser_dependent_type_p): Remove.
1181         (cp_parser_value_dependent_type_p): Likewise.
1182         (cp_parser_type_dependent_expression_p): Likewise.
1183         (cp_parser_dependent_template_arg_p): Likewise.
1184         (cp_parser_dependent_template_id_p): Likewise.
1185         (cp_parser_dependent_template_p): Likewise.
1186         (cp_parser_diagnose_invalid_type_name): Replace
1187         cp_parser_dependent_type_p with dependent_type_p, etc.
1188         (cp_parser_primary_expresion): Likewise.
1189         (cp_parser_nested_name_specifier_opt): Likewise.
1190         (cp_parser_postfix_expression): Likewise.
1191         (cp_parser_unary_expression): Likewise.
1192         (cp_parser_template_name): Likewise.
1193         (cp_parser_class_name): Likewise.
1194         (cp_parser_lookup_name): Likewise.
1195         * pt.c (dependent_type_p): New function.
1196         (value_dependent_expression_p): Likewise.
1197         (type_dependent_expression_p): Likewise.
1198         (dependent_template_arg_p): Likewise.
1199         (dependent_template_id_p): Likewise.
1200         (dependent_template_p): Likewise.
1201
1202         PR c++/9285
1203         PR c++/9294
1204         * parser.c (cp_parser_simple_declaration): Return quickly when
1205         encountering errors.
1206
1207 2003-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1208
1209         Make-lang.in (cp/decl.o-warn): Add -Wno-error.
1210
1211 2003-01-17  Jason Merrill  <jason@redhat.com>
1212
1213         PR c++/9167, c++/9358
1214         * decl.c (require_complete_types_for_parms): Also update DECL_ARG_TYPE.
1215
1216 2003-01-17  Jason Merrill  <jason@redhat.com>
1217
1218         PR c++/9342
1219         * call.c (build_conditional_expr): Always do lvalue-rvalue
1220         conversion.
1221
1222 2003-01-17  Mark Mitchell  <mark@codesourcery.com>
1223
1224         PR c++/9294
1225         * cp-tree.def (BASELINK): Make it class 'x', not class 'e'.
1226         * cp-tree.h (BASELINK_BINFO): Adjust.
1227         (BASELINK_FUNCTIONS): Likewise.
1228         (BASELINK_ACCESS_BINFO): Likewise.
1229         (tree_baselink): New structure.
1230         (cp_tree_node_structure_enum): Add TS_CP_BASELINK.
1231         (lang_tree_node): Add baselink.
1232         * decl.c (cp_tree_node_structure): Add BASELINK case.
1233         * search.c (build_baselink): Adjust.
1234         * tree.c (cp_walk_subtrees): Add BASELINK case.  Remove BASELINK_P
1235         test from TREE_LIST case.
1236
1237         PR c++/9272
1238         * parser.c (cp_parser_constructor_declarator_p): Do not assume
1239         that a constructor cannot be declared outside of its own class.
1240
1241         * parser.c (cp_parser_resolve_typename_type): If the scope cannot
1242         be resolved, neither can the qualified name.
1243
1244         * rtti.c (get_pseudo_ti_desc): Fix thinko.
1245
1246 2003-01-16  Jason Merrill  <jason@redhat.com>
1247
1248         PR c++/8564
1249         * init.c (build_vec_init): Re-add maxindex parm.
1250         (perform_member_init, build_aggr_init): Pass it.
1251         (build_new_1): Pass it. Use an incomplete array type for full_type.
1252         * typeck.c (build_modify_expr): Pass it.
1253         * cp-tree.h: Adjust.
1254
1255 2003-01-16  Jeffrey D. Oldham  <oldham@codesourcery.com>
1256
1257         * cp-tree.h (tsubst_copy_and_build): New declaration.
1258         * pt.c (tsubst_copy): Remove 'build_expr_from_tree' from comment.
1259         (tsubst_expr): Use 'tsubst_copy_and_build'.  Update initial comment.
1260         (tsubst_copy_and_build): New function.
1261
1262 2003-01-16  Mark Mitchell  <mark@codesourcery.com>
1263
1264         * cp-tree.h (lang_type_class): Remove is_partial_instantiation.
1265         (PARTIAL_INSTANTIATION_P): Remove.
1266         (IMPLICIT_TYPENAME_P): Likewise.
1267         (IMPLICIT_TYPENAME_TYPE_DECL_P): Likewise.
1268         (build_typename_type): Remove declaration.
1269         (parmlist_is_exprlist): Likewise.
1270         * decl.c (build_typename_type): Make it static, remove third
1271         parameter.
1272         (push_class_binding): Don't do implicit typename stuff.
1273         (make_typename_type): Likewise.
1274         (lookup_name_real): Likewise.
1275         (grokdeclarator): Don't try to convert declarations into
1276         initializations.  Don't do implicit typename stuff.
1277         (parmlist_is_exprlist): Remove.
1278         (xref_basetypes): Simplify.
1279         * decl2.c (grokfield): Don't try to convert declarations into
1280         initializations.
1281         (build_anon_union_vars): Do this while processing templates, too.
1282         (finish_anon_union): Likewise.
1283         * error.c (dump_type): Remove implicit typename handling.
1284         * parser.c (cp_parser_diagnose_invalid_type_name): New method.
1285         (cp_parser_primary_expression): Correct handling of names not
1286         found by unqualified name lookup in templates.
1287         (cp_parser_nested_name_specifier_opt): Avoid checking dependency
1288         of types when possible.
1289         (cp_parser_simple_declaration): Complain intelligently about some
1290         invalid declarations.
1291         (cp_parser_member_declaration): Likewise.
1292         (cp_parser_constructor_declarator_p): Don't check when we're in a
1293         function scope.
1294         * pt.c (instantiate_class_template): Remove
1295         PARTIAL_INSTANTIATION_P gunk.
1296         * search.c (lookup_field_r): Don't build implicit typenames.
1297         (marked_pushdecls_p): Don't enter dependent base types.
1298         (unmarked_pushdecls_p): Likewise.
1299         * semantics.c (begin_class_definition): Remove implicit typename
1300         stuff.
1301
1302 2003-01-16  Nathan Sidwell  <nathan@codesourcery.com>
1303
1304         PR c++/9212
1305         * parser.c (cp_parser_direct_declarator): If accepting either
1306         abstract or named, the name must be an unqualified-id.
1307
1308 2003-01-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1309
1310         * class.c (layout_virtual_bases): Avoid signed/unsigned warning.
1311
1312 2003-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1313
1314         * decl2.c (check_classfn): Fix uninitialized warning.
1315         (build_anon_union_vars): Likewise.
1316         * pt.c (tsubst_copy): Likewise.
1317
1318 2003-01-14  Jeffrey D. Oldham  <oldham@codesourcery.com>
1319
1320         Further conform g++'s __vmi_class_type_info to the C++ ABI
1321         specification.
1322         * rtti.c (dfs_class_hint_mark): Do not set hints not specified by
1323         the specification.
1324         (class_hint_flags): Likewise.
1325
1326 2003-01-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1327
1328         * config-lang.in: Add semantics.c to gtfiles.
1329         * cp-tree.h (flagged_type_tree_s): Remove lookups field.
1330         (saved_scope): Likewise.
1331         (type_lookups): Remove.
1332         (deferred_access): New structure.
1333         (type_access_control): Remove.
1334         (save_type_access_control): Likewise.
1335         (reset_type_access_control): Likewise.
1336         (decl_type_access_control): Likewise.
1337         (push_deferring_access_checks): Declare.
1338         (resume_deferring_access_checks): Likewise.
1339         (stop_deferring_access_checks): Likewise.
1340         (pop_deferring_access_checks): Likewise.
1341         (get_deferred_access_checks): Likewise.
1342         (pop_to_parent_deferring_access_checks): Likewise.
1343         (perform_deferred_access_checks): Likewise.
1344         (perform_or_defer_access_check): Likewise.
1345         * decl.c (make_typename_type): Use perform_or_defer_access_check.
1346         (make_unbound_class_template): Likewise.
1347         (grokdeclarator): Don't call decl_type_access_control.
1348         * parser.c (cp_parser_context): Remove deferred_access_checks
1349         and deferring_access_checks_p fields.
1350         (cp_parser_context_new): Adjust.
1351         (cp_parser): Remove access_checks_lists.
1352         (cp_parser_defer_access_check): Remove.
1353         (cp_parser_start_deferring_access_checks): Remove.
1354         (cp_parser_stop_deferring_access_checks): Remove.
1355         (cp_parser_perform_deferred_access_checks): Remove.
1356         (cp_parser_nested_name_specifier_opt): Use new deferred access
1357         functions.
1358         (cp_parser_simple_declaration): Likewise.
1359         (cp_parser_template_id): Likewise.
1360         (cp_parser_function_definition): Likewise.
1361         (cp_parser_class_specifier): Likewise.
1362         (cp_parser_lookup_name): Likewise.
1363         (cp_parser_single_declaration): Likewise.
1364         (cp_parser_pre_parsed_nested_name_specifier): Likewise.
1365         (cp_parser_parse_tentatively): Likewise.
1366         (cp_parser_parse_definitely): Likewise.
1367         (yyparse): Likewise.
1368         (cp_parser_init_declarator): Remove access_checks parameter.
1369         Use new deferred access functions.
1370         (cp_parser_function_definition_from_specifiers_and_declarator):
1371         Likewise.
1372         (cp_parser_class_head): Remove deferring_access_checks_p and
1373         saved_access_checks parameters.  Use new deferred access functions.
1374         (cp_parser_member_specification_opt): Don't call
1375         reset_type_access_control.
1376         * search.c (type_access_control): Remove.
1377         * semantics.c: Include "gt-cp-semantics.h".
1378         (deferred_type_access_control): Remove.
1379         (deferred_access_stack): New variable.
1380         (deferred_access_free_list): Likewise.
1381         (push_deferring_access_checks): New function.
1382         (resume_deferring_access_checks): Likewise.
1383         (stop_deferring_access_checks): Likewise.
1384         (pop_deferring_access_checks): Likewise.
1385         (get_deferred_access_checks): Likewise.
1386         (pop_to_parent_deferring_access_checks): Likewise.
1387         (perform_deferred_access_checks): New function, adapted from
1388         cp_parser_perform_deferred_access_checks.
1389         (perform_or_defer_access_check): New function, adapted from
1390         cp_parser_defer_access_check.
1391         (current_type_lookups): Remove.
1392         (deferred_type_access_control): Likewise.
1393         (decl_type_access_control): Likewise.
1394         (save_type_access_control): Likewise.
1395         (reset_type_access_control): Likewise.
1396         (begin_function_definition): Adjust.
1397         (begin_class_definiton): Likewise.
1398
1399 2003-01-13  Jason Merrill  <jason@redhat.com>
1400
1401         PR c++/8748
1402         * class.c (build_base_path): Take the address before calling save_expr.
1403
1404         * call.c (build_user_type_conversion_1): Do set ICS_BAD_FLAG if
1405         all the ambiguous conversions are bad.
1406
1407         * class.c (maybe_warn_about_overly_private_class): Don't stop
1408         searching when we find a nonprivate method.
1409
1410         * typeck.c (build_class_member_access_expr): Use unary_complex_lvalue.
1411
1412 2003-01-12  Mark Mitchell  <mark@codesourcery.com>
1413
1414         * cp-tree.h (get_arglist_len_in_bytes): Remove.
1415
1416         PR c++/9264
1417         * parser.c (cp_parser_elaborated_type_specifier): Handle erroneous
1418         typeame types more robustly.
1419
1420 2003-01-11  Phil Edwards  <pme@gcc.gnu.org>
1421
1422         * parser.c:  Fix comment typos.
1423
1424 2003-01-10  Mark Mitchell  <mark@codesourcery.com>
1425
1426         PR c++/9099
1427         * parser.c (cp_parser_scope_through_which_access_occurs): Handle
1428         an object_type which is not a class type.
1429
1430 2003-01-10  Geoffrey Keating  <geoffk@apple.com>
1431
1432         * parser.c (cp_parser_late_parsing_for_member): Don't cast to void.
1433         (cp_parser_late_parsing_default_args): Likewise.
1434
1435 2003-01-10  Nathanael Nerode  <neroden@gcc.gnu.org>
1436
1437         * cfns.gperf: ANSIfy function declarations.
1438         * cfns.h: Regenerate.
1439         * cp-tree.h: ANSIfy function declarations.
1440
1441 2003-01-10  Mark Mitchell  <mark@codesourcery.com>
1442
1443         * cp-tree.h (reparse_absdcl_as_expr): Remove.
1444         (reparse_absdcl_as_casts): Likewise.
1445         (reparse_decl_as_expr): Likewise.
1446         (finish_decl_parsing): Likewise.
1447         * decl2.c (reparse_absdcl_as_expr): Remove.
1448         (reparse_absdcl_as_casts): Likewise.
1449         (repase_decl_as_expr): Likewise.
1450         (finish_decl_parsing): Likewise.
1451
1452         PR c++/9128
1453         PR c++/9153
1454         PR c++/9171
1455         * parser.c (cp_parser_pre_parsed_nested_name_specifier): New
1456         function.
1457         (cp_parser_nested_name_specifier_opt): Correct the
1458         check_dependency_p false.
1459         (cp_parser_postfix_expression): Fix formatting.
1460         (cp_parser_decl_specifier_seq): Avoid looking for constructor
1461         declarators when possible.
1462         (cp_parser_template_id): Avoid performing name-lookup when
1463         possible.
1464         (cp_parser_class_head): Do not count specializations when counting
1465         levels of templates.
1466         (cp_parser_constructor_declarator_p): Return immediately if
1467         there's no chance that the tokens form a constructor declarator.
1468         * rtti.c (throw_bad_typeid): Add comment.  Do not return an
1469         expression with reference type.
1470         (get_tinfo_decl_dynamic): Do not return an expression with
1471         reference type.
1472         (build_typeid): Add comment.  Do not return an expression with
1473         reference type.
1474         * typeck.c (build_class_member_access_expr): Improve handling of
1475         conditionals and comma-expressions as objects.
1476
1477 2003-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>
1478
1479         * cfns.gperf: ANSIfy function declarations.
1480         * cfns.h: Regenerate.
1481         * cp-tree.h: ANSIfy function declarations.
1482         * parser.c: ANSIfy function declarations & definitions.
1483
1484         * decl.c (bad_specifiers): Fix parameter order error I introduced.
1485
1486 2003-01-09  Geoffrey Keating  <geoffk@apple.com>
1487
1488         Merge from pch-branch:
1489
1490         2003-01-09  Geoffrey Keating  <geoffk@apple.com>
1491
1492         Merge to tag pch-merge-20030102:
1493
1494         * semantics.c (finish_translation_unit): Don't call finish_file.
1495         * parser.c: Don't include ggc.h.
1496         (cp_lexer_new_main): Rename from cp_lexer_new, only create main lexer,
1497         read first token here.  Don't allow PCH files after the first
1498         token is read.
1499         (cp_lexer_new_from_tokens): Duplicate functionality from cp_lexer_new.
1500         (cp_lexer_get_preprocessor_token): Allow LEXER to be NULL.
1501         (cp_parser_new): Call cp_lexer_new_main before allocating GCed memory.
1502         (cp_parser_late_parsing_for_member): Don't duplicate call to
1503         cp_lexer_set_source_position_from_token.
1504         (cp_parser_late_parsing_default_args): Likewise.
1505         (yyparse): Call finish_file after clearing the_parser.
1506
1507         2002-12-11  Geoffrey Keating  <geoffk@apple.com>
1508
1509         * Make-lang.in: Remove $(GGC_H) from all dependencies.
1510         (CXX_TREE_H): Add $(GGC_H).
1511         * class.c: Don't include ggc.h.
1512         (field_decl_cmp): Make parameters be 'const void *' to match qsort.
1513         (method_name_cmp): Likewise.
1514         (resort_data): New variable.
1515         (resort_field_decl_cmp): New.
1516         (resort_method_name_cmp): New.
1517         (resort_sorted_fields): New.
1518         (resort_type_method_vec): New.
1519         (finish_struct_methods): Delete cast.
1520         (finish_struct_1): Delete cast.
1521         * cp-tree.h: Include ggc.h.
1522         (struct lang_type_class): Add reorder attribute to field `methods'.
1523         (union lang_decl_u3): Add reorder attribute to field `sorted_fields'.
1524         (resort_sorted_fields): New prototype.
1525         (resort_type_method_vec): New prototype.
1526         * call.c: Don't include ggc.h.
1527         * decl.c: Likewise.
1528         * decl2.c: Likewise.
1529         * init.c: Likewise.
1530         * lex.c: Likewise.
1531         * method.c: Likewise.
1532         * optimize.c: Likewise.
1533         * parse.y: Likewise.
1534         * pt.c: Likewise.
1535         * repo.c: Likewise.
1536         * search.c: Likewise.
1537         * semantics.c: Likewise.
1538         * spew.c: Likewise.
1539         * tree.c: Likewise.
1540
1541         * lang-specs.h: Remove comment.
1542
1543         2002-12-03  Geoffrey Keating  <geoffk@apple.com>
1544
1545         * cp-tree.h (struct operator_name_info_t): Mark for GTY machinery.
1546         (operator_name_info): Mark to be saved for PCH, specify size.
1547         (assignment_operator_name_info): Likewise.
1548
1549         2002-11-19  Geoffrey Keating  <geoffk@apple.com>
1550
1551         * decl.c (anon_cnt): Mark to be saved for PCH.
1552
1553         2002-10-25  Geoffrey Keating  <geoffk@apple.com>
1554
1555         * lex.c  (init_reswords): Delete now-untrue comment.
1556         Allocate ridpointers using GGC.
1557
1558         2002-10-04  Geoffrey Keating  <geoffk@apple.com>
1559
1560         * cp-tree.h (union lang_decl_u2): Add tags to all fields.
1561
1562         * g++spec.c (lang_specific_driver): Don't include standard
1563         libraries in `added'.
1564
1565         2002-08-27  Geoffrey Keating  <geoffk@redhat.com>
1566
1567         * decl2.c (finish_file): Call c_common_write_pch.
1568         * Make-lang.in (CXX_C_OBJS): Add c-pch.o.
1569
1570         2002-08-17  Geoffrey Keating  <geoffk@redhat.com>
1571
1572         * g++spec.c (lang_specific_driver): Treat .h files as C++ header
1573         files when using g++.
1574         * lang-specs.h: Handle compiling C++ header files.
1575
1576 2003-01-09  Jakub Jelinek  <jakub@redhat.com>
1577
1578         * decl.c (start_decl): Only check DECL_THREAD_LOCAL for VAR_DECLs.
1579
1580 2003-01-09  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1581
1582         * pt.c (push_access_scope_real): Call push_to_top_level for
1583         function in namespace scope.
1584         (pop_access_scope): Call pop_from_top_level for function in
1585         namespace scope.
1586
1587 2003-01-09  Jakub Jelinek  <jakub@redhat.com>
1588
1589         * decl.c (start_decl): Don't set DECL_COMMON for __thread variables.
1590
1591 2003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>
1592
1593         * Make-lang.in (c++.install-common, c++.install-man,
1594         c++.uninstall): Prepend $(DESTDIR) to destination paths in
1595         all (un)installation commands.
1596         (c++.install-common): Rewrite $(LN) commands to support
1597         DESTDIR with "ln" as well as with "ln -s".
1598
1599 2003-01-08  Jason Merrill  <jason@redhat.com>
1600
1601         * parser.c (cp_parser_primary_expression): See through explicitly
1602         scoped ALIAS_DECLs, too.
1603
1604 2003-01-08  Nathanael Nerode  <neroden@gcc.gnu.org>
1605
1606         * decl.c: Remove some #if 0 code.
1607
1608         * decl.c: ANSIfy function declarations.
1609
1610 2003-01-07  Mark Mitchell  <mark@codesourcery.com>
1611
1612         * parser.c (cp_parser_asm_definition): Correct handling of omitted
1613         operands.
1614
1615 2003-01-08  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1616
1617         PR c++/9030
1618         * decl.c (make_typename_type): Check access only when tf_error.
1619         (make_unbound_class_template): Likewise.
1620         * pt.c (saved_access_scope): New variable.
1621         (push_access_scope_real): New function.
1622         (push_access_scope): Likewise.
1623         (pop_access_scope): Likewise.
1624         (tsubst_default_argument): Use them.
1625         (instantiate_template): Likewise.
1626         (regenerate_decl_from_template): Likewise.
1627         (instantiate_decl): Likewise.
1628         (get_mostly_instantiated_function_type): Likewise.
1629
1630 2003-01-07  Nathanael Nerode <neroden@gcc.gnu.org>
1631
1632         * tree.c: Delete bogus #if 0 code.
1633
1634 2003-01-07  Andreas Schwab  <schwab@suse.de>
1635
1636         * class.c (layout_class_type): Don't use
1637         PCC_BITFIELD_TYPE_MATTERS if not defined.
1638
1639 2003-01-06  Mark Mitchell  <mark@codesourcery.com>
1640
1641         PR c++/9165
1642         * decl2.c (build_cleanup): Mark the object as used.
1643
1644         * pt.c (retrieve_local_specialization): Revert 2003-01-05 change.
1645         (hash_local_specialization): New function.
1646         (register_local_specialization): Revert 2003-01-05 change.
1647         (instantiate_decl): Use hash_local_specialization when creating
1648         the local_specializations table.
1649
1650         * decl2.c (mark_used): Do not synthesize thunks.
1651
1652         * class.c (layout_class_type): Correct handling of unnamed
1653         bitfields wider than their types.
1654
1655         PR c++/9189
1656         * parser.c (cp_parser): Remove default_arg_types.  Update
1657         documentation for unparsed_functions_queues.
1658         (cp_parser_late_parsing_default_args): Take a FUNCTION_DECL as the
1659         parameter.
1660         (cp_parser_new): Don't set parser->default_arg_types.
1661         (cp_parser_function_definition): Adjust usage of
1662         unparsed_funtions_queues.
1663         (cp_parser_class_specifier): Don't mess with
1664         parser->default_arg_types.  Handle default argument processing in
1665         a separate phase from function body processing.
1666         (cp_parser_template_declaration_after_export): Adjust usage of
1667         unparsed_functions_queues.
1668         (cp_parser_late_parsing_for_member): Do not handle default
1669         arguments.
1670
1671 2003-01-06  Nathan Sidwell  <nathan@codesourcery.com>
1672
1673         PR c++/9109
1674         * parser.c (cp_parser_declarator_kind): New enum.
1675         (cp_parser_declarator): Adjust.
1676         (cp_parser_direct_declarator): Adjust. Allow for either named or
1677         abstract declarator. Prefer abstract, if possible. Allow
1678         parenthesized function name.
1679         (cp_parser_condition): Adjust cp_parser_declarator call.
1680         (cp_parser_explicit_instantiation): Likewise.
1681         (cp_parser_init_declarator): Likewise.
1682         (cp_parser_type_id): Likewise.
1683         (cp_parser_function_definition): Likewise.
1684         (cp_parser_member_declaration): Likewise.
1685         (cp_parser_parameter_declaration): Use cp_parser_declarator to do
1686         the tentative parsing.
1687         (cp_parser_exception_declaration): Likewise.
1688
1689 2003-01-05  Mark Mitchell  <mark@codesourcery.com>
1690
1691         * parser.c (cp_parser_template_parameter): Adjust call to
1692         cp_parser_parameter_declaration.
1693         (cp_parser_parameter_declaration_list): Likewise.
1694         (cp_parser_parameter_declaration): Replace
1695         greater_than_is_operator_p with template_parm_p parameter.  Do not
1696         cache tokens for template default arguments.
1697
1698         * pt.c (retrieve_local_specialization): Use htab_find, not
1699         htab_find_with_hash.
1700         (register_local_specialization): Use htab_find_slot, not
1701         htab_find_slot_with_hash.
1702         (instantiate_decl): Pass a hash function to htab_create.
1703
1704 2003-01-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1705
1706         * parser.c (cp_parser_binary_expression,
1707         cp_parser_multiplicative_expression,
1708         cp_parser_additive_expression, cp_parser_shift_expression,
1709         cp_parser_relational_expression, cp_parser_equality_expression,
1710         cp_parser_and_expression, cp_parser_exclusive_or_expression,
1711         cp_parser_inclusive_or_expression,
1712         cp_parser_logical_and_expression, cp_parser_logical_or_expression,
1713         cp_parser_binary_expression): Const-ify.
1714
1715 2003-01-04  Mark Mitchell  <mark@codesourcery.com>
1716
1717         * method.c (use_thunk): Disable access control while building the
1718         body of the thunk.
1719
1720 2003-01-03  Nathanael Nerode  <neroden@gcc.gnu.org>
1721
1722         * cvt.c, decl.c, decl2.c: This is the C++ front end, not the C
1723         front end.
1724
1725 2003-01-03  Matt Austern  <austern@apple.com>
1726
1727         * cp-tree.h (struct lang_type_class): add field for key method
1728         (cp_global_trees): rename dynamic_classes to keyed_classes
1729         (key_method): add definition
1730         * class.c (finish_struct_1): compute class's key method, and add
1731         the class to keyed_classes list if there is no key method.
1732         * decl.c (finish_function): add class to keyed_classes list if we
1733         see a definition of the class's key method.
1734         * pt.c (instantiate_class_template): add template specialization
1735         of a dynamic class to keyed_classes list.
1736         * decl2.c (key_method): remove
1737         (finish_file): iterate only through keyed_classes list when
1738         deciding whether to emit vtables, remove class from its list after
1739         we do the emission.
1740
1741 2003-01-02  Jason Merrill  <jason@redhat.com>
1742
1743         * call.c (build_conditional_expr): Stabilize lvalues properly.
1744         * cvt.c (ocp_convert): Don't build NOP_EXPRs of class type.
1745         * tree.c (lvalue_p_1): Don't allow sloppy NOP_EXPRs as lvalues.
1746         Don't allow CALL_EXPR or VA_ARG_EXPR, either.
1747
1748         * call.c (convert_like_real): Call decl_constant_value for an
1749         IDENTITY_CONV even if there are no more conversions.
1750
1751         * cvt.c (build_up_reference): Don't push unnamed temps.
1752
1753         * decl2.c (do_namespace_alias): Namespace aliases are DECL_EXTERNAL.
1754
1755         * dump.c (cp_dump_tree): Don't try to dump class-specific fields
1756         for a backend struct.
1757
1758         * except.c (wrap_cleanups_r, build_throw): Make
1759         MUST_NOT_THROW_EXPRs void.
1760         * init.c (expand_default_init): Update to handle MUST_NOT_THROW_EXPR.
1761
1762         * init.c (build_vec_delete_1): Pre-evaluate the base address.
1763
1764         * init.c (get_temp_regvar): Simplify logic.
1765
1766         * tree.c (cp_copy_res_decl_for_inlining): Only do debug tweaks if
1767         our replacement is a decl.
1768
1769         * decl.c (cp_make_fname_decl): Push the decls inside the
1770         outermost scope.
1771
1772 2003-01-03  Nathan Sidwell  <nathan@codesourcery.com>
1773
1774         PR c++/45, c++/3784
1775         * tree.c (cp_tree_equal, TEMPLATE_PARM_INDEX): The types must be
1776         the same too.
1777
1778 2003-01-03  Graham Stott  <graham.stott@btinternet.com>
1779
1780         * parser.c (struct cp_parser): Add access_checks_lists field
1781         (cp_parser_simple_declaration): Use.
1782         (cp_parser_init_declarator): Likewise.
1783
1784 2003-01-02  Mark Mitchell  <mark@codesourcery.com>
1785
1786         * parser.c (cp_parser_declaration): Accept the __extension__
1787         keyword before the declaration.
1788
1789         PR c++/2843
1790         * parser.c (cp_parser_parameter_declaration): Allow attributes to
1791         appear after the declarator.
1792
1793         * call.c (build_new_method_call): Fix typo in message format
1794         string.
1795
1796 2003-01-02  Mark Mitchell  <mark@codesourcery.com>
1797
1798         * parser.c (cp_lexer_next_token_is): Declare it inline.
1799         (cp_lexer_set_source_position_from_token): Likewise.
1800         (cp_lexer_debugging_p): Likewise.
1801         (cp_parser_parsing_tentatively): Likewise.
1802         (cp_parser_nested_name_specifier_opt): Reduce the number of calls
1803         to the cp_lexer_peek_token.
1804
1805         * parser.c (cp_parser_sizeof_operand): Do not evaluate the
1806         expression.
1807
1808 2003-01-02  Steven Bosscher <s.bosscher@student.tudelft.nl>
1809
1810         * cp/except.c, cp/expr.c, cp/friend.c, cp/g++spec.c,
1811         cp/lang-options.h, cp/lang-specs.h, cp/lex.h, cp/ptree.c,
1812         cp/repo.c: Fix copyright years.
1813
1814 2003-01-01  Neil Booth  <neil@daikokuya.co.uk>
1815
1816         * lex.c: Remove superfluous include of cpplib.h.
1817         (CONSTRAINT): Define without conditions.
1818         (init_cp_pragma): Use c_register_pragma.
1819
1820 2002-12-31  Neil Booth  <neil@daikokuya.co.uk>
1821
1822         * .cvsignore: Remove.
1823
1824 2002-12-31  Steven Bosscher  <s.bosscher@student.tudelft.nl>
1825
1826         * call.c, class.c, cp-lang.c, cp-tree.h, cvt.c, dump.c, error.c,
1827           except.c, expr.c friend.c, g++spec.c, init.c, lang-options.h,
1828           lang-specs.h, lex.c, mangle.c, method.c, optimize.c, parser.c,
1829           pt.c, ptree.c, repo.c, rtti.c, search.c, semantics.c, tree.c,
1830           typeck.c, typeck2.c: Replace "GNU CC" with "GCC" in the
1831           copyright header.
1832         * lex.h: parse.y is dead, so don't mention it.  Also replace the
1833           copyright header with the default GNU copyright header.
1834
1835 2002-12-31  Mark Mitchell  <mark@codesourcery.com>
1836
1837         * cp-tree.h (LOOKUP_TEMPLATES_EXPECTED): Remove.
1838         (lookup_name_namespace_only): Likewise.
1839         (begin_only_namespace_names): Likewise.
1840         (end_only_namespace_names): Likewise.
1841         * decl.c (only_namespace_names): Remove.
1842         (qualify_lookup): Do not check LOOKUP_TEMPLATES_EXPECTED.
1843         (lookup_name_real): Do not check only_namespace_names.
1844         (lookup_name_namespace_only): Remove.
1845         (begin_only_namespace_names): Likewise.
1846         (end_only_namespace_names): Likewise.
1847         * parser.c (cp_parser_nested_name_specifier_opt): Handle erroneous
1848         nested-name-specifiers more gracefully.
1849         (cp_parser_class_or_namespace_name): Avoid looking up namespace
1850         names when they cannot possibly appear.
1851         (cp_parser_template_name): Adjust call to cp_parser_lookup_name.
1852         (cp_parser_elaborated_type_specifier): Likewise.
1853         (cp_parser_namespace_name): Only look for namespace names.
1854         (cp_parser_lookup_name): Add is_namespace parameter.
1855         (cp_parser_lookup_name_simple): Adjust call to
1856         cp_parser_lookup_name.
1857
1858         * parser.c (cp_parser_dependent_type_p): Fix thinko.
1859
1860 2002-12-31  Neil Booth  <neil@daikokuya.co.uk>
1861
1862         * .cvsignore: Update.
1863
1864 2002-12-31  Nathan Sidwell  <nathan@codesourcery.com>
1865
1866         * class.c (modify_vtable_entry): Remove unused variable.
1867         (get_vcall_index): Always expect a non-thunk.
1868         (update_vtable_entry_for_fn): Combine covariant adjustments, when
1869         overriding a thunk. Pass get_vcall_index a non-thunk.
1870
1871         * decl2.c (finish_file): Mark undefined inlines as extern.
1872
1873 2002-12-31  Mark Mitchell  <mark@codesourcery.com>
1874
1875         * cp-tree.def (RETURN_INIT): Remove.
1876         * cp-tree.h (DECL_IN_MEMORY_P): Remove.
1877         (scope_kind): Add sk_block, sk_try, sk_catch, sk_for.
1878         (note_level_for_for): Remove.
1879         (note_level_for_try): Likewise.
1880         (note_level_for_catch): Likewise.
1881         (finish_named_return_value): Likewise.
1882         (do_pushlevel): Change prototype.
1883         (pending_lang_change): Remove.
1884         * decl.c (begin_scope): Handle sk_block, sk_try, sk_catch,
1885         sk_for.
1886         (note_level_for_for): Remove.
1887         (note_level_for_try): Likewise.
1888         (note_level_for_catch): Likewise.
1889         (maybe_inject_for_scope_var): Remove use of DECL_IN_MEMORY_P.
1890         * parser.c (cp_parser_context_free_list): Make it "deletable".
1891         (cp_parser_template_argument): Remove misleading comment.
1892         * pt.c (tsubst_expr): Remove RETURN_INIT code.
1893         * semantics.c (genrtl_named_return_value): Remove.
1894         (do_pushlevel): Take a scope kind as an argument.
1895         (begin_if_stmt): Adjust.
1896         (begin_while_stmt): Likewise.
1897         (begin_for_stmt): Likewise.
1898         (finish_for_init_stmt): Likewise.
1899         (begin_switch_stmt): Likewise.
1900         (begin_handler): Likewise.
1901         (begin_compound_stmt): Likewise.
1902         (finish_named_return_value): Remove.
1903         (cp_expand_stmt): Remove RETURN_INIT case.
1904         * tree.c (cp_statement_code_p): Remove RETURN_INIT case.
1905
1906 2002-12-31  Mark Mitchell  <mark@codesourcery.com>
1907
1908         PR c++/9112
1909         * parser.c (cp_parser_direct_declarator): Handle erroneous
1910         parenthesized declarators correctly.
1911
1912 2002-12-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1913
1914         * cp-tree.h (pending_lang_change): Declare.
1915
1916 2002-12-30  Mark Mitchell  <mark@codesourcery.com>
1917
1918         * parser.c (cp_parser_context_free_list): New variable.
1919         (cp_parser_context_new): Use it.
1920         (cp_parser_error): Check return code from
1921         cp_parser_simulate_error.
1922         (cp_parser_simulate_error): Return a value.
1923         (cp_parser_id_expression): Optimize common case.
1924         (cp_parser_class_name): Likewise.
1925         (cp_parser_class_specifier): Adjust call to
1926         cp_parser_late_parsing_default_args.
1927         (cp_parser_lookup_name): Optimize common case.
1928         (cp_parser_late_parsing_for_member): Adjust call to
1929         cp_parser_late_parsing_default_args.
1930         (cp_parser_late_parsing_default_args): Add scope parameter.
1931         (cp_parser_require): Avoid creating the error message unless it's
1932         needed.
1933         (cp_parser_parse_definitely): Place free'd contexts on the free
1934         list.
1935
1936         * parser.c (cp_parser_declaration_seq_opt): Handle pending_lang_change.
1937
1938 2002-12-30  David Edelsohn  <edelsohn@gnu.org>
1939
1940         * parser.c (cp_parser_parameter_declaration_clause): Treat system
1941         header as extern "C" if NO_IMPLICIT_EXTERN_C undefined.
1942
1943 2002-12-30  Nathanael Nerode  <neroden@gcc.gnu.org>
1944
1945         * config-lang.in, Make-lang.in, operators.def, cp-tree.def:
1946         GCC, not GNU CC.
1947
1948 2002-12-30  Mark Mitchell  <mark@codesourcery.com>
1949
1950         * parse.y: Remove.
1951         * spew.c: Likewise.
1952         * Make-lang.in (gt-cp-spew.h): Remove.
1953         * cp-tree.h (do_pending_lang_change): Remove.
1954         (do_identifier): Change prototype.
1955         (finish_id_expr): Remove.
1956         * decl.c (lookup_name_real): Remove yylex variable.
1957         * decl2.c (build_expr_from_tree): Adjust call to do_identifier.
1958         * lex.c (init_cpp_parse): Remove.
1959         (reduce_cmp): Likewise.
1960         (token_cmp): Likewise.
1961         (yychar): Likewise.
1962         (lastiddecl): Likewise.
1963         (token_count): Likewise.
1964         (reduce_count): Likewise.
1965         (yyhook): Likewise.
1966         (print_parse_statistics): Likewise.
1967         (do_pending_lang_change): Likewise.
1968         (do_identifier): Remove parsing parameter.
1969         * lex.h (lastiddecl): Remove.
1970         (looking_for_typename): Remove.
1971         (looking_for_template): Likewise.
1972         (pending_lang_change): Likewise.
1973         (yylex): Likewise.
1974         * semantics.c (finish_id_expr): Remove.
1975
1976         * decl.c (grokdeclarator): Diagnost "extern thread" and "static
1977         thread" correctly.
1978
1979 2002-12-30  Nathanael Nerode  <neroden@gcc.gnu.org>
1980
1981         * decl.c, decl2.c, decl.h:  GCC, not GNU CC.  This is the C++ front
1982         end, not the C front end.
1983
1984 2002-12-30  Nathan Sidwell  <nathan@codesourcery.com>
1985
1986         * cp-tree.h (THUNK_TARGET): New macro.
1987         (THUNK_VIRTUAL_OFFSET): For result thunks it is always a binfo.
1988         (finish_thunk): Remove offset parms.
1989         * class.c (find_final_overrider): Look through thunks.
1990         (get_vcall_index): Use THUNK_TARGET.
1991         (update_vtable_entry_for_fn): Look through thunks. Set covariant
1992         fixed offset here. Adjust finish_thunk call.
1993         (build_vtbl_initializer): Adjust finish_thunk calls.
1994         * mangle.c (mangle_call_offset): Remove superfluous if.
1995         (mangle_thunk): Adjust.
1996         * method.c (make_thunk): Adjust.
1997         (finish_thunk): Adjust.
1998         (thunk_adjust): Remove assert.
1999         (use_thunk): Use THUNK_TARGET
2000         * dump1.c (cp_dump_tree): Adjust thunk dumping.
2001
2002         PR c++/9054
2003         * class.c (layout_class_type): Set TYPE_CONTEXT of type for base.
2004         * dump.c (cp_dump_tree, RECORD_TYPE): Deal with type for base types.
2005
2006 2002-12-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2007
2008         Remove traditional C constructs 4/n.
2009         * decl2.c (grok_method_quals, warn_if_unknown_interface,
2010         grok_x_components, cp_build_parm_decl, build_artificial_parm,
2011         maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
2012         delete_sanity, check_member_template, check_java_method,
2013         check_classfn, finish_static_data_member_decl, grokfield,
2014         grokbitfield, grokoptypename, grok_function_init,
2015         cplus_decl_attributes, constructor_name, defer_fn,
2016         build_anon_union_vars, finish_anon_union, coerce_new_type,
2017         coerce_delete_type, comdat_linkage, maybe_make_one_only,
2018         key_method, import_export_vtable, import_export_class,
2019         output_vtable_inherit, import_export_decl, import_export_tinfo,
2020         build_cleanup, get_guard, get_guard_bits, get_guard_cond,
2021         set_guard, start_objects, finish_objects,
2022         start_static_storage_duration_function,
2023         finish_static_storage_duration_function, get_priority_info,
2024         start_static_initialization_or_destruction,
2025         finish_static_initialization_or_destruction,
2026         do_static_initialization, do_static_destruction,
2027         prune_vars_needing_no_initialization, write_out_vars,
2028         reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
2029         add_using_namespace, merge_functions, ambiguous_decl,
2030         lookup_using_namespace, lookup_using_namespace,
2031         qualified_lookup_using_namespace, set_decl_namespace,
2032         decl_namespace, current_decl_namespace, push_decl_namespace,
2033         pop_decl_namespace, push_scope, pop_scope, add_function,
2034         arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
2035         lookup_arg_dependent, do_namespace_alias,
2036         validate_nonmember_using_decl, do_nonmember_using_decl,
2037         do_toplevel_using_decl, do_local_using_decl,
2038         do_class_using_decl, do_using_directive, check_default_args,
2039         mark_used, handle_class_head): Use C90 prototypings.  Use booleans.
2040         * parser.c (cp_parser_class_head): Use booleanss.
2041         * decl.c (walk_globals, walk_vtables): Likewise.
2042         * cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
2043         walk_globals): Change return type from 'int' to 'bool'.
2044         * rtti.c (init_rtti_processing, build_headof, throw_bad_cast
2045         throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
2046         build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
2047         get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
2048         qualifier_flags, tinfo_base_init, generic_initializer,
2049         ptr_initializer, dfs_class_hint_mark, ptm_initializer,
2050         dfs_class_hint_unmark, class_hint_flags, class_initializer,
2051         typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
2052         get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
2053         unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
2054         * repo.c (repo_compile_flags, repo_template_declared,
2055         repo_template_defined, repo_class_defined, repo_get_id,
2056         repo_template_used, repo_vtable_used, repo_inline_used,
2057         repo_tinfo_used, repo_template_instantiated, extract_string,
2058         open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
2059         finish_repo): Likewise.
2060         * ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
2061         cxx_print_xnode): Likewise..
2062         * cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
2063         cxx_warn_unused_global_decl, cp_expr_size): Likewise.
2064         * cxxfilt.c (demangle_it, print_demangler_list, usage,
2065         standard_symbol_characters, hp_symbol_characters, main, fatal):
2066         Likewise.
2067         (strip_underscore):  Change type from 'int' to 'bool'.
2068         (main): Use boolean constants.
2069
2070 2002-12-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2071
2072         Remove traditional C constructs 3/n.
2073         * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
2074         build_up_reference, warn_ref_binding, convert_to_reference,
2075         convert_from_reference, convert_lvalue, cp_convert, ocp_convert,
2076         convert_to_void, convert, convert_force, build_type_conversion,
2077         build_expr_type_conversion, type_promotes_to,
2078         perform_qualification_conversions): Use C90 prototyping style.
2079         * decl2.c (grok_array_decl): Use boolean constant.
2080         (delete_sanity): Likewise.
2081         * typeck.c (build_unary_op): Likewise.
2082         * semantics.c (finish_switch_cond): Likewise.
2083         * parser.c (cp_parser_direct_new_declarator): Likewise.
2084         * init.c (build_new): Likewise.
2085
2086 2002-12-27  Mark Mitchell  <mark@codesourcery.com>
2087
2088         * Make-lang.in (po-generated): Remove parse.c.
2089         (CXX_OBJS): Remove parse.o and spew.o.  Add parser.o.
2090         ($(srcdir)/cp/parse.h): Remove target.
2091         ($(srcdir)/cp/parse.c): Likewise.
2092         (gt-cp-parse.h): Likewise.
2093         (gt-cp-parser.h): New target.
2094         (c++.distclean): Do not remove parse.output.
2095         (c++.maintainer-clean): Do not remove parse.c or parse.h.
2096         (cp/spew.o): Remove target.
2097         (cp/lex.o): Adjust dependencies.
2098         (cp/pt.o): Likewise.
2099         (cp/parse.o): Likewise.
2100         (cp/TAGS): Do not mention parse.c.
2101         (cp/parser.o): New target.
2102         * NEWS: Mention the new parser.
2103         * call.c (build_scoped_method_call): Simplify.
2104         (build_method_call): Likewise.
2105         (build_new_function_call): Adjust calls to add_function_candidate
2106         and add_template_candidate.
2107         (build_new_op): Improve handling of erroroneous operands.
2108         (convert_default_arg): Remove circular argument processing.
2109         (name_as_c_string): New function.
2110         (build_new_method_call): Use it.
2111         (perform_implicit_conversion): Use error_operand_p.
2112         * class.c (finish_struct_anon): Use constructor_name_p.
2113         (check_field_decls): Likewise.
2114         (pop_nested_class): Use OVL_NEXT, not OVL_CHAIN.
2115         (resolve_address_of_overloaded_function): Likewise.
2116         (instantiate_type): Tweak pointer-to-member handling.
2117         (get_primary_binfo): Remove incorrect assertion.
2118         * config-lang.in (gtfiles): Add parser.c, remove parse.c.
2119         * cp-tree.h (DEFARG_TOKENS): New macro.
2120         (default_arg): New structure.
2121         (cp_tree_node_structure_enum): Add TS_CP_DEFAULT_ARG.
2122         (lang_tree_node): Add default_arg.
2123         (cp_tree_index): Add CPTI_TYPE_INFO_REF_TYPE.
2124         (type_info_ref_type): New macro.
2125         (saved_scope): Make processing_explicit_instantiation a boolean.
2126         (check_access): New field.
2127         (unparsed_text): Remove.
2128         (language_function): Remove unparsed_inlines.
2129         (error_operand_p): New macro.
2130         (lang_decl): Adjust pending_inline_info.
2131         (DEFARG_POINTER): Remove.
2132         (tag_types): Add typenames.
2133         (lookup_ualified_name): Declare.
2134         (lookup_name_real): Likewise.
2135         (shadow_tag): Adjust prototype.
2136         (get_scope_of_declarator): Declare it.
2137         (process_next_inline): Remove it.
2138         (check_for_missing_semicolon): Likewise.
2139         (maybe_get_template_decl_from_type_decl): Declare it.
2140         (finish_label_stmt): Adjust prototype.
2141         (finish_non_static_data_meber): Declare it.
2142         (finish_pseudo_destructor_call_expr): Rename to ...
2143         (finish_pseudo_destructor_expr): ... this.
2144         (finish_compound_literal): Declare it.
2145         (begin_inline_definitions): Remove it.
2146         (init_spew): Remove.
2147         (peekyylex): Likewise.
2148         (arbitrate_lookup): Likewise.
2149         (frob_opname): Likewise.
2150         (maybe_snarf_defarg): Likewise.
2151         (add_defarg_fn): Likewise.
2152         (do_pending_defargs): Likewise.
2153         (done_pending_defargs): Likewise.
2154         (unprocessed_defarg_fn): Likewise.
2155         (replace_defarg): Likewise.
2156         (end_input): Likewise.
2157         (get_overloaded_fn): Likewise.
2158         * cvt.c (convert_to_reference): Improve error handling.
2159         * decl.c (lookup_name_real): Do not declare it static.
2160         (maybe_push_to_top_level): Set check_access.
2161         (identifier_type_value): Adjust call to lookup_name_real.
2162         (lookup_qualified_name): New method.
2163         (lookup_name_real): Remove special-case parsing code.
2164         (lookup_name-nonclass): Adjust call to lookup_name_real.
2165         (lookup_name_namespace_only): Likewise.
2166         (lookup_name): Likewise.
2167         (check_tag_decl): Return the type declared.
2168         (shadow_tag): Likewise.
2169         (register_dtor_fn): Tweak check_access.
2170         (grokfndecl): Use constructor_name_p.
2171         (get_scope_of_declarator): New function.
2172         (grokdeclarator): Obscure tweaks for slightly different declarator
2173         representations.
2174         (start_method): Return error_mark_node to indicate failure.
2175         (cp_tree_node_structure_enum): Use TS_CP_DEFAULT_ARG for DEFAULT_ARGs.
2176         * decl2.c (constructor_name_full): Simplify.
2177         (constructor_name): Use it.
2178         (build_expr_from_tree): Adjust for changes to do new parser.
2179         (push_scope): Improve robustness.
2180         (validate_nonmember_using_decl): Process declarations, not names.
2181         (do_class_using_decl): Likewise.
2182         (handle_class_head): Do not mess with CLASSTYPE_DECLARED_CLASS
2183         here.
2184         * error.c (dump_expr): Handle IDENTIFIER_NODEs and BASELINKs.
2185         * expr.c (cxx_expand_expr): Handle BASELINKs.
2186         * init.c (member_init_ok_or_else): Issue more errors.
2187         (build_offset_ref): Tweak handling of FUNCTION_DECLs.
2188         * lex.c: Do not include parse.h.
2189         (yypring): Do not declare.
2190         (yylval): Likewise.
2191         (make_reference_declarator): Remove error-generating code.
2192         (rid_to_yy): Remove.
2193         (cxx_init): Do not call init_spew.
2194         (yypring): Remove.
2195         (check_for_missing_semicolon): Remove.
2196         * lex.h (got_scope): Remove.
2197         (got_object): Remove.
2198         * method.c (hack_identifier): Use finish_non_static_data_member.
2199         (implicitly_declare_fn): Adjust use of constructor_name.
2200         * parser.c: New file.
2201         * pt.c (parse.h): Do not include it.
2202         (maybe_get_template_decl_from_template): Do not declare it.
2203         (finish_member_template_decl): Tweak.
2204         (begin_explicit_instantiation): Adjust for
2205         processing_explicit_instantiation being boolean.
2206         (end_explicit_instantiation): Likewise.
2207         (maybe_process_partial_specialization): Tighten specialization
2208         test.
2209         (retrieve_local_specialization): Adjust ue of hash table.
2210         (eq_local_specializations): New function.
2211         (register_local_specialization): Likewise.
2212         (push_template_decl_real): Remove unnecessary test.
2213         (maybe_get_template_decl_from_type_decl): Don't make it static.
2214         (for_each_template_parm_r): Handle TYPEOF_TYPE.
2215         (tsubst_copy): Use retrieive_local_specialization to handle
2216         PARM_DECL.  Adjust handling of CONST_DECLs.  Handle BASELINKs.
2217         Handle COMPONENT_REFs with pseudo-destructor-expressions.
2218         Simplify handling of CALL_EXPR and METHOD_CALL_EXPR.
2219         (tsubst_expr): Pass decls, not names, to do_local_using_decl.
2220         (unify): Tweak handling of CONST_DECLs.
2221         (regenerate_decl_from_template): Use push_nested_class.
2222         (template_for_substitution): New funciton.
2223         (instantiate_decl): Use it.  Register parameters as local
2224         specializations.
2225         * rtti.c (init_rtti_processing): Set type_info_ref_type.
2226         (build_typeid): Use it.
2227         (get_typeid): Likeise.
2228         * search.c (accessible_p): Use check_access, not
2229         flag_access_control.
2230         (adjust_result_of_qualified_name_lookup): Pay attention to the
2231         context_class.
2232         * semantics.c (finish_asm_stmt): Adjust error handling.
2233         (finish_label_stmt): Return the statement.
2234         (finish_non_static_data_member): New function.
2235         (finish_class_expr): Handle BASELINKs.
2236         (finish_call_expr): Handle PSEUDO_DTOR_EXPR.
2237         (finish_object_call_expr): Simplify handling during templates.
2238         (finish_pseudo_destructor_call_expr): Rename to ...
2239         (finish_pseudo_dtor_expr): ... this.
2240         (finish_compound_literal): New function.
2241         (begin_inline_definitions): Remove.
2242         (finish_sizeof): Remove special template handling.
2243         * spew.c: Do not include parse.h.
2244         * tree.c (get_overloaded_fn): Remove.
2245         * typeck.c (build_class_member_access_expr): Handle
2246         PSEUDO_DTOR_EXPR.  Adjust handling of static member functions.
2247         (lookup_destructor): New function.
2248         (finish_class_member_access_expr): Use it.
2249         (convert_arguments): Simplify.
2250         (build_unary_op): Handle BASELINKs.
2251
2252 2002-12-26  Nathan Sidwell  <nathan@codesourcery.com>
2253
2254         PR c++/4803
2255         * decl2.c (mark_used): Defer inline functions.
2256         (finish_file): Merge deferred_fns loops. Check all used
2257         inline functions have a definition.
2258         * method.c (make_thunk): Thunks are not inline.
2259
2260         PR c++/5116, c++/764
2261         * call.c (build_new_op): Make sure template class operands are
2262         instantiated.
2263
2264 2002-12-24  Nathan Sidwell  <nathan@codesourcery.com>
2265
2266         PR C++/7964
2267         * cp-tree.h (resolve_scoped_fn_name): Prototype.
2268         * call.c (resolve_scoped_fn_name): New function. Deal with
2269         more template expansion. Broken out of ...
2270         * parse.y (parse_finish_call_expr): ... here. Call it.
2271         * decl2.c (build_expr_from_tree, CALL_EXPR): Use
2272         resolve_scoped_fn_name and build_call_from_tree.
2273
2274         PR c++/9053
2275         * decl.c (duplicate_decls): Templates may be disambiguated by
2276         return type.
2277
2278         PR c++/8702
2279         * decl2.c (check_classfn): Use lookup_fnfield_1. List all
2280         conversion operators on failure.
2281
2282 2002-12-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2283
2284         Remove traditional C constructs 2/n.
2285         * call.c (tourney, build_field_call, equal_functions, joust,
2286         compare_ics, build_over_call, build_java_interface_fn_ref,
2287         convert_like_real, op_error, build_object_call, resolve_args,
2288         build_vfield_ref, check_dtor_name, build_scoped_method_call,
2289         build_addr_func, build_call, build_method_call, null_ptr_cst_p,
2290         sufficient_parms_p, build_conv, non_reference, strip_top_quals,
2291         standard_conversion, reference_related_p,
2292         reference_compatible_p, convert_class_to_reference,
2293         direct_reference_binding, reference_binding,
2294         ,implicit_conversion, is_complete, promoted_arithmetic_type_p,
2295         add_template_conv_candidate, any_viable, any_strictly_viable,
2296         build_this, splice_viable, print_z_candidates,
2297         build_user_type_conversion, build_new_function_call,
2298         conditional_conversion, build_conditional_expr, build_new_op,
2299         build_op_delete_call, enforce_access, call_builtin_trap,
2300         convert_arg_to_ellipsis, build_x_va_arg, cxx_type_promotes_to,
2301         convert_default_arg, type_passed_as, convert_for_arg_passing,
2302         in_charge_arg_for_name, is_properly_derived_from,
2303         maybe_handle_implicit_object, maybe_handle_ref_bind,
2304         source_type, add_warning, can_convert, can_convert_arg,
2305         perform_implicit_conversion, can_convert_arg_bad,
2306         initialize_reference, add_conv_candidate,
2307         add_template_candidate_real, add_template_candidate): Ansify.
2308
2309 2002-12-22  Nathan Sidwell  <nathan@codesourcery.com>
2310
2311         PR c++/8572
2312         * cp-tree.h (grokoptypename): Add SCOPE parameter.
2313         * decl2.c (grokoptypename): Add SCOPE parameter. tsubst the type
2314         if in a template scope.
2315         * parse.y (unoperator): Return the scope.
2316         (operator_name): Adjust grokoptypename call.
2317
2318 2002-12-22  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2319
2320         * cp-tree.h (make_unbound_class_template): Use tsubst_flags_t.
2321         * decl.c (make_unbound_class_template): Adjust.  Check for tf_error.
2322         * pt.c (tsubst) [OFFSET_TYPE]: Check for tf_error.
2323
2324 2002-12-20  Kazu Hirata  <kazu@cs.umass.edu>
2325
2326         * ChangeLog: Fix a typo.
2327         * class.c: Fix comment typos.
2328         * cp-tree.h: Likewise.
2329
2330 2002-12-18  Jason Merrill  <jason@redhat.com>
2331
2332         Handle anonymous unions at the tree level.
2333         C++ ABI change: Mangle anonymous unions using the name of their
2334         first named field (by depth-first search).  Should not cause
2335         binary compatibility problems, though, as the compiler previously
2336         didn't emit anything for affected unions.
2337         * cp-tree.def (ALIAS_DECL): New tree code.
2338         * decl2.c (build_anon_union_vars): Build ALIAS_DECLs.  Return the
2339         first field, not the largest.
2340         (finish_anon_union): Don't mess with RTL.  Do set DECL_ASSEMBLER_NAME,
2341         push the decl, and write it out at namespace scope.
2342         * decl.c (lookup_name_real): See through an ALIAS_DECL.
2343         (pushdecl): Add namespace bindings for ALIAS_DECLs.
2344         * rtti.c (unemitted_tinfo_decl_p): Don't try to look at the name
2345         of a decl which doesn't have one.
2346         * typeck.c (build_class_member_access_expr): Don't recurse if
2347         we already have the type we want.
2348
2349 2002-12-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2350
2351         PR c++/8099
2352         * friend.c (make_friend_class): Allow partial specialization
2353         when declaration is not a template friend.
2354
2355 2002-12-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2356
2357         PR c++/3663
2358         * pt.c (lookup_template_class): Copy TREE_PRIVATE and
2359         TREE_PROTECTED to created decl nodes.
2360
2361 2002-12-18  Mark Mitchell  <mark@codesourcery.com>
2362
2363         * class.c (build_base_field): Do not set DECL_PACKED on the
2364         FIELD_DECL.
2365
2366 2002-12-18  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2367
2368         * cp-tree.h (struct tree_srcloc): Use location_t.
2369         (SOURCE_LOCUS): New.
2370         (SRCLOC_FILE, SRCLOC_LINE): Adjust.
2371
2372 2002-12-17  Jason Merrill  <jason@redhat.com>
2373
2374         * decl.c (finish_function): Also complain about no return in
2375         templates.
2376         * semantics.c (finish_return_stmt): Also call check_return_expr in
2377         templates.
2378         * typeck.c (check_return_expr): In a template, just remember that we
2379         saw a return.
2380
2381 2002-12-16  Jason Merrill  <jason@redhat.com>
2382
2383         * semantics.c (simplify_aggr_init_exprs_r): Don't change the type
2384         of the CALL_EXPR.
2385
2386         * semantics.c (do_pushlevel): Call pushlevel after adding the
2387         SCOPE_STMT.
2388         (do_poplevel): Call poplevel before adding the SCOPE_STMT.
2389         * parse.y (function_body): Go back to using compstmt.
2390         * decl.c (pushdecl): Skip another level to get to the parms level.
2391
2392         * call.c (build_new_method_call): Use is_dummy_object to determine
2393         whether or not to evaluate the object parameter to a static member
2394         function.
2395
2396 2002-12-14  Jason Merrill  <jason@redhat.com>
2397
2398         * semantics.c (simplify_aggr_init_exprs_r): Also prepend the
2399         return slot for normal functions.  Set CALL_EXPR_HAS_RETURN_SLOT_ADDR.
2400         * tree.c (build_cplus_new): If the type isn't TREE_ADDRESSABLE,
2401         don't bother with an AGGR_INIT_EXPR.
2402         (cp_copy_res_decl_for_inlining): If the type isn't TREE_ADDRESSABLE,
2403         just generate a new decl normally.  Take return slot parm.
2404         * cp-tree.h: Adjust prototype.
2405
2406 2002-12-13  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2407
2408         PR C++/8031
2409         * cvt.c (convert_to_pointer_force): Don't try comparing against
2410         erronous type.
2411
2412 2002-12-13  Geoffrey Keating  <geoffk@apple.com>
2413
2414         * cp-tree.h: Have the multiple-include guards around
2415         the entire file.
2416
2417 2002-12-10  David Edelsohn  <edelsohn@gnu.org>
2418
2419         * cp/spew.c (feed_input): Change limit to last_pos and pos to cur_pos
2420         for SPEW_DEBUG.
2421         (snarf_method): Same.
2422         (snarf_defarg): Same.
2423
2424 2002-12-10  Mark Mitchell  <mark@codesourcery.com>
2425
2426         PR c++/8372
2427         * pt.c (tsubst_copy): Handle destructor names more correctly.
2428
2429 2002-12-10  Matt Austern   <austern@apple.com>
2430
2431         * cp-tree.h: get rid of needs_virtual_reinit bit.
2432
2433 2002-12-09  Mark Mitchell  <mark@codesourcery.com>
2434
2435         * NEWS: Document removal of in-class initialization extension for
2436         static data members of non-arithmetic, non-enumeration type.
2437         * decl.c (check_static_variable_definition): Do not allow that
2438         extension.
2439         * decl2.c (grokfield): Do not call digest_init when processing
2440         templates.
2441
2442 2002-12-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2443
2444         * error.c (dump_expr): Fix format specifier warning.
2445
2446 2002-12-04  Geoffrey Keating  <geoffk@apple.com>
2447
2448         * class.c (finish_struct_1): Correct comment.
2449         * cp-tree.c (DECL_SORTED_FIELDS): Likewise.
2450
2451 2002-12-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2452
2453         PR C++/8799
2454         * error.c (dump_expr): Don't ever try to dump a non-existent
2455         expression.
2456
2457 2002-12-03  Nathan Sidwell  <nathan@codesourcery.com>
2458
2459         Implement covariant returns.
2460         * cp-tree.h (IS_AGGR_TYPE_2): Remove.
2461         (struct lang_decl_flags): Add this_thunk_p flag.
2462         Rename vcall_offset to virtual_offset.
2463         (struct lang_decl): Rename delta to fixed_offset.
2464         (DECL_THIS_THUNK_P, DECL_RESULT_THUNK_P): New #defines.
2465         (SET_DECL_THUNK_P): Add THIS_ADJUSTING arg.
2466         (THUNK_DELTA, THUNK_VCALL_OFFSET): Rename to ...
2467         (THUNK_FIXED_OFFSET, THUNK_VIRTUAL_OFFSET): ... here.
2468         (make_thunk): Add this_adjusting arg.
2469         (finish_thunk): Declare.
2470         (mangle_thunk): Add this_adjusting arg.
2471         * class.c (get_vcall_index): Use base function for lookup.
2472         (update_vtable_entry_for_fn): Generate covariant thunk.
2473         (finish_struct_1): Set DECL_VINDEX to NULL for thunks.
2474         (build_vtbl_initializer): Use base function for lookup.
2475         Finish covariant thunk here. Adjust thunk generation.
2476         * dump.c (cp_dump_tree): Simplify DECL_GLOBAL_[CD]TOR_P handling.
2477         Adjust thunk dumping.
2478         * mangle.c (mangle_call_offset): New function.
2479         (mangle_thunk): Adjust for covariant thunks.
2480         * method.c (make_thunk): Adjust. Do not set name here.
2481         (finish_thunk): New function. Set name here.
2482         (use_thunk): Generate covariant thunks too.
2483         (thunk_adjust): New function.
2484         * search.c (covariant_return_p): Remove. Fold into ...
2485         (check_final_overrider): ... here. Simplify.
2486         * semantics.c (emit_associated_thunks): Walk covariant thunk lists.
2487
2488 2002-12-03  Jason Merrill  <jason@redhat.com>
2489
2490         PR c++/8674
2491         * call.c (build_over_call): Check specifically for TARGET_EXPR
2492         when eliding.
2493
2494         PR c++/8461, c++/8625
2495         * call.c (convert_for_arg_passing): Don't mess with error_mark_node.
2496         (cp_convert_parm_for_inlining): Remove.
2497         * cp-lang.c (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
2498         Remove.
2499         * cp-tree.h (ADDR_IS_INVISIREF): Remove.
2500         * except.c (stabilize_throw_expr): Remove ADDR_IS_INVISIREF code.
2501
2502         * call.c (build_user_type_conversion_1): Don't set ICS_BAD_FLAG on
2503         an ambiguous conversion.
2504
2505 2002-12-03  Mark Mitchell  <mark@codesourcery.com>
2506
2507         PR c++/8688
2508         * decl.c (reshape_init): Handle erroneous initializers.
2509
2510 2002-12-02  Mark Mitchell  <mark@codesourcery.com>
2511
2512         PR c++/8720
2513         * spew.c (remove_last_token): Make sure that last_chunk is set
2514         correctly.
2515
2516         PR c++/8615
2517         * error.c (dump_expr): Handle character constants with
2518         TREE_OVERFLOW set.
2519
2520 2002-12-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2521
2522         DR 180
2523         * decl.c (grokdeclarator): Require class-key for all friend class.
2524         Output the correct type and context in the error message.
2525
2526 2002-12-01  Mark Mitchell  <mark@codesourcery.com>
2527
2528         PR c++/5919
2529         * pt.c (unify): Use variably_modified_type_p to test validity of
2530         template argument types.
2531
2532         PR c++/8727
2533         * cp-tree.h (lang_type_class): Add typeinfo_var.
2534         (CLASSTYPE_TYPEINFO_VAR): New macro.
2535         * rtti.c (get_tinfo_decl): Use it.
2536
2537         PR c++/8663
2538         * init.c (expand_member_init): Always get the main variant of a
2539         base class.
2540
2541 2002-12-01  Mark Mitchell  <mark@codesourcery.com>
2542
2543         PR c++/8332
2544         PR c++/8493
2545         * decl.c (cxx_init_decl_processing): Use size_type_node, not
2546         c_size_type_node.
2547         * decl2.c (coerce_new_type): Likewise.
2548         * except.c (do_allocate_exception): Likewise.
2549
2550 2002-11-30  Zack Weinberg  <zack@codesourcery.com>
2551
2552         * call.c, class.c, cp-lang.c, cvt.c, cxxfilt.c, decl.c, decl2.c,
2553         dump.c, error.c, except.c, expr.c, friend.c, g++spec.c, init.c,
2554         lex.c, mangle.c, method.c, optimize.c, parse.y, pt.c, ptree.c,
2555         repo.c, rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
2556         typeck2.c: Include coretypes.h and tm.h.
2557         * Make-lang.in: Update dependencies.
2558
2559 2002-11-30  Mark Mitchell  <mark@codesourcery.com>
2560
2561         PR c++/8227
2562         * decl.c (layout_var_decl): Deal gracefully with erroneous types.
2563         (check_initializer): Validate the type of the initialized
2564         variable, even if the initializer is absent.
2565         * typeck.c (cp_type_quals): Deal gracefully with erroneous types.
2566
2567         PR c++/8214
2568         * typeck.c (convert_for_assignment): Do not use
2569         decl_constant_value on the operand.
2570
2571         PR c++/8511
2572         * pt.c (instantiate_decl): Handle template friends defined outside
2573         of the class correctly.
2574
2575 2002-11-29  Joe Buck <jbuck@synopsys.com>
2576
2577         * parse.y (class_head_defn): Set CLASSTYPE_DECLARED_CLASS for
2578         anonymous structs.
2579
2580 2002-11-29  Mark Mitchell  <mark@codesourcery.com>
2581
2582         * class.c (walk_subobject_offsets): Recur on binfos as well as on
2583         types.
2584         (layout_nonempty_base_or_field): Pass it a binfo when processing a
2585         base class.
2586         (layout_empty_base): Likewise.
2587         (build_base_field): Likewise.
2588
2589 2002-11-27  Mark Mitchell  <mark@codesourcery.com>
2590
2591         * class.c (build_base_field): Make sure we get the canonical base
2592         when descending through primary bases.
2593
2594 2002-11-26  Geoffrey Keating  <geoffk@apple.com>
2595
2596         * decl.c (check_initializer): Don't error on initialisation of
2597         a scalar with a brace-enclosed expression.
2598
2599 2002-11-26  Nathan Sidwell  <nathan@codesourcery.com>
2600
2601         * cp-tree.h (DECL_LANG_FLAG_4): Document more uses.
2602         (template_parms_equal): Remove prototype.
2603         * typeck.c (buuld_indirect_ref): Reformat.
2604
2605 2002-11-25  Jason Merrill  <jason@redhat.com>
2606
2607         * init.c (build_vec_init): Use a FOR_STMT instead of an IF_STMT
2608         and a DO_STMT.
2609
2610 2002-11-25  Mark Mitchell  <mark@codesourcery.com>
2611
2612         * tree.c (cp_build_qualified_type_real): Correct handling of
2613         array types.
2614         * class.c (walk_subobject_offsets): Fix thinko.
2615         (build_base_field): Record offsets of empty bases in primary
2616         virtual bases.
2617         (layout_class_type): Record offsets of empty bases in fields.
2618
2619         * search.c (is_subobject_of_p_1): Fix thinko.
2620         (lookup_field_queue_p): Likewise.
2621
2622 2002-11-24  Mark Mitchell  <mark@codesourcery.com>
2623
2624         * class.c (layout_class_type): Reuse tail padding when laying out
2625         virtual bases.
2626
2627 2002-11-22  Mark Mitchell  <mark@codesourcery.com>
2628
2629         * rtti.c (qualifier_flags): Fix thinko.
2630
2631 2002-11-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2632
2633         Remove traditional C constructs 1/n.
2634         * cp-tree.h (init_method, set_mangled_name_for_decl,
2635         build_opfncall, hack_identifier, make_thunk, use_thunk,
2636         synthesize_method, implicitly_declare_fn,
2637         skip_artificial_parms_for, optimize_function, calls_setjmp_p,
2638         maybe_clone_body): Remove use of PARAMS.
2639
2640         * method.c (do_build_assign_ref, do_build_copy_constructor,
2641         synthesize_exception_spec, locate_dtor, locate_ctor, locate_copy):
2642         Likewise.
2643         (synthesize_method): Use 'bool' type and constants instead of
2644         'int'.
2645         (locate_copy): Likewise.
2646         (implicitly_declare_fn): Likewise.
2647
2648         * optimize.c (calls_setjmp_r, update_cloned_parm, dump_function):
2649         Remove old-style declaration.
2650         (maybe_clone_body): Use 'bool' type and constants.
2651
2652 2002-11-21  Glen Nakamura  <glen@imodulo.com>
2653
2654         PR c++/8342
2655         * typeck.c (get_member_function_from_ptrfunc): Make sure that a
2656         SAVE_EXPR for instance_ptr doesn't get evaluated first inside one
2657         of the branches of a COND_EXPR.
2658
2659 2002-11-19  Mark Mitchell  <mark@codesourcery.com>
2660
2661         * pt.c (for_each_template_parm): Free allocated memory.
2662         * search.c (is_subobject_of_p_1): New function.
2663         (is_subobject_of_p): Avoid walking virtual bases multiple times.
2664
2665 2002-11-19  Jason Thorpe  <thorpej@wasabisystems.com>
2666
2667         * g++spec.c (lang_specific_spec_functions): New.
2668
2669 2002-11-15  Kazu Hirata  <kazu@cs.umass.edu>
2670
2671         * ChangeLog: Follow spelling conventions.
2672         * class.c: Likewise.
2673         * decl2.c: Likewise.
2674
2675 2002-11-14  Zack Weinberg  <zack@codesourcery.com>
2676
2677         * search.c (dfs_push_decls): Do not try to reorder elements
2678         3..n of method_vec if method_vec has only two elements.
2679         Reverse order of two tests to avoid accessing unallocated
2680         memory.
2681
2682 2002-11-14  Mark Mitchell  <mark@codesourcery.com>
2683
2684         * class.c (dfs_find_final_overrider): Adjust so that the most
2685         derived object is a binfo, rather than a class type.
2686         (find_final_overrider): Likewise.
2687         (add_vcall_offset_vtbl_entries_1): Simplify accordingly.
2688         (add_vcall_offset): Likewise.
2689
2690 2002-11-09  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2691
2692         PR c++/8389
2693         * pt.c (instantiate_template): Push class scope for member
2694         functions.
2695         (get_mostly_instantiated_function_type): Likewise.  Don't call
2696         tsubst on context.  Remove CONTEXTP and TPARMSP parameters.
2697         * cp-tree.h (get_mostly_instantiated_function_type): Adjust.
2698         * mangle.c (write_encoding, write_unqualified_name): Adjust.
2699
2700 2002-11-07  Mark Mitchell  <mark@codesourcery.com>
2701
2702         * class.c (add_vcall_offset_vtbl_entries_1): Correct ordering of
2703         vcall offfsets.  Split out ...
2704         (add_vcall_offset): ... new function.
2705
2706         PR c++/8338
2707         * pt.c (for_each_template_parm): Add htab parameter.
2708         (process_partial_specialization): Adjust call.
2709         (push_template_decl_real): Likewise.
2710         (pair_fn_data): Add visited.
2711         (for_each_template_parm_r): Avoid walking duplicates more than
2712         once.
2713         (uses_template_parms): Adjust call to for_each_template_parm.
2714
2715 2002-11-07  Mark Mitchell  <mark@codesourcery.com>
2716
2717         * class.c (add_implicitly_declared_members): Put implicitly
2718         declared functions at the end of TYPE_METHODs when -fabi-version
2719         is at least 2.
2720
2721 2002-11-05  Geoffrey Keating  <geoffk@apple.com>
2722
2723         * decl2.c (finish_file): Correct spelling.
2724
2725 2002-11-03  Mark Mitchell  <mark@codesourcery.com>
2726
2727         * call.c (build_special_member_call): Do not try to lookup VTTs by
2728         name.
2729         * class.c (vtbl_init_data): Add generate_vcall_entries.
2730         (get_vtable_decl): Do not look up virtual tables by name.
2731         (copy_virtuals): Do not use BV_USE_VCALL_INDEX_P.
2732         (set_primary_base): Do not set CLASSTYPE_RTTI.
2733         (determine_primary_base): Likewise.
2734         (get_matching_virtual): Remove.
2735         (get_vcall_index): New function.
2736         (update_vtable_entry_for_fn): Do not try to use virtual thunks
2737         when they are not required.  Assign vcall indices at this point.
2738         (finish_struct_1): Do not set CLASSTYPE_NEEDS_VIRTUAL_REINIT.
2739         Do update dynamic_classes.
2740         (build_vtt): Do not add VTTs to the symbol table.
2741         (build_ctor_vtbl_group): Likewise.
2742         (build_vtbl_initializer): Simplify handling of vcall indices.
2743         (build_vcall_offset_vtbl_entries): Pretend to build vcall offsets
2744         for the most derived class.
2745         (add_vcall_offset_vtbl_entries_1): But do not actually add them to
2746         the vtable.
2747         * cp-tree.h (dynamic_classes): New macro.
2748         (lang_type_class): Remove rtti.  Add vtables.  Add vcall_indices.
2749         (CLASSTYPE_RTTI): Remove.
2750         (CLASSTYPE_NEEDS_VIRTUAL_REINIT): Remove.
2751         (CLASSTYPE_VCALL_INDICES): New macro.
2752         (CLASSTYPE_VTABLES): Likewise.
2753         (BV_USE_VCALL_INDEX_P): Remove.
2754         (build_vtable_path): Remove.
2755         * decl2.c (finish_vtable_vardecl): Remove.
2756         (key_method): Remove #if 0'd code.
2757         (finish_vtable_vardecl): Rename to ...
2758         (maybe_emit_vtables): ... this.
2759         (finish_file): Use it.
2760         * search.c (look_for_overrides_here): Update comment.
2761
2762 2002-11-01  Zack Weinberg  <zack@codesourcery.com>
2763
2764         PR c/7353 redux
2765         * decl2.c (grokfield): Reject TYPE_DECLs with initializers.
2766
2767 2002-10-30  Jason Merrill  <jason@redhat.com>
2768
2769         PR c++/8186
2770         * cp-tree.h (ADDR_IS_INVISIREF): New macro.
2771         * call.c (convert_for_arg_passing): Set it.
2772         * except.c (stabilize_throw_expr): Recurse for such an arg.
2773
2774 2002-10-31  Mark Mitchell  <mark@codesourcery.com>
2775
2776         * cp-tree.h (lang_decl_flags): Remove init_priority.
2777         (lang_decl): Add delta.
2778         (GLOBAL_INIT_PRIORITY): Remove.
2779         (THUNK_DELTA): Revise definition.
2780         * decl2.c (start_objects): Don't set GLOBAL_INIT_PRIORITY.
2781         * dump.c (cp_dump_tree): Don't dump it.
2782
2783 2002-10-30  Mark Mitchell  <mark@codesourcery.com>
2784
2785         PR c++/8160
2786         * typeck2.c (process_init_constructor): Call complete_array_type.
2787
2788         PR c++/8149
2789         * decl.c (make_typename_type): Issue errors about invalid results.
2790
2791 2002-10-30  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2792
2793         Core issue 287, PR c++/7639
2794         * cp-tree.h (lang_type_class): Add decl_list field.
2795         (CLASSTYPE_DECL_LIST): New macro.
2796         (maybe_add_class_template_decl_list): Add declaration.
2797         * class.c (duplicate_tag_error): Initialize CLASSTYPE_DECL_LIST.
2798         (unreverse_member_declarations): Reverse CLASSTYPE_DECL_LIST.
2799         (maybe_add_class_template_decl_list): New function.
2800         (add_implicitly_declared_members): Use it.
2801         * decl.c (maybe_process_template_type_declaration): Likewise.
2802         (pushtag): Likewise.
2803         * friend.c (add_friend): Likewise.
2804         (make_friend_class): Likewise.
2805         * semantics.c (finish_member_declaration): Likewise.
2806         (begin_class_definition): Initialize CLASSTYPE_DECL_LIST.
2807         * pt.c (instantiate_class_template): Use CLASSTYPE_DECL_LIST
2808         to process members and friends in the order of declaration.
2809
2810 2002-10-29  Mark Mitchell  <mark@codesourcery.com>
2811
2812         PR c++/8287
2813         * decl.c (finish_destructor_body): Create the label to jump to
2814         when returning from a destructor here.
2815         (finish_function_body): Rather than here.
2816
2817 2002-10-25  Zack Weinberg  <zack@codesourcery.com>
2818
2819         PR c++/7266
2820         * decl.c (grokdeclarator): Check that TREE_OPERAND 0 of a
2821         SCOPE_REF is not null before dereferencing it.
2822
2823 2002-10-25  Mark Mitchell  <mark@codesourcery.com>
2824
2825         * call.c (build_over_call): Use DECL_CONTEXT, not
2826         DECL_VIRTUAL_CONTEXT.
2827         * class.c (modify_vtable_entry): Don't mess with
2828         DECL_VIRTUAL_CONTEXT.
2829         (set_vindex): Remove.
2830         (set_primary_base): Remove vfuns_p parameter.
2831         (determine_primary_base): Likewise.
2832         (modify_all_vtables): Likewise.
2833         (layout_class_type): Likewise.  Adjust calls to other functions
2834         accordingly.
2835         (finish_struct_1): Adjust calls to modified functions.  Set
2836         DECL_VINDEX here.
2837         * cp-tree.h (lang_type_class): Remove vsize.
2838         (CLASSTYPE_VSIZE): Remove.
2839         (lang_decl): Remove thunks.
2840         (DECL_THUNKS): Adjust.
2841         (DECL_VIRTUAL_CONTEXT): Remove.
2842         (duplicate_decls): Don't copy it.
2843         * pt.c (build_template_decl): Don't set it.
2844         (tsubst_decl): Likewise.
2845         * typeck.c (expand_ptrmemfunc_cst): Don't use it.
2846
2847         * class.c (build_vtbl_initializer): Don't use build_vtable_entry.
2848         (build_vtable_entry): Remove.
2849         * cp-tree.h (BINFO_VIRTUALS): Expand documentation.
2850         (lang_decl): Add thunks.
2851         (DECL_THUNKS): New macro.
2852         * decl.c (duplicate_decls): Copy it.
2853         * method.c (make_thunk): Simplify, and add thunks to DECL_THUNKS.
2854         * semantics.c (emit_associated_thunks): Simplify.
2855
2856 2002-10-24  David Edelsohn  <edelsohn@gnu.org>
2857
2858         PR c++/7228
2859         * cp-tree.h (CLASSTYPE_READONLY_FIELDS_NEED_INIT): Check that
2860         lang_type structure exists before accessing field.
2861         (SET_CLASSTYPE_READONLY_FIELDS_NEED_INIT): New macro.
2862         (CLASSTYPE_REF_FIELDS_NEED_INIT): Similar.
2863         (SET_CLASSTYPE_REF_FIELDS_NEED_INIT): New macro.
2864         * class.c (check_field_decls): Use new macros.
2865         * typeck2.c (process_init_constructor): Remove redundant check for
2866         existence of lang_type structure.
2867
2868 2002-10-24  Mark Mitchell  <mark@codesourcery.com>
2869
2870         * class.c (end_of_base): New method.
2871         (end_of_class): Use it.  Check indirect virtual bases.
2872
2873         * class.c (check_field_decls): Fix typo.
2874
2875 2002-10-23  Mark Mitchell  <mark@codesourcery.com>
2876
2877         PR c++/8067
2878         * decl.c (maybe_inject_for_scope_var): Ignore __FUNCTION__ and
2879         related variables.
2880
2881         PR c++/7679
2882         * spew.c (next_token): Do not return an endless stream of
2883         END_OF_SAVED_INPUT tokens.
2884         (snarf_method): Add three END_OF_SAVED_INPUT tokens to the end of
2885         the cached token stream.
2886         (snarf_defarg): Likewise.
2887
2888 2002-10-23  Zack Weinberg  <zack@codesourcery.com>
2889
2890         * cp-lang.c (cp_var_mod_type_p): New: C++ hook for
2891         variably_modified_type_p.
2892         * cp-tree.h: Remove prototype of variably_modified_type_p.
2893         * tree.c (variably_modified_type_p): Remove; now implemented
2894         in language-independent code.
2895
2896 2002-10-22  Mark Mitchell  <mark@codesourcery.com>
2897
2898         PR c++/6579
2899         * spew.c (snarf_parenthesized_expression): New function.
2900         (snarf_block): Use it.
2901
2902 2002-10-22  Richard Henderson  <rth@redhat.com>
2903
2904         * method.c (use_thunk): Always compute vcall_value; assert that
2905         it is not zero.  Use can_output_mi_thunk; use output_mi_thunk
2906         for vcall thunks as well.
2907
2908 2002-10-21  Mark Mitchell  <mark@codesourcery.com>
2909
2910         * class.c (empty_base_at_nonzero_offset_p): New function.
2911         (layout_nonempty_base_or_field): Do not check for conflicts when
2912         laying out a virtual base using the GCC 3.2 ABI.
2913         (build_base_field): Correct checking for presence of empty classes
2914         at nonzero offsets when clearing CLASSTYPE_NEARLY_EMPTY_P.
2915
2916         * class.c (include_empty_classes): Use normalize_rli.
2917         (layout_class_type): Likewise.
2918
2919         * decl.c (reshape_init): Tweak handling of character arrays.
2920
2921         PR c++/8218
2922         * cp-tree.h (lang_type_class): Add contains_empty_class_p.
2923         (CLASSTYPE_CONTAINS_EMPTY_CLASS_P): New macro.
2924         * class.c (check_bases): Update CLASSTYPE_CONTAINS_EMPTY_CLASS_P.
2925         (check_field_decls): Likewise.
2926         (layout_class_type): Likewise.
2927         (finish_struct_1): Initialize it.
2928         (walk_subobject_offsets): Use it to prune searches.
2929
2930 2002-10-20  Mark Mitchell  <mark@codesourcery.com>
2931
2932         * method.c (use_thunk): Compute the vcall index as a HOST_WIDE_INT.
2933         * optimize.c (optimize_function): Replace ASM_OUTPUT_MI_THUNK with
2934         TARGET_ASM_OUTPUT_MI_THUNK in comments.
2935
2936 2002-10-18  Zack Weinberg  <zack@codesourcery.com>
2937
2938         * decl.c (start_decl): Point users of the old initialized-
2939         typedef extension at __typeof__.
2940
2941 2002-10-18  Mark Mitchell  <mark@codesourcery.com>
2942
2943         * Make-lang.in (method.o): Depend on TARGET_H.
2944         * method.c (target.h): Include it.
2945         (use_thunk): Use target hooks.  Use vcall thunks, if available.
2946
2947 2002-10-18  Mark Mitchell  <mark@codesourcery.com>
2948
2949         * class.c (base_derived_from): Make sure return value is a bool.
2950
2951 2002-10-18  Mark Mitchell  <mark@codesourcery.com>
2952
2953         * class.c (find_final_overrider_data_s): Remove overriding_fn and
2954         overriding_base.
2955         (dfs_base_derived_from): New function.
2956         (base_derived_from): Likewise.
2957         (dfs_find_final_overrider): Use base_derived_from.
2958         (find_final_overrider): Adjust.
2959
2960 2002-10-18  Jason Merrill  <jason@redhat.com>
2961
2962         PR c++/8080
2963         * semantics.c (finish_for_cond, finish_while_cond): Don't mess
2964         with condition decls in a template.
2965
2966 2002-10-17  Nathan Sidwell  <nathan@codesourcery.com>
2967
2968         * class.c (add_method): Compare template parms too.
2969
2970 2002-10-17  Mark Mitchell  <mark@codesourcery.com>
2971
2972         PR c++/7584
2973         * class.c (handle_using_decl): Allow the declaration used to be
2974         from an ambiguous base.
2975
2976         * pt.c (convert_template_argument): Revert this change:
2977                 2002-10-16  Mark Mitchell  <mark@codesourcery.com>
2978                 * pt.c (convert_template_argument): Do not fold non-type
2979                 template rguments when inside a template.
2980
2981         * init.c (expand_default_init): Handle brace-enclosed initializers
2982         correctly.
2983
2984 2002-10-16  Mark Mitchell  <mark@codesourcery.com>
2985
2986         * mangle.c (write_expression): Correct handling of enumeration
2987         constants.
2988         (write_template_arg): Likewise.
2989         * pt.c (convert_template_argument): Do not fold non-type template
2990         arguments when inside a template.
2991
2992         PR c++/7478
2993         * cvt.c (convert_to_reference): Allow references as the incoming
2994         type.
2995
2996 2002-10-16  Mark Mitchell  <mark@codesourcery.com>
2997
2998         PR c++/7524
2999         * method.c (do_build_assign_ref): Use cp_build_qualified_type, not
3000         build_qualified_type.
3001
3002 2002-10-15  Richard Henderson  <rth@redhat.com>
3003
3004         * error.c (dump_expr): Use real_to_decimal directly, and with
3005         the new arguments.
3006
3007 2002-10-15  Mark Mitchell  <mark@codesourcery.com>
3008
3009         * decl.c (reshape_init): Fix typo.
3010
3011         * cp-tree.h (operator_name_info_t): Add arity.
3012         * lex.c (init_operators): Initialize it.
3013         * mangle.c (write_conversion_operator_name): New function.
3014         (write_unqualified_name): Use it.
3015         (write_template_args): Accept template arguments as a TREE_LIST.
3016         (write_expression): Adjust handling of qualified names to match
3017         specification.
3018
3019 2002-10-15  Jason Merrill  <jason@redhat.com>
3020
3021         * call.c (call_builtin_trap): New fn.
3022         (convert_arg_to_ellipsis): Use it.  Downgrade error to warning.
3023         (build_call): Don't set current_function_returns_abnormally outside
3024         a function.
3025
3026 2002-10-14  Mark Mitchell  <mark@codesourcery.com>
3027
3028         * class.c (check_field_decls): Remove empty_p parameter.  Instead,
3029         clear CLASSTYPE_EMPTY_P.
3030         (build_base_field): Likewise.
3031         (build_base_fields): Likewise.
3032         (check_bases_and_members): Likewise.
3033         (create_vtbl_ptr): Likewise.
3034         (layout_class_type): Likewise.  Ensure that empty classes have
3035         size zero when used as base classes in the 3.2 ABI.
3036         (finish_struct_1): Initialize CLASSTYPE_EMPTY_P and
3037         CLASSTYPE_NEARLY_EMPTY_P.  Adjust calls to avoid passing empty_p
3038         parameter.
3039         (is_empty_class): Correct definition when using post-3.2 ABI.
3040         * cp-tree.h (lang_type_class): Add empty_p.
3041         (CLASSTYPE_EMPTY_P): New macro.
3042
3043 2002-10-12  Nathan Sidwell  <nathan@codesourcery.com>
3044
3045         * init.c (build_delete): Do not apply save_expr for arrays.
3046         (build_vec_delete): Likewise.
3047
3048 2002-10-14  Mark Mitchell  <mark@codesourcery.com>
3049
3050         * decl.c (layout_var_decl): Call layout_decl even for variables
3051         whose type is an array with unspecified bounds.
3052
3053         PR c++/7176
3054         * lex.c (do_identifier): Add another option for the parsing
3055         parameter.
3056         * parse.y (do_id): Use it.
3057
3058 2002-10-11  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3059
3060         PRs C++/6803, C++/7721 and C++/7803
3061         * decl.c (grokdeclarator): Gracefully handle template-name as
3062         decl-specifier.
3063
3064 2002-10-11  Jason Molenda  <jmolenda@apple.com>
3065
3066         * init.c (build_field_list): Provide uses_unions_p with a default
3067         value.
3068
3069 2002-10-11  Mark Mitchell  <mark@codesourcery.com>
3070
3071         PR c++/5661
3072         * cp-tree.h (variably_modified_type_p): New function.
3073         (grokdeclarator) Tighten check for variably modified types as
3074         fields.
3075         * pt.c (convert_template_argument): Do not allow variably modified
3076         types as template arguments.
3077         * tree.c (variably_modified_type_p): New function.
3078
3079         * NEWS: Document removal of "new X = ..." extension.
3080         * class.c (initialize_array): Set TREE_HAS_CONSTRUCTOR on
3081         brace-enclosed initializers.
3082         * cp-tree.h (CP_AGGREGATE_TYPE_P): New macro.
3083         (initialize_local_var): Remove declaration.
3084         (expand_static_init): Likewise.
3085         * decl.c (next_initializable_field): New function.
3086         (reshape_init): Likewise.
3087         (check_initializer): Use them.  Build dynamic initializer for
3088         aggregates here too.
3089         (initialize_local_var): Simplify, and incorporate cleanup
3090         insertion code as well.
3091         (destroy_local_var): Remove.
3092         (cp_finish_decl): Tidy.
3093         (expand_static_init): Fold checks for whether or not a variable
3094         needs initialization into this function.  Simplify.
3095         * decl2.c (do_static_initialization): Simplify.
3096         * init.c (build_init): Do not set TREE_SIDE_EFFECTS when it will
3097         be done for us automatically.
3098         (expand_default_init): Handle brace-enclosed initializers
3099         correctly.
3100         (expand_aggr_init_1): Remove RTL-generation code.
3101         (build_vec_init): Remove "new X = ..." support.
3102         * parse.y (new_initializer): Likewise.
3103         * rtti.c (get_pseudo_ti_init): Set TREE_HAS_CONSTRUCTOR on
3104         brace-enclosed initializer.
3105         (create_pseudo_type_info): Likewise.
3106         * typeck2.c (store_init_value): Don't try to handle digest_init
3107         being called more than once.
3108         (digest_init): Tidy handling of brace-enclosed initializers.
3109
3110 2002-10-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3111
3112         * decl.c (typename_hash): Use htab_hash_pointer.
3113
3114 2002-10-10  Jim Wilson  <wilson@redhat.com>
3115
3116         * decl.c (duplicate_decls): Don't call decl_attributes.
3117
3118 2002-10-09  Zack Weinberg  <zack@codesourcery.com>
3119
3120         PR c/7353
3121         * decl.c (start_decl): Unconditionally issue error for
3122         'typedef foo = bar'.
3123         (cp_finish_decl): Remove special case for TYPE_DECL with initializer.
3124         (grokdeclarator): Remove redundant error for 'typedef foo = bar'.
3125
3126 2002-10-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3127
3128         * decl2.c (prune_vtable_vardecl): Delete unused function.
3129
3130 2002-10-03  Mark Mitchell  <mark@codesourcery.com>
3131
3132         PR c++/7754
3133         * decl2.c (finish_anon_union): Do not expand anonymous unions when
3134         procesing template functions.
3135         * pt.c (tsubst_decl, case VAR_DECL): Try to complete the variable
3136         type. Call layout_decl.
3137         (tsubst_expr, case DECL_STMT): Handle anonymous unions.
3138
3139 2002-10-07  Richard Henderson  <rth@redhat.com>
3140
3141         * decl2.c, pt.c: Revert c++/7754 fix.
3142
3143 2002-10-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3144
3145         PR c++/7804
3146         * error.c (dump_expr) [REAL_CST]: Output in decimal format.
3147
3148 2002-10-03  Mark Mitchell  <mark@codesourcery.com>
3149
3150         PR c++/7931
3151         * pt.c (for_each_template_parm_r): Handle BASELINKs.
3152
3153         PR c++/7754
3154         * decl2.c (finish_anon_union): Do not expand anonymous unions when
3155         procesing template functions.
3156         * pt.c (tsubst_decl, case VAR_DECL): Try to complete the variable
3157         type. Call layout_decl.
3158         (tsubst_expr, case DECL_STMT): Handle anonymous unions.
3159
3160 2002-10-03  Mark Mitchell  <mark@codesourcery.com>
3161
3162         PR c++/8006
3163         * mangle.c (CLASSTYPE_TEMPLATE_ID_P): Handle instances of template
3164         template parameters.
3165         (globals): Add entity and need_abi_warning.
3166         (decl_is_template_id): Use TYPE_TEMPLATE_INFO, not
3167         CLASSTYPE_TEMPLATE_INFO.
3168         (is_std_substitution): Use CLASSTYPE_TI_TEMPLATE, not
3169         TYPE_TI_TEMPLATE.
3170         (write_prefix): Handle typename types correctly.
3171         (write_template_prefix): Handle template template parameters
3172         correctly.
3173         (start_mangling): Add entity parameter.
3174         (finish_mangling): Warn about names whose mangling will change.
3175         (mangle_decl_string): Adjust.
3176         (mangle_type_string): Likewise.
3177         (mangle_special_for_type): Likewise.
3178         (mangle_ctor_vtbl_for_type): Likewise.
3179         (mangle_thunk): Likewise.
3180         (mangle_guard_variable): Likewise.
3181         (mangle_ref_init_variable): Likewise.
3182
3183 2002-10-02  Mark Mitchell  <mark@codesourcery.com>
3184
3185         PR c++/7188.
3186         * cp-tree.def (CTOR_INITIALIZER): Use one slot, not two.
3187         * cp-tree.h (emit_base_init): Rename to ....
3188         (emit_mem_initializers): ... this.
3189         (expand_member_init): Change prototype.
3190         * init.c (perform_member_init): Compute explicit, rather than
3191         requiring it as a parameter.
3192         (sort_member_init): Rename to ...
3193         (sort_mem_initializers): ... this.  Process bases and data members
3194         together.
3195         (sort_base_init): Remove.
3196         (emit_base_init): Rename to ...
3197         (emit_mem_initializers): ... this.
3198         (expand_aggr_vbase_init_1): Remove.
3199         (construct_virtual_bases): Rename to ...
3200         (construct_virtual_base): ... this.
3201         (expand_member_init): Rework handling of base initializers.
3202         * method.c (do_build_copy_constructor): Use
3203         finish_mem_initializers.
3204         * parse.y (member_init): Adjust calls to expand_member_init.
3205         * pt.c (tsubst_expr): Simplify CTOR_INITIALIZER case.
3206         (tsubst_initializer_list): Use expand_member_init.
3207         * semantics.c (finish_mem_intiailizers): Simplify.
3208
3209 2002-10-02  Matt Austern  <austern@apple.com>
3210         * decl.c (walk_vtables_r): Fixed typo that caused result to
3211         never get a nonzero value.
3212
3213 2002-10-02  Roger Sayle  <roger@eyesopen.com>
3214
3215         PR optimization/6627
3216         * cp-tree.h (enum ptrmemfunc_vbit_where_t): Delete definition
3217         from here, and move it to tree.h.
3218         * decl.c (cxx_init_decl_processing): If storing the vbit
3219         in function pointers, ensure that force_align_functions_log
3220         is atleast one.
3221
3222 2002-10-02  Matt Austern  <austern@apple.com>
3223
3224         * class.c (check_field_decls): Changed warning about const member
3225         variables so that it doesn't get issued for a class aggregate.
3226
3227 2002-10-01  Mark Mitchell  <mark@codesourcery.com>
3228
3229         * decl.c (cp_finish_decl): Make sure array types are laid out,
3230         even if the array bounds are unknown.
3231
3232 2002-10-01  Steve Ellcey  <sje@cup.hp.com>
3233
3234         * class.c (build_vtbl_initializer): Change build_c_cast
3235         to build1.
3236
3237 2002-10-01  Mark Mitchell  <mark@codesourcery.com>
3238
3239         * decl.c (cp_finish_decl): Make sure array types are laid out,
3240         even if the array bounds are unknown.
3241
3242         * decl.c (cp_finish_decl): Correct check for dynamic
3243         initialization of thread-local storage.
3244
3245 2002-09-30  Nathan Sidwell  <nathan@codesourcery.com>
3246
3247         * tree.c (really_overloaded_fn): TEMPLATE_ID_EXPRs are also
3248         overloaded.
3249
3250 2002-09-30  Steve Ellcey  <sje@cup.hp.com>
3251
3252         * class.c (build_vtbl_initializer): Add cast.
3253         (add_vcall_offset_vtbl_entries_1):
3254         Use TARGET_VTABLE_DATA_ENTRY_DISTANCE for offset.
3255
3256 2002-09-30  Mark Mitchell  <mark@codesourcery.com>
3257
3258         * class.c (walk_subobject_offsets): Correct the calculation of
3259         offsets for virtual bases.  Correct the counting of array
3260         elements.
3261         (layout_nonempty_base_or_field): Simplify.  Correct the
3262         calculation of offsets to be propagated through the binfo
3263         hierarchy.
3264         (build_base_field): Avoid creating a FIELD_DECL for empty bases.
3265         Add the FIELD_DECL to TYPE_FIELDS.
3266         (build_base_fields): Adjust accordingly.
3267         (layout_virtual_bases): Use build_base_field.
3268         (end_of_class): Return a tree, not an integer.
3269         (warn_about_ambiguous_direct_bases): Rename to ...
3270         (warn_about_ambiguous_bases): ... this.
3271         (include_empty_classes): New function.
3272         (layout_class_type): Create an alternative version of the type to
3273         be used when as a base class type.  Do not call
3274         finish_record_layout until we are done laying out the class.
3275         * cp-tree.h (lang_type_class): Remove size, size_unit.  Add
3276         as_base.
3277         (CLASSTYPE_SIZE): Reimplement.
3278         (CLASSTYPE_SIZE_UNIT): Likewise.
3279         (CLASSTYPE_ALIGN): Likweise.
3280         (CLASSTYPE_USER_ALIGN): Likewise.
3281         (CLASSTYPE_AS_BASE): New macro.
3282         (DECL_INITIALIZED_P): Likewise.
3283         (extract_init): Remove prototype.
3284         (build_forced_zero_init): Rename to ...
3285         (build_zero_init): ... this.
3286         (force_store_init_value): Remove.
3287         * decl.c (obscure_complex_init): Remove.
3288         (duplicate_decls): Copy DECL_INITIALIZED_P.
3289         (check_initializer): Do not leave junk in DECL_INITIAL.
3290         (cp_finish_decl): Handle zero-initialization of entities with
3291         static storage duration.
3292         * expr.c (extract_init): Remove.
3293         * init.c (build_forced_zero_init): Remove.
3294         (build_zero_init): New function.
3295         (build_default_init): Use it.
3296         (build_field_list): Skip FIELD_DECLs for base subobjects.
3297         (push_base_cleanups): Likewise.
3298         * method.c (do_build_assign_ref): Likewise.
3299         (synthesize_exception_spec): Likewise.
3300         * pt.c (tsubst_decl): Clear DECL_INITIALIZED_P.
3301         (regenerate_decl_from_template): To not set DECL_INITIAL for a
3302         static data member whose initialization took place in its class.
3303         (instantiate_decl): Do not pass an initializer to cp_finish_decl
3304         in that situation.
3305         * search.c (dfs_push_decls): Skip FIELD_DECLs for base subobjects.
3306         (dfs_unuse_fields): Likewise.
3307         * tree.c (pod_type_p): Handle error_mark_node.
3308         (zero_init_p): Likewise.
3309         * typeck.c (lookup_anon_field): Skip FIELD_DECLs for base
3310         subobjects.
3311         * typeck2.c (store_init_value): Remove #if 0'd code.
3312         (force_store_init_value): Remove.
3313         (process_init_constructor): Use build_zero_init.
3314
3315 2002-09-29  Nathan Sidwell  <nathan@codesourcery.com>
3316
3317         PR c++/7788
3318         * rtti.c (unemitted_tinfo_decl_p): Check it has a field.
3319
3320 2002-09-29  Kazu Hirata  <kazu@cs.umass.edu>
3321
3322         * cp-tree.h: Fix comment typos.
3323         * decl.c: Likewise.
3324         * pt.c: Likewise.
3325
3326 2002-09-25  Mark Mitchell  <mark@codesourcery.com>
3327
3328         * cp/class.c (contains_empty_class_p): New method.
3329         (walk_subobject_offsets): Correct computation of field offset.
3330         (layout_empty_base): Correct placement of emtpy base classes.
3331         (layout_class_type): Warn about ABI changes.
3332
3333 2002-09-23  Mark Mitchell  <mark@codesourcery.com>
3334
3335         * cp/class.c (layout_virtual_bases): Do not round the size of the
3336         type to a multiple of the alignment before laying out virtual bases.
3337         (layout_class_type): Correct handling of bit-fields that are wider
3338         than their type inside unions.  Round the size of the type to a
3339         even number of bytes when computing the size without virtual
3340         bases.
3341         * cp/cp-tree.h (abi_version_at_least): New macro.
3342
3343 2002-09-21  Kazu Hirata  <kazu@cs.umass.edu>
3344
3345         * ChangeLog: Follow spelling conventions.
3346         * ChangeLog.2: Likewise.
3347         * call.c: Likewise.
3348         * class.c: Likewise.
3349         * cp-tree.h: Likewise.
3350         * cvt.c: Likewise.
3351         * decl.c: Likewise.
3352         * decl2.c: Likewise.
3353         * except.c: Likewise.
3354         * friend.c: Likewise.
3355         * g++spec.c: Likewise.
3356         * init.c: Likewise.
3357         * lex.c: Likewise.
3358         * mangle.c: Likewise.
3359         * method.c: Likewise.
3360         * operators.def: Likewise.
3361         * optimize.c: Likewise.
3362         * pt.c: Likewise.
3363         * rtti.c: Likewise.
3364         * search.c: Likewise.
3365         * semantics.c: Likewise.
3366         * spew.c: Likewise.
3367         * tree.c: Likewise.
3368         * typeck.c: Likewise.
3369
3370 2002-09-18  Devang Patel  <dpatel@apple.com>
3371
3372         * cp/cp-tree.h: New prototype for walk_vtabls().
3373         * cp/decl.c (walk_vtables_r): New function.
3374         (struct cp_binding_level): Add new members, namespaces,
3375         names_size and vtables.
3376         (add_decl_to_level): Add decl in namespaces or vtables
3377         chain, if conditions match.
3378         (walk_vtables): New function.
3379         (walk_namespaces_r): Travers separate namespace chain
3380         for namespace decls.
3381         (wrapup_globals_for_namespace): Use names_size instead
3382         of list_length().
3383         * cp/decl2.c (finish_file): Use walk_vtables() instead of
3384         walk_globals() to walk vtable decls.
3385
3386 2002-09-18  Nathan Sidwell  <nathan@codesourcery.com>
3387
3388         * decl.c (grokdeclarator): Use assert, not internal_error. Don't
3389         ICE with invalid pointers & references.
3390
3391 2002-09-17  Zack Weinberg  <zack@codesourcery.com>
3392
3393         * Make-lang.in: Remove all references to the demangler.
3394         * cxxfilt.c: Moved to binutils.
3395
3396 2002-09-16  Nathan Sidwell  <nathan@codesourcery.com>
3397
3398         PR c++/7718
3399         * pt.c (tsubst_decl): Remove assert.
3400
3401         Remove DR 295 implementation.
3402         * pt.c (check_cv_quals_for_unify): Disable function & method cases.
3403         * tree.c (cp_build_qualified_type_real): Likewise. Don't warn
3404         about ignoring volatile qualifiers.
3405
3406         * search.c (lookup_member): Correct documentation.
3407
3408 2002-09-16  Geoffrey Keating  <geoffk@apple.com>
3409
3410         * cp-tree.h (union lang_tree_node): Add chain_next option.
3411
3412 2002-09-16  Nathan Sidwell  <nathan@codesourcery.com>
3413
3414         * parse.y (parse_finish_call_expr): Check lookup_member result.
3415
3416         PR c++/7015
3417         * semantic.c (finish_asm_stmt): Fix operand/output_operands
3418         thinko.
3419         * typeck.c (c_expand_asm_operands): Protect from error_mark_node.
3420
3421 2002-09-15  Nathan Sidwell  <nathan@codesourcery.com>
3422
3423         PR c++/7919
3424         * call.c (build_over_call): Convert this pointer for fns found by
3425         using decls.
3426
3427 2002-09-15  Kazu Hirata  <kazu@cs.umass.edu>
3428
3429         * ChangeLog: Follow spelling conventions.
3430         * ChangeLog.1: Likewise.
3431
3432 2002-09-14  Nathan Sidwell  <nathan@codesourcery.com>
3433
3434         PR c++/7768
3435         * pt.c (build_template_decl): Copy DECL_DESTRUCTOR_P.
3436
3437 2002-09-14  Kazu Hirata  <kazu@cs.umass.edu>
3438
3439         * error.c: Fix comment formatting.
3440         * except.c: Likewise.
3441         * expr.c: Likewise.
3442         * friend.c: Likewise.
3443         * g++spec.c: Likewise.
3444         * init.c: Likewise.
3445         * lex.c: Likewise.
3446         * mangle.c: Likewise.
3447         * method.c: Likewise.
3448         * optimize.c: Likewise.
3449         * pt.c: Likewise.
3450         * rtti.c: Likewise.
3451         * search.c: Likewise.
3452         * semantics.c: Likewise.
3453         * spew.c: Likewise.
3454         * tree.c: Likewise.
3455         * typeck.c: Likewise.
3456         * typeck2.c: Likewise.
3457
3458 2002-09-13  Matt Austern  <austern@apple.com>
3459
3460         PR C++/7828
3461         * cp/cp-tree.h, cp/tree.c: New function non_cast_lvalue_p.
3462         * cp/call.c: Change call-by-const-reference mechanism to use
3463         non_cast_lvalue_p when deciding whether the create a temporary.
3464         We need a temporary when passing, e.g. (long) x by const ref.
3465
3466 2002-09-13  Nathan Sidwell  <nathan@codesourcery.com>
3467
3468         * pt.c (unify, ARRAY_TYPE): Element type can be more qualified.
3469
3470 2002-09-13  Kazu Hirata  <kazu@cs.umass.edu>
3471
3472         * decl.c: Fix comment formatting.
3473         * decl2.c: Likewise.
3474
3475 2002-09-12  Kazu Hirata  <kazu@cs.umass.edu>
3476
3477         * call.c: Fix comment formatting.
3478         * class.c: Likewise.
3479         * cp-lang.c: Likewise.
3480         * cp-tree.h: Likewise.
3481         * cvt.c: Likewise.
3482
3483 2002-09-11  Zack Weinberg  <zack@codesourcery.com>
3484
3485         * Make-lang.in: Build cp/cxxfilt.o from $(srcdir)/cp/cxxfilt.c,
3486         and c++filt from cxxfilt.o + version.o + $(LIBDEPS).
3487         * cxxfilt.c: New file: split from libiberty/cplus-dem.c, with
3488         minor adjustments (use version_string, eliminate yet another
3489         duplicate of xmalloc)
3490
3491 2002-09-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3492
3493         * cp-tree.h (require_complete_eh_spec_types): Add prototype.
3494
3495 2002-09-05  Jason Merrill  <jason@redhat.com>
3496
3497         * typeck2.c (add_exception_specifier): Only pedwarn for an
3498         incomplete type.
3499         (require_complete_eh_spec_types): New fn.
3500         (cxx_incomplete_type_diagnostic): Also support pedwarning.
3501         * typeck.c (complete_type_or_diagnostic): Likewise.
3502         * call.c (build_call): Call require_complete_eh_spec_types.
3503         * rtti.c (get_pseudo_ti_desc): Give an error rather than aborting
3504         on an incomplete type.
3505
3506 2002-09-04  Jakub Jelinek  <jakub@redhat.com>
3507
3508         * decl.c (start_cleanup_fn): Clear interface_only before
3509         start_function, restore it afterwards.
3510
3511 2002-09-02  Nathan Sidwell  <nathan@codesourcery.com>
3512
3513         * cp-tree.h (finish_builtin_type): Remove.
3514         * decl2.c (finish_builtin_type): Move to common code.
3515         * decl.c (build_ptrmemfunc_type): Adjust.
3516         * rtti.c (create_pseudo_type_info): Adjust.
3517         (create_tinfo_types): Adjust.
3518
3519 2002-08-31  Jason Merrill  <jason@redhat.com>
3520
3521         * cp-lang.c (cp_expr_size): Allow initialization from a
3522         CONSTRUCTOR.
3523
3524 2002-08-30  Richard Henderson  <rth@redhat.com>
3525
3526         PR opt/7515
3527         * tree.c: Include target.h.
3528         (cp_cannot_inline_tree_fn): Don't auto-inline functions that
3529         don't bind locally.
3530         * Makefile.in (tree.o): Update.
3531
3532 2002-08-27  Mark Mitchell  <mark@codesourcery.com>
3533
3534         * class.c (layout_virtual_bases): Warn about bugs in G++ that
3535         result in incorrect object layouts.
3536         (layout_class_type): Likewise.
3537
3538 2002-08-24  Matt Austern  <austern@apple.com>
3539
3540         * tree.c (lvalue_p_1): Add argument for whether casts of lvalues
3541         are allowable.
3542         (real_lvalue_p): Update caller.
3543         (lvalue_p): Ditto.
3544         (non_cast_lvalue_or_else): New.
3545         * tree.h: Declare it.
3546         * typeck.c (build_unary_op): Use non_cast_lvalue_or_else.
3547
3548 2002-08-22  Mark Mitchell  <mark@codesourcery.com>
3549
3550         * typeck.c (build_class_member_access_expr): Handle COMPOUND_EXPR
3551         and COND_EXPR specially; fix error message output.
3552
3553 2002-08-22  Jason Merrill  <jason@redhat.com>
3554
3555         * pt.c (tsubst_expr): RETURN_EXPR is now RETURN_STMT_EXPR.
3556         * semantics.c (nullify_returns_r): Likewise.
3557
3558 2002-08-17  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3559
3560         Fix PR/7621
3561         * typeck.c (finish_class_member_access_expr): Diagnose cases where
3562         name lookup finds nothing.
3563
3564 2002-08-15  Jason Merrill  <jason@redhat.com>
3565
3566         * semantics.c (finish_then_clause): Remove redundant assignment.
3567         (finish_if_stmt, begin_switch_stmt, finish_switch_stmt): Move the
3568         extra binding level outside the if/switch statement.
3569         (finish_while_cond, finish_for_cond): Rewrite complex condition
3570         into the loop body.
3571
3572 2002-08-15  Alexandre Oliva  <aoliva@redhat.com>
3573
3574         * parse.y (sizeof, alignof, typeof): New non-terminals to
3575         increment skip_evaluation.  Replace terminals with them and
3576         decrement skip_evaluation at the end of rules using them.
3577         * decl2.c (mark_used): Don't assemble_external if
3578         skipping evaluation.
3579
3580 2002-08-15  Gabriel Dos Reis  <gdr@nerim.net>
3581
3582         Fix PR/7504
3583         * parse.y (parse_finish_call_expr): Handle incomplete
3584         type used to name a scope.
3585
3586 2002-08-15  Nathan Sidwell  <nathan@codesourcery.com>
3587
3588         PR c++/7598
3589         * typeck.c (build_unary_op): Fold offsetof idiom. Fixes
3590         regression caused by my 2002-08-08 patch.
3591
3592 2002-08-13  Mark Mitchell  <mark@codesourcery.com>
3593
3594         * decl.c (pushdecl_class_level): Honor requests to bind names to
3595         OVERLOADs.
3596
3597 2002-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3598
3599         * decl2.c (build_call_from_tree): Fix uninitialized variable.
3600         * parse.y (parse_finish_call_expr): Likewise.
3601         * repo.c (old_args, old_dir, old_main): Const-ify.
3602
3603 2002-08-11  Gabriel Dos Reis  <gdr@nerim.net>
3604
3605         * decl.c (duplicate_decls): Replace DECL_SOURCE_FILE +
3606         DECL_SOURCE_LINE with DECL_SOURCE_LOCATION.
3607         * optimize.c (maybe_clone_body): Likewise.
3608         * pt.c (tsubst_enum): Likewise.
3609         (lookup_template_class): Likewise.
3610         * tree.c (cp_copy_res_decl_for_inlining): Likewise.
3611
3612 2002-08-10  Neil Booth  <neil@daikokuya.co.uk>
3613
3614         * lang-specs.h: Remove -ansi.
3615
3616 2002-08-10  Nathan Sidwell  <nathan@codesourcery.com>
3617
3618         * tree.c (maybe_dummy_object): Replace // with /* */
3619
3620 2002-08-09  Mark Mitchell  <mark@codesourcery.com>
3621
3622         * call.c (standard_conversion): Use build_ptrmem_type.
3623         * cp-tree.h (build_ptrmem_type): New function.
3624         (adjust_result_of_qualified_name_lookup): Likewise.
3625         * decl.c (grokvardecl): Do not look for OFFSET_TYPEs to indicate
3626         static data members.
3627         (build_ptrmem_type): New function.
3628         (grokdeclarator): Do not use build_offset_type when encountering a
3629         qualified name.
3630         * parse.y (parse_finish_call_expr): Use
3631         adjust_result_of_qualified_name_lookup.
3632         * search.c (adjust_result_of_qualified_name_lookup): New function.
3633         * typeck.c (qualify_type_recursive): Use TYPE_PTRMEM_* rather than
3634         accessing OFFSET_TYPEs directly.
3635
3636 2002-08-08  Mike Stump  <mrs@apple.com>
3637
3638         * call.c (add_builtin_candidate): legal -> valid, illegal -> invalid.
3639         (type_decays_to): Likewise.
3640         * class.c (find_final_overrider): Likewise.
3641         (maybe_note_name_used_in_class): Likewise.
3642         * decl.c (current_tmpl_spec_kind): Likewise.
3643         (add_binding): Likewise.
3644         (push_class_binding): Likewise.
3645         (duplicate_decls): Likewise.
3646         (layout_var_decl): Likewise.
3647         (grokfndecl): Likewise.
3648         (grokdeclarator): Likewise.
3649         (check_default_argument): Likewise.
3650         * decl2.c (handle_class_head): Likewise.
3651         * error.c (dump_template_decl): Likewise.
3652         * init.c (build_offset_ref): Likewise.
3653         * pt.c (check_specialization_scope): Likewise.
3654         (determine_specialization): Likewise.
3655         (check_explicit_specialization): Likewise.
3656         (maybe_check_template_type): Likewise.
3657         (process_partial_specialization): Likewise.
3658         (check_default_tmpl_args): Likewise.
3659         (push_template_decl_real): Likewise.
3660         (convert_template_argument): Likewise.
3661         (try_class_unification): Likewise.
3662         (get_bindings_real): Likewise.
3663         (do_decl_instantiation): Likewise.
3664         * semantics.c (begin_function_definition): Likewise.
3665         (finish_member_declaration): Likewise.
3666         (check_multiple_declarators): Likewise.
3667         * typeck.c (comp_array_types): Likewise.
3668         (comptypes): Likewise.
3669         (expr_sizeof): Likewise.
3670         (build_binary_op): Likewise.
3671         (dubious_conversion_warnings): Likewise.
3672         (check_return_expr): Likewise.
3673
3674 2002-08-08  Mark Mitchell  <mark@codesourcery.com>
3675
3676         * typeck.c (build_class_member_access_expr): Do not return
3677         error_mark_node when no error has occurred.
3678
3679 2002-08-08  Nathan Sidwell  <nathan@codesourcery.com>
3680
3681         * typeck.c (build_component_addr): Remove.
3682         (build_unary_op): Just check it's not a bitfield, and then build
3683         an ADDR_EXPR.
3684
3685 2002-08-08  Nathan Sidwell  <nathan@codesourcery.com>
3686
3687         * class.c (convert_to_base): Correct check for error_mark_node.
3688         (create_vtable_ptr): Remove unused VFUNS_P parm.
3689
3690 2002-08-08  Nathan Sidwell  <nathan@codesourcery.com>
3691
3692         * cp/Make-lang.in (c++.mostlyclean): Remove coverage files.
3693
3694 2002-08-07  Mark Mitchell  <mark@codesourcery.com>
3695
3696         Rework build_component_ref.
3697         * call.c (build_vfield_ref): Do not go through build_component_ref.
3698         (build_field_call): Use build_class_member_access_expr.
3699         (build_user_type_conversion_1): Use BASELINK_FUNCTIONS.
3700         (build_object_call): Likewise.
3701         * class.c (convert_to_base): New function.
3702         (type_requires_array_cookie): Use BASELINK_FUNCTIONS.
3703         (instantiate_type): Handle BASELINKs.
3704         * cp-tree.def (BASELINK): New tree code.
3705         * cp-tree.h (BASELINK_P): Reimplement.
3706         (SET_BASELINK_P): Remove.
3707         (BASELINK_BINFO): Reimplement.
3708         (BASELINK_FUNCTIONS): Likewise.
3709         (BASELINK_ACCESS_BINFO): Likewise.
3710         (BASELINK_OPTYPE): Likewise.
3711         (convert_to_base): New function.
3712         (name_p): Likewise.
3713         (build_object_ref): Remove.
3714         (build_component_ref_1): Likewise.
3715         (build_component_ref): Likewise.
3716         (build_x_component_ref): Likewise.
3717         (build_class_member_access_expr): New function.
3718         (finish_class_member_access_expr): Likewise.
3719         (build_ptrmemfunc_access_expr): Likewise.
3720         * decl.c (grokdeclarator): Handle BASELINKs.
3721         * decl2. (build_expr_from_tree): Handle COMPONENT_REFs by using
3722         finish_class_member_access_expr.
3723         (arg_assoc): Handle BASELINKs.
3724         (do_class_using_decl): Likewise.
3725         * error.c (dump_decl): Likewise.
3726         (dump_expr): Use build_ptrmemfunc_access_expr.
3727         * except.c (dtor_nothrow): Use CLASSTYPE_DESTRUCTORS to find
3728         destructors.
3729         (build_throw): Use BASELINK_FUNCTIONS.
3730         * init.c (perform_member_init): Use
3731         build_class_member_access_expr.
3732         (build_offset_ref): Handle BASELINKs.  Use
3733         build_class_member_access_expr.
3734         * method.c (hack_identifier): Likewise.
3735         * parse.y (do_id): Use BASELINK, not TREE_LIST.
3736         (primary): Remove uses of build_object_ref.
3737         * pt.c (lookup_template_function): Handle BASELINKs.
3738         (resolve_overloaded_unification): Likewise.
3739         * search.c (build_baselink): Build a BASELINK, not a TREE_LIST.
3740         (lookup_field): Use BASELINK, not TREE_LIST.
3741         (lookup_fnfiels): Likewise.
3742         (setup_class_bindings): Likewise.
3743         * semantics.c (finish_object_call_expr): Do not use
3744         build_method_call when we already know what function is being
3745         called.
3746         * spew.c (identifier_type): Use BASELINK, not TREE_LIST.
3747         * tree.c (really_overloaded_fn): Use OVL_CHAIN for OVERLOADs, not
3748         TREE_CHAIN.
3749         (name_p): New function.
3750         * typeck.c (build_object_ref): Remove.
3751         (build_component_ref_1): Likewise.
3752         (build_x_component_ref): Likewise.
3753         (build_class_member_access_expr): New function.
3754         (finish_class_member_access_expr): Likewise.
3755         (build_ptrmemfunc_access_expr): Likewise.
3756         (get_member_function_from_ptrfunc): Use
3757         build_ptrmemfunc_access_expr.
3758         (build_binary_op): Likewise.
3759         (build_unary_op): Likewise.
3760         (build_ptrmemfunc): Likewise.
3761         (pfn_from_ptrmemfunc): Likewise.
3762         * typeck2.c (build_m_component_ref): Adjust comment.
3763
3764 2002-08-07  Neil Booth  <neil@daikokuya.co.uk>
3765
3766         * Make-lang.in (CXX_C_OBJS): Update.
3767         * cp-lang.c (LANG_HOOKS_DECODE_OPTION): Use c_common_decode_option.
3768         * cp-tree.h (cxx_decode_option): Remove.
3769         * decl2.c (compare_options, lang_f_options, unsupported_options,
3770         cxx_decode_option): Remove.
3771
3772 2002-08-06  Gabriel Dos Reis  <gdr@nerim.net>
3773
3774         * typeck.c (build_x_unary_op): Handle pointer-to-member.
3775
3776 2002-08-05  Geoffrey Keating  <geoffk@redhat.com>
3777
3778         * class.c: Don't include obstack.h.
3779         (popclass):
3780         * decl2.c: Delete bogus comment.
3781         * error.c: Don't include obstack.h.
3782         * except.c: Likewise.
3783         (dump_type): Correct comment.
3784         * method.c: Don't include obstack.h.
3785         * tree.c: Likewise.
3786
3787 2002-08-04  Gabriel Dos Reis  <gdr@nerim.net>
3788
3789         Fix PR/2213
3790         * cvt.c (cp_convert_to_pointer): Reject conversions from integral
3791         expressions to pointer-to-data-member of pointer-to-member-functions.
3792
3793 2002-08-04  Geoffrey Keating  <geoffk@redhat.com>
3794
3795         * cvt.c (ocp_convert): Delete obsolete code.
3796         * parse.y (permanent_obstack): Delete declaration.
3797         * pt.c (permanent_obstack): Delete declaration.
3798         * repo.c (permanent_obstack): Delete declaration.
3799         (open_repo_file): Use xmalloc instead of permanent_obstack.
3800         (init_repo): Use xstrdup instead of permanent_obstack.
3801
3802 2002-08-04  Nathan Sidwell  <nathan@codesourcery.com>
3803
3804         * cp-tree.h (VF_DERIVED_VALUE): Remove.
3805         * class.c (finish_struct_1): Use VF_BINFO_VALUE not VF_DERIVED_VALUE.
3806
3807 2002-08-03  Nathan Sidwell  <nathan@codesourcery.com>
3808
3809         PR 7470.
3810         C++ ABI change - vfunc ordering.
3811         * class.c (add_virtual_function): Remove.
3812         (dfs_modify_all_vtables): Take list of all declared
3813         virtuals. Assign all that are not in primary base.
3814         (check_for_override): Adjust comments.
3815         (create_vtable_ptr): Take single list of virtuals. Build chain
3816         of declared virtuals here.
3817         (layout_class_type): Take single list of virtuals. Adjust.
3818         (finish_struct_1): Keep virtuals on single list. Adjust.
3819
3820 2002-08-02  Mark Mitchell  <mark@codesourcery.com>
3821
3822         * init.c (build_member_call): Use build_new_method_call, not
3823         build_method_call.
3824
3825 2002-08-02  Krister Walfridsson  <cato@df.lth.se>
3826
3827         * Make-lang.in (spew.o, lex.o, pt.o): Add path to parse.h dependencies.
3828
3829 2002-08-02  Mark Mitchell  <mark@codesourcery.com>
3830
3831         * call.c (build_method_call): Issue a more helpful error message
3832         about ambiguous method names.
3833
3834 2002-08-02  Nathan Sidwell  <nathan@codesourcery.com>
3835
3836         * tree.c (build_shared_int_cst): Make cache file scope, and
3837         GTY it.
3838
3839 2002-08-02  Jason Merrill  <jason@redhat.com>
3840
3841         * cp-lang.c (LANG_HOOKS_EXPR_SIZE): Define.
3842         (cp_expr_size): New fn.
3843         * call.c (build_over_call): Lose empty class hackery.
3844         (convert_arg_to_ellipsis): Promote non-POD warning to error.
3845         * typeck.c (build_modify_expr): Don't use save_expr on an lvalue.
3846
3847         * semantics.c (expand_body): Do tree optimization in the function
3848         context, too.
3849
3850 2002-08-01  Neil Booth  <neil@daikokuya.co.uk>
3851
3852         * cp-tree.h: Move all warning and flag declarations to c-common.h.
3853         * decl.c: Move all warning and flag variables to c-common.c.
3854         * decl2.c: Move all warning and flag variables to c-common.c.
3855         * lex.c (flag_digraphs): Remove.
3856         (warn_traditional): Now in c-common.c.
3857
3858 2002-07-31  Mark Mitchell  <mark@codesourcery.com>
3859
3860         * call.c (build_field_call): Do not look up the field by name.
3861         (build_method_call): Simplify.
3862         (struct z_candidate): Add access_path and conversion_path.  Remove
3863         basetype_path.
3864         (convert_class_to_reference): Adjust use of
3865         add_function_candidate.
3866         (add_candidate): Add conversion_path argument.
3867         (add_function_candidate): Use it.
3868         (add_conv_dndidate): Likewise.
3869         (build_builtin_candidate): Likewise.
3870         (add_template_candidate_real): Add conversion_path argument.
3871         (add_template_conv_candidate): Likewise.
3872         (add_template_candidate): Likewise.
3873         (build_user_type_conversion_1): Use it.
3874         (build_new_function_call): Remove name lookup code.  Adjust use of
3875         add_template_candidate and add_function_candidate.
3876         (build_new_op): Likewise.
3877         (convert_like_real): Use build_special_member_call.
3878         (build_over_call): Use cand->conversion_path.
3879         (build_special_member_call): New method.
3880         (build_new_method_call): Remove name lookup code.
3881         * cp-tree.def (OFFSET_REF): Update documentation.
3882         (TEMPLATE_ID_EXPR): Likewise.
3883         * cp-tree.h (BASELINK_ACCESS_BINFO): New macro.
3884         (BASELINK_OPTYPE): Likewise.
3885         (build_new_method_call): Adjust prototype.
3886         (build_special_member_call): New method.
3887         (build_baselink): New method.
3888         (build_offset_ref_call_from_tree): Likewise.
3889         (build_call_from_tree): Likewise.
3890         (finish_qualified_call_expr): Remove.
3891         (finish_call_expr): Adjust prototype.
3892         (build_x_function_call): Remove.
3893         * cvt.c (ocp_convert): Use build_special_member_call.
3894         * decl2.c (reparse_absdcl_as_expr): Use finish_call_expr.
3895         (build_expr_from_tree): Adjust handling for TEMPLATE_ID_EXPR and
3896         CALL_EXPR.
3897         (build_offset_ref_call_from_tree): New function.
3898         (build_call_from_tree): Likewise.
3899         * init.c (expand_cleanup): Use build_special_member_call.
3900         (expand_default_init): Likewise.
3901         (build_member_call): Use finish_call_expr.
3902         (build_new_1): Use build_special_member_call.
3903         (push_base_cleanups): Likewise.
3904         * method.c (do_build_assign_ref): Likewise.
3905         * parse.y (template_id): Do not pass a COMPONENT_REF to
3906         lookup_template_function.
3907         (primary): Use parse_finish_call_epxr, not finish_call_expr.
3908         (parse_finish_call_expr): New function.
3909         * pt.c (lookup_template_function): Add assertions.
3910         * search.c (lookup_base): Allow T to be a binfo.
3911         (build_baselink): New function.
3912         (lookup_member): Use it.
3913         * semantics.c (finish_call_expr): Do not do name lookup.
3914         (finish_object_call_expr): Remove #if 0'd code.
3915         (finish_qualified_call_expr): Remove.
3916         * typeck.c (build_x_function_call): Remove.
3917         (build_static_case): Use build_special_member_call.
3918         * typeck2.c (build_functional_cast): Likewise.
3919
3920 2002-07-30  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
3921
3922         * lang-specs.h: Remove __GXX_ABI_VERSION, moved to gcc.c.
3923
3924 2002-07-30  Gabriel Dos Reis  <gdr@nerim.net>
3925
3926         * cp-tree.h (VF_DERIVED_VALUE): Restore from previous deletion.
3927
3928 2002-07-30  Nathan Sidwell  <nathan@codesourcery.com>
3929
3930         * cp-tree.h (CLASSTYPE_VFIELDS, VF_*, BV_*): Add more
3931         documentation.
3932
3933 2002-07-29  Alan Modra  <amodra@bigpond.net.au>
3934
3935         * cp-tree.h: Comment typo fix.
3936
3937 2002-07-29  Richard Earnshaw  <rearnsha@arm.com>
3938
3939         * spew.c (space_for_token): Allocate zeroed memory for a new token
3940         chunk.
3941
3942 2002-07-27  Roger Sayle  <roger@eyesopen.com>
3943
3944         * decl.c (builtin_function_1): No need to explicitly mark
3945         BUILT_IN_RETURN and BUILT_IN_EH_RETURN as noreturn.
3946
3947 2002-07-27  Roger Sayle  <roger@eyesopen.com>
3948
3949         * decl2.c (cxx_decode_option): Support -fno-builtin-foo.
3950
3951 2002-07-26  Jason Merrill  <jason@redhat.com>
3952
3953         * call.c (build_over_call): Likewise.
3954         (cp_convert_parm_for_inlining): New fn.
3955         (convert_for_arg_passing): New fn.
3956         (convert_default_arg, build_over_call): Use it.
3957         (type_passed_as): New fn.
3958         * pt.c (tsubst_decl): Use it.
3959         * decl2.c (cp_build_parm_decl): New fn.
3960         (build_artificial_parm): Use it.
3961         (start_static_storage_duration_function): Likewise.
3962         * decl.c (start_cleanup_fn, grokdeclarater): Likewise.
3963         (grokparms): Don't mess with DECL_ARG_TYPE.
3964         * typeck.c (convert_arguments): Use convert_for_arg_passing.
3965         * cp-lang.c (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
3966         Define.
3967         * cp-tree.h: Declare new fns.
3968
3969 2002-07-26  Neil Booth  <neil@daikokuya.co.uk>
3970
3971         * cp-tree.h (flag_operator_names): Remove.
3972         * decl2.c (flag_operator_names): Remove.
3973         (lang_f_options): Remove operator-names.
3974         * lex.c (D_OPNAME): Remove.
3975         (reswords): Remove operator names.
3976         (rid_to_yy): Remove operator names.
3977         (init_reswords): No need to handle D_OPNAME.
3978         * spew.c (read_process_identifier): There are no operator
3979         names.
3980
3981 2002-07-26  Jason Merrill  <jason@redhat.com>
3982
3983         * dump.c (cp_dump_tree): Call c_dump_tree.
3984         * Make-lang.in (CXX_C_OBJS): Add c-dump.o.
3985
3986 2002-07-25  Neil Booth  <neil@daikokuya.co.uk>
3987
3988         * error.c (print_whitespace): Remove.
3989         * g++spec.c (LIBUNWIND): Move.
3990         * mangle.c (mangled_position, write_signed_number): Remove.
3991
3992 2002-07-25  Neil Booth  <neil@daikokuya.co.uk>
3993
3994         * decl2.c (cxx_decode_option): Similarly.
3995
3996 2002-07-25  Gabriel Dos Reis  <gdr@nerim.net>
3997
3998         * cp-tree.h (cxx_sizeof_nowarn): Now a macro.
3999         (cxx_sizeof_or_alignof_type): Take a third argument.
4000         (cxx_sizeof): Adjust definition.
4001         (cxx_alignof): Likewise.
4002         * init.c (build_delete): Use cxx_sizeof_nowarn to reflect reality.
4003         * typeck.c (cxx_sizeof_or_alignof_type): Take a third argument for
4004         complaining.
4005         (c_sizeof_nowarn): Remove definition.
4006         (build_unary_op): Use cxx_sizeof_nowarn.
4007
4008 2002-07-24  Geoffrey Keating  <geoffk@redhat.com>
4009
4010         * tree.c (cp_build_qualified_type_real): When copying
4011         pointer-to-method types, unshare the record that holds
4012         the cached pointer-to-member-function type.
4013
4014 2002-07-23  Neil Booth  <neil@daikokuya.co.uk>
4015
4016         * cp-tree.h (FILE_FUNCTION_PREFIX_LEN): Remove.
4017
4018 2002-07-23  Gabriel Dos Reis  <gdr@nerim.net>
4019
4020         Fix PR/7363:
4021         * typeck.c (cxx_sizeof_or_alignof_type): New function.
4022         (c_sizeof): Remove definition.
4023         (expr_sizeof): Use cxx_sizeof.
4024         * decl2.c (build_expr_from_tree): Use cxx_sizeof_or_alignof_type.
4025         * decl.c (finish_destructor_body): Use cxx_sizeof.
4026         * semantics.c (finish_alignof): Likewise.
4027         (finish_alignof): Use cxx_alignof.
4028         * cp-tree.h (cxx_sizeof, cxx_alignof): New macros.
4029         (cxx_sizeof_or_alignof_type): Declare.
4030         (my_friendly_assert): Move to ../c-common.h.
4031
4032 2002-07-23  Neil Booth  <neil@daikokuya.co.uk>
4033
4034         * class.c, method.c, pt.c, search.c: Don't define obstack macros.
4035
4036 2002-07-22  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4037
4038         PR c++/7347, c++/7348
4039         * cp-tree.h (tsubst_flags_t): Add tf_parsing.
4040         * decl.c (make_typename_type): Use it.
4041         (make_unbound_class_template): Likewise.
4042         (lookup_name_real): Don't call type_access_control if scope is
4043         template parameter dependent.
4044         * parse.y (template_arg): Call make_unbound_class_template with
4045         tf_parsing set.
4046         (nest_name_specifier): Call make_typename_type with tf_parsing set.
4047         (typename_sub0): Likewise.
4048         (typename_sub1): Likewise.
4049         (instantiate_decl): Push class scope.
4050         * pt.c (regenerate_decl_from_template): Call pushclass and popclass
4051         for both static variable and member function template.
4052         (instantiate_decl) Call pushclass and popclass when tsubst'ing type
4053         and arguments.
4054         * search.c (type_access_control): Do type access for TEMPLATE_DECL
4055         too.
4056
4057 2002-07-20  Roger Sayle  <roger@eyesopen.com>
4058
4059         * decl2.c (cxx_decode_option): Simplify -fhandle-exceptions
4060         test by using positive_option.  Make whitespace consistent.
4061
4062 2002-07-20  Gabriel Dos Reis  <gdr@nerim.net>
4063
4064         * spew.c (struct unparsed_test): Replace 'filename' and 'lineno'
4065         members with 'locus'.  Adjust use throughout.
4066         (struct feed):  Likewise.
4067         (alloc_unparsed_test): Change prototype, take a 'const location_t *'.
4068         Adjust use.
4069         (snarf_defarg): Use error(), not error_with_file_and_line().
4070
4071 2002-07-19  Chris Demetriou  <cgd@broadcom.com>
4072
4073         * lang-specs.h (@c++): Include "%2" (cc1plus_spec) wherever
4074         cpp_options is included.
4075
4076 2002-07-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4077
4078         PR c++/2862, c++/2863
4079         * pt.c (determine_specialization): Compare the length of
4080         TYPE_ARG_TYPES.  Tidy.
4081
4082 2002-07-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4083
4084         PR c++/3797
4085         * decl.c (duplicate_decls): Don't propagate inlining parameters from
4086         olddecl to newdecl when newdecl is a specialization of the
4087         instantiation olddecl.
4088
4089 2002-07-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4090
4091         PR c++/4802, c++/5387
4092         * decl.c (make_typename_type): Use enforce_access.
4093
4094 2002-07-17  Scott Snyder <snyder@fnal.gov>
4095
4096         PR c++/7320
4097         * rtti.c (get_tinfo_decl): Set DECL_COMDAT.
4098
4099 2002-07-12  Mark Mitchell  <mark@codesourcery.com>
4100
4101         * class.c (add_method): Correct handling of conversion operators.
4102
4103 2002-07-11  Mark Mitchell  <mark@codesourcery.com>
4104
4105         PR c++/7224
4106         * class.c (add_method): Simplify.
4107
4108 2002-07-11  Jason Merrill  <jason@redhat.com>
4109
4110         PR c++/7279
4111         * tree.c (cp_copy_res_decl_for_inlining): Also copy
4112         TREE_ADDRESSABLE.
4113
4114 2002-07-10  Graham Stott  <graham.stott@btinternet.com>
4115
4116         * pt.c (template_parm_this_level_p, push_template_decl_real):
4117         Pass depth as int pointer.
4118
4119 2002-07-11  Tim Josling  <tej@melbpc.org.au>
4120
4121         Remove front end hard coding from gengtype.c.
4122
4123         * config-lang.in (gtfiles): Add files needed for this front end.
4124
4125 2002-07-10  Mark Mitchell  <mark@codesourcery.com>
4126
4127         * cp-tree.h (unqualified_name_lookup_error): Declare it.
4128         (begin_function_definition): Adjust prototype.
4129         * lex.c (unqualified_name_lookup_error): New function, split out
4130         from ...
4131         (do_identifier): ... here.
4132         * parse.y (parse_begin_function_definition): New function.
4133         (fn.def1): Use it.
4134         * semantics.c (begin_function_definition): Accept decl-specifiers
4135         and attributes as separate parameters.
4136
4137 2002-07-10  Jason Merrill  <jason@redhat.com>
4138
4139         PR c++/6255
4140         * decl.c (lookup_name_real): Build a new TYPENAME_TYPE rather than
4141         modifying the old one.
4142
4143 2002-07-09  Mark Mitchell  <mark@codesourcery.com>
4144
4145         * cp-tree.h (constructor_name_p): Declare it.
4146         (check_template_template_default_arg): Likewise.
4147         * class.c (handle_using_decl): Use constructor_name_p.
4148         * decl.c (grokdeclarator): Likewise.
4149         * decl2.c (constructor_name_p): Define it.
4150         * init.c (build_member_call): Use constructor_name_p.
4151         * parse.y (template_parm): Use check_template_template_default_arg.
4152         * pt.c (check_explicit_specialization): Use constructor_name_p.
4153         * semantics.c (check_template_template_default_arg): New function.
4154
4155 2002-07-08  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4156
4157         * pt.c (can_complete_type_without_circularity): Add static to
4158         function definition.
4159
4160 2002-07-08  Mark Mitchell  <mark@codesourcery.com>
4161
4162         * cp-tree.h (have_extern_spec): Declare it
4163         * decl.c (have_extern_spec): Define it.
4164         (start_decl): Eliminate use of used_extern_spec.
4165         (start_function): Likewise.
4166         * parse.y (have_extern_spec): Remove declaration.
4167         (used_extern_spec): Likewise.
4168         (frob_specs): Eliminate use of used_extern_spec.
4169         (.hush_warning): Likewise.
4170
4171 2002-07-07  Mark Mitchell  <mark@codesourcery.com>
4172
4173         * Make-lang.in (cp/parse.o): Depend on decl.h.
4174         * cp-tree.h (do_decl_instantiation): Change prototype.
4175         * parse.y: Include decl.h.
4176         (parse_decl_instantiation): New function.
4177         (explicit_instantiation): Use it.
4178         * pt.c (do_decl_instantiation): Accept a DECL, not a DECLARATOR
4179         and DECLSPECS.
4180
4181 2002-07-07  Roger Sayle  <roger@eyesopen.com>
4182
4183         * error.c (dump_function_name): Use DECL_TEMPLATE_RESULT for
4184         constructor and destructor tests when passed a TEMPLATE_DECL.
4185
4186 2002-07-05  Jason Merrill  <jason@redhat.com>
4187
4188         * cvt.c (cp_convert_to_pointer): Call force_fit_type for null
4189         pointers.
4190
4191         PR optimization/7145
4192         * tree.c (cp_copy_res_decl_for_inlining): Also copy DECL_INITIAL.
4193
4194 2002-07-05  Nathan Sidwell  <nathan@codesourcery.com>
4195
4196         Repair damage on weak-impared targets caused by my previous patch.
4197         * cp-tree.h (import_export_tinfo): Add parameter.
4198         * decl2.c (import_export_tinfo): Add parameter, post adjust
4199         DECL_COMDAT.
4200         * rtti.c (emit_tinfo_decl): DECL_COMDAT is (nearly) always setup by
4201         import_export_tinfo.
4202
4203 2002-07-03  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4204
4205         PR c++/6944
4206         * init.c (build_aggr_init): Remove qualifiers of init before calling
4207         build_vec_init.
4208         (build_vec_init): Flatten multi-dimensional array during cleanup.
4209         (build_vec_delete_1): Abort if the type of each element is array.
4210
4211 2002-07-03  Graham Stott  <graham.stott@btinternet.com>
4212
4213         * pt.c (instantiate_class_template): Fix typo.
4214
4215 2002-07-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4216
4217         * typeck2.c (cxx_incomplete_type_diagnostic): Fix typo caused
4218         by CVS conflict in my last patch.
4219
4220 2002-07-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4221
4222         PR c++/6716
4223         * pt.c (can_complete_type_without_circularity): New function.
4224         (instantiate_class_template): Use it.
4225         * typeck2.c (cxx_incomplete_type_diagnostic): Improve error
4226         message due to incomplete fields.
4227
4228 2002-07-01  Mark Mitchell  <mark@codesourcery.com>
4229
4230         PR c++/7112
4231         * mangle.c (write_expression): Add mangling for sizeof when
4232         applied to a type.
4233         * operators.def: Remove stale comment.
4234
4235 2002-06-30  Nathan Sidwell  <nathan@codesourcery.com>
4236
4237         * cp-tree.h (CPTI_TINFO_DECL_TYPE): Replace with ...
4238         (CPTI_TYPE_INFO_PTR_TYPE): ... this.
4239         (tinfo_decl_type): Replace with ...
4240         (type_info_ptr_type): ... this.
4241         (import_export_tinfo): Declare.
4242         (tinfo_decl_p): Rename to ...
4243         (unemitted_tinfo_decl_p): ... this.
4244         * decl2.c (import_export_decl): Break out tinfo handling into ...
4245         (import_export_tinfo): ... here. New function.
4246         (finish_file): Adjust.
4247         * rtti.c (TINFO_REAL_NAME): New macro.
4248         (init_rtti_processing): Create the tinfo types.
4249         (get_tinfo_decl_dynamic): Use type_info_ptr_type, get_tinfo_ptr.
4250         (get_tinfo_decl): Adjust.
4251         (get_tinfo_ptr): New function.
4252         (get_type_id): Use it.
4253         (tinfo_base_init): Create vtable decl here, if it doesn't exist.
4254         (ptr_initializer): Use get_tinfo_ptr.
4255         (ptm_initializer): Likewise.
4256         (synthesize_tinfo_var): Break into ...
4257         (get_pseudo_ti_init): ... this. Just create the initializer.
4258         (get_pseudo_ti_desc): .. and this.
4259         (create_real_tinfo_var): Remove.
4260         (create_pseudo_type_info): Don't create the vtable decl here.
4261         (get_vmi_pseudo_type_info): Remove.
4262         (create_tinfo_types): Adjust.
4263         (tinfo_decl_p): Rename to ...
4264         (unemitted_tinfo_decl_p): ... here. Adjust.
4265         (emit_tinfo_decl): Adjust. Create the initializer.
4266
4267 2002-06-27  Mark Mitchell  <mark@codesourcery.com>
4268
4269         PR c++/6695
4270         * pt.c (tsubst_friend_class): Substitute into the context of the
4271         friend before using it.
4272
4273 2002-06-26  Mark Mitchell  <mark@codesourcery.com>
4274
4275         * cp-tree.h (xref_tag): Change prototype.
4276         (handle_class_head): Likewise.
4277         (build_x_component_ref): Likewise.
4278         * decl.c (cxx_init_decl_processing): Adjust call to xref_tag.
4279         (xref_tag): Take attributes as a separate parameter.
4280         (xref_tag_from_type): Adjust call to xref_tag.
4281         * decl2.c (build_expr_from_tree): Adjust call to
4282         build_x_component_ref.
4283         (handle_class_head): Take attributes as a separate parameter.
4284         * parse.y (parse_xref_tag): New function.
4285         (parse_handle_class_head): Likewise.
4286         (primary): Use parse_xref_tag.
4287         (class_head_decl): Use parse_handle_class_head.
4288         (class_head_defn): Likewise.
4289         * rtti.c (init_rtti_processing): Adjust call to xref_tag.
4290         (build_dynamic_cast_1): Likewise.
4291         (create_pseudo_type_info): Likewise.
4292         (emit_support_tinfos): Likewise.
4293         * typeck.c (build_object_ref): Adjust call to
4294         build_x_component_ref.
4295         (build_x_component_ref): Remove protect parameter.
4296
4297 2002-06-25  Mark Mitchell  <mark@codesourcery.com>
4298
4299         * call.c (build_op_delete_call): Use BASELINK_FUNCTIONS.
4300         * class.c (handle_using_decl): Likewise.
4301         (instantiate_type): Likewise.
4302         * cp-tree.h (BASELINK_FUNCTIONS): New macro.
4303         (xref_basetypes): Change prototype.
4304         (begin_mem_initializers): New function.
4305         (get_overloaded_fn): Likewise.
4306         * decl.c (xref_basetypes): Simplify.
4307         * error.c (dump_expr): Use BASELINK_FUNCTIONS.
4308         * init.c (build_offset_ref): Likewise.
4309         * parse.y (base_init): Use begin_mem_initializers().
4310         (structsp): Adjust call to xref_basetypes.
4311         * pt.c (determine_specialization): Use BASELINK_FUNCTIONS.
4312         (instantiate_class_template): Adjust call to xref_basetypes.
4313         * semantics.c (begin_mem_initializers): New function.
4314         * tree.c (is_overloaded_fn): Use BASELINK_FUNCTIONS.
4315         (really_overlaoded_fn): Likewise.
4316         (get_overloaded_fn): New function.'
4317         (get_first_fn): USe BASELINK_FUNCTIONS.
4318
4319 2002-06-24  Mark Mitchell  <mark@codesourcery.com>
4320
4321         * cp-tree.h (SCALAR_TYPE_P): New macro.
4322         (check_for_out_of_scope_variable): New function.
4323         (at_class_scope_p): Likewise.
4324         (finish_fname): Likewise.
4325         * class.c (finish_struct): Use at_function_scope_p.
4326         * decl.c (check_for_out_of_scope_variable): New function, split
4327         out from do_identifier.
4328         (finish_enum): Use at_function_scope_p.
4329         * lex.c (do_identifier): Use check_for_out_of_scope_variable.
4330         * parse.y (VAR_FUNC_NAME): Give it <ttype>.  Use finish_fname.
4331         (primary): Use at_function_scope_p.
4332         * search.c (at_class_scope_p): New function.
4333         * semantics.c (finish_fname): Likewise.
4334         (check_multiple_declarators): Use at_function_scope_p.
4335
4336 2002-06-23  Mark Mitchell  <mark@codesourcery.com>
4337
4338         * parse.y (parse_scoped_id): New function.
4339         (primary): Use it.
4340         * cp-tree.h (do_scoped_id): Adjust declaration.
4341         * lex.c (do_scoped_id): Remove call to yylex.
4342         * decl2.c (build_expr_from_tree): Adjust use of do_scoped_id.
4343         * typeck2.c (add_exception_specifier): Use tree_cons, rather than
4344         expanding it inline.
4345
4346 2002-06-23  Matt Thomas  <matt@3am-software.com>
4347
4348         * decl.c (finish_function): Change "#ifdef VMS_TARGET" to
4349         "#if VMS_TARGET".
4350
4351 2002-06-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4352
4353         * mangle.c (integer_type_codes): Const-ify.
4354
4355 2002-06-20  Richard Henderson  <rth@redhat.com>
4356
4357         PR c++/6747
4358         * typeck.c (mark_addressable): Don't test TREE_ADDRESSABLE early.
4359         Call put_var_into_stack.
4360
4361 2002-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4362
4363         * spew.c (remove_last_token): Use ARRAY_SIZE in lieu of explicit
4364         array size calculation.
4365
4366 2002-06-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4367
4368         PR c++/6892
4369         * pt.c (tsubst_expr): Handle FILE_STMT.
4370
4371 2002-06-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4372
4373         PR c++/6723
4374         * pt.c (lookup_template_class): Don't build complete argument of
4375         BOUND_TEMPLATE_TEMPLATE_PARM if appeared as a default template
4376         argument.
4377
4378 2002-06-19  Akim Demaille  <akim@epita.fr>
4379
4380         * parse.y (TYPENAME): Rename as tTYPENAME to avoid the clash with
4381         decl.h's TYPENAME.
4382         * spew.c, lex.c: Adjust.
4383         * parse.y (explicit_instantiation): Add empty action to override
4384         the default $$ = $1 where it introduces a type clash.
4385
4386 2002-06-14  Jason Merrill  <jason@redhat.com>
4387
4388         * semantics.c (begin_for_stmt): Push the 'for' scope before
4389         adding the FOR_STMT.
4390
4391         C++ ABI changes.
4392         * class.c (build_base_field): Set DECL_PACKED.
4393         (layout_class_type): Don't use tail padding of PODs.
4394         * mangle.c (write_unqualified_name): Fix template conversion op
4395         mangling.
4396
4397 2002-06-16  Richard Henderson  <rth@redhat.com>
4398
4399         PR opt/6793
4400         * tree.c (cp_cannot_inline_tree_fn): Don't short-circuit test
4401         after template instantiation.
4402
4403 2002-06-16  Richard Henderson  <rth@redhat.com>
4404
4405         * cp-tree.h, decl2.c (flag_ms_extensions): Move to c-common.
4406
4407 2002-06-15  Gabriel Dos Reis  <gdr@codesourcery.com>
4408
4409         * cp-tree.h (compiler_error): Remove declaration.
4410         * lex.c (compiler_error): Remove definition.
4411
4412 2002-06-14  Steve Ellcey  <sje@cup.hp.com>
4413
4414         * g++spec.c (LIBUNWIND): New.
4415         (lang_specific_driver): Add it if USE_UNWIND_EXCEPTIONS is set.
4416
4417 2002-06-13  Jessica Han  <jessica@cup.hp.com>
4418
4419         * class.c (build_vtable): Use TARGET_VTABLE_ENTRY_ALIGN.
4420         (build_vtbl_initializer): Honor TARGET_VTABLE_DATA_ENTRY_DISTANCE.
4421         (build_vbase_offset_vtbl_entries): Likewise.
4422         * rtti.c (build_headof): Likewise.
4423         (get_tinfo_decl_dynamic): Likewise.
4424         (create_pseudo_type_info): Likewise.
4425
4426 2002-06-12  Stan Shebs  <shebs@apple.com>
4427
4428         * mpw-config.in: Remove file, no longer used.
4429         * mpw-make.sed: Ditto.
4430
4431 2002-06-07  Zack Weinberg  <zack@codesourcery.com>
4432
4433         * decl2.c: Update call to cpp_handle_option.
4434
4435 2002-06-07  H.J. Lu  (hjl@gnu.org)
4436
4437         * decl2.c (flag_use_cxa_atexit): Set to DEFAULT_USE_CXA_ATEXIT.
4438
4439 2002-06-06  Gabriel Dos Reis  <gdr@codesourcery.com>
4440
4441         * error.c (cp_error_at): Fix typo.
4442
4443 2002-06-04  Gabriel Dos Reis  <gdr@codesourcery.com>
4444
4445         * error.c (cp_diagnostic_starter): Adjust call.
4446         (maybe_print_instantiation_context): Change prototype to take a
4447         'diagnostic_info *'.
4448         (print_instantiation_full_context): Likewise.
4449         (print_instantiation_partial_context): Likewise.
4450         (cp_diagnostic_starter): Likewise.
4451         (cp_diagnostic_finalizer): Likewise.
4452         (cp_print_error_function): Likewise.
4453         (cp_printer): Take a secondary parameter as a 'text_info *'.
4454         Remove output_state savings.  Adjust calls.
4455
4456 2002-06-03  Geoffrey Keating  <geoffk@redhat.com>
4457
4458         * pt.c (inline_parm_levels): Mark for GC.
4459
4460         * mangle.c (start_mangling): Allocate G.substitutions here...
4461         (init_mangle): ... rather than here.
4462         (finish_mangling): Clear the varray pointer when done with it.
4463         * spew.c (yylexstring): Don't use VARRAY_FREE.
4464         * search.c (bfs_walk): Don't use VARRAY_FREE.
4465         * decl2.c (pending_statics): Use gengtype to mark.
4466         (deferred_fns): Likewise.
4467         (ssdf_decls): Likewise.
4468         (init_decl2): Delete.
4469         * decl.c (pop_from_top_level): Don't use VARRAY_FREE.
4470         (cxx_init_decl_processing): Don't call init_decl2.
4471         (cxx_pop_function_context): Don't use VARRAY_FREE.
4472         * cp-tree.h (struct saved_scope): No need for special marking
4473         of varrays.
4474         (struct language_function): Likewise.
4475         (local_classes): Use gengtype to mark.
4476         (init_decl2): Delete prototype.
4477         * class.c (init_class_processing): Don't use
4478         ggc_add_tree_varray_root.
4479         (build_vtbl_initializer): Don't use VARRAY_FREE.
4480
4481         * decl.c (typename_compare): Don't use same_type_p.
4482
4483         * decl.c: Include hashtab.h instead of hash.h.
4484         (typename_hash): Update to use htab_h.
4485         (typename_compare): Likewise.
4486         (typename_htab): Use gengtype to mark.
4487         (build_typename_type): Update to use htab_h.
4488         * Make-lang.in (cp/decl.o): Use HASHTAB_H instead of hash.h.
4489
4490         * Make-lang.in (gt-cp-tree.h): New rule.
4491         (cp/tree.o): Depend on gt-cp-tree.h.
4492         * config-lang.in (gtfiles): Add cp/tree.c.
4493         * tree.c: Include gt-cp-tree.h.
4494         (list_hash_table): Use gengtype to mark.
4495         (init_tree): Use gengtype to mark trees.
4496
4497         * Make-lang.in (cp/decl.o): Add debug.h dependency.
4498         * call.c (struct z_candidate): Use gengtype.
4499         (USER_CONV_CAND): Use WRAPPER_ZC.
4500         (convert_class_to_reference): Use build_zc_wrapper.
4501         (build_type_conversion_1): Likewise.
4502         (build_over_call): Use WRAPPER_ZC.
4503         (add_warning): Use build_zc_wrapper.
4504         * cp-lang.c (LANG_HOOKS_MARK_TREE): Delete.
4505         * cp-tree.h (struct lang_identifier): Use gengtype.
4506         (struct template_parm_index_s): Likewise.
4507         (struct ptrmem_cst): Likewise.
4508         (struct tree_binding): Likewise.
4509         (struct tree_overload): Likewise.
4510         (struct tree_srcloc): Likewise.
4511         (struct tree_wrapper): Likewise.  Also modify to have a pointer
4512         to struct z_candidate rather than void.
4513         (enum cp_tree_node_structure_enum): New.
4514         (union lang_tree_node): New.
4515         (cxx_mark_tree): Delete prototype.
4516         (cp_tree_node_structure): New prototype.
4517         (build_ptr_wrapper): Delete prototype.
4518         (build_int_wrapper): Delete prototype.
4519         (build_zc_wrapper): New prototype.
4520         * decl.c: Include debug.h
4521         (cxx_mark_tree): Delete.
4522         (cp_tree_node_structure): New.
4523         * tree.c (build_ptr_wrapper): Delete.
4524         (build_int_wrapper): Delete.
4525         (build_zc_wrapper): New.
4526
4527         * cp-tree.h [! ENABLE_TREE_CHECKING] (LANG_TYPE_PTRMEM_CHECK):
4528         Correct typo.  Patch from k_fukui@highway.ne.jp.
4529
4530         * semantics.c (current_stmt_tree): Update for change to
4531         struct language_function.
4532         (finish_mem_initializers): Likewise.
4533         * decl.c (cxx_init_decl_processing): Don't set mark_lang_status.
4534         * cp-tree.h (struct language_function): Rename from
4535         cp_language_function.  Change all uses.
4536         (cp_function_chain): Don't need to cast.
4537
4538         * class.c (duplicate_tag_error): Reset discriminator.
4539         (check_bases_and_members): Update for data structure changes.
4540         * cp-tree.h (struct lang_id2): Use gengtype.
4541         (flagged_type_tree): Likewise.
4542         (SET_LANG_ID): Use GGC on struct lang_id2.
4543         (struct cp_language_function): Use gengtype.  Remove field
4544         'x_vcalls_possible_p'.
4545         (current_vcalls_possible_p): Delete.
4546         (struct lang_type_header): New.
4547         (struct lang_type_class): Rename from struct lang_type.  Include
4548         struct lang_type_header.
4549         (struct lang_type_ptrmem): New.
4550         (struct lang_type): New.
4551         (LANG_TYPE_CLASS_CHECK): New.  Use it in all the appropriate macros.
4552         (LANG_TYPE_PTRMEM_CHECK): New.  Use it in all the appropriate macros.
4553         (TYPE_SET_PTRMEMFUNC_TYPE): Set discriminator, update for changes.
4554         (struct lang_decl_flags): Use gengtype.  Add discriminators.
4555         (struct lang_decl): Use gengtype.  Add and use discriminators.
4556         Update the macros that reference moved fields.
4557         (LANG_DECL_U2_CHECK): New function.  Use it when appropriate.
4558         (SET_DECL_THUNK_P): Set discriminator too.
4559         (clear_inline_text_obstack): Delete prototype.
4560         (finish_inline_definitions): Delete prototype.
4561         (mark_pending_inlines): Delete prototype.
4562         (lang_check_failed): New prototype.
4563         * decl.c (struct named_label_use_list): Use gengtype.
4564         (struct named_label_list): Likewise.
4565         (mark_binding_level): Delete.
4566         (mark_named_label_lists): Delete.
4567         (push_local_name): Set discriminator on DECL_LANG_SPECIFIC.
4568         (cxx_init_decl_processing): Use generated marker routine.
4569         (begin_destructor_body): Delete dead set to
4570         current_vcalls_possible_p.
4571         (mark_lang_function): Delete.
4572         (mark_cp_function_context): Delete.
4573         (lang_mark_tree): Use generated marker routines.
4574         * decl2.c (start_objects): Set discriminator when setting
4575         GLOBAL_INIT_PRIORITY.
4576         * lex.c (retrofit_lang_decl): Set discriminators.
4577         (copy_lang_type): Update for changes to lang_type structure.
4578         (cp_make_lang_type): Set discriminator.
4579         * parse.y: Use gengtype on YYLVAL.  Don't use dots in identifiers.
4580         * search.c: Include ggc.h.
4581         * semantics.c (anon_aggr_type_p): Use the macro, don't hand-code it.
4582         (finish_inline_definitions): Delete.
4583         * spew.c (struct token): Use gengtype.
4584         (struct token_chunk): New.
4585         (struct unparsed_text): Use gengtype.  Store tokens in chunks.
4586         (struct feed): Use gengtype.
4587         (feed_obstack): Delete.
4588         (feed): Mark as GC root.
4589         (pending_inlines): Mark as GC root.
4590         (pending_inlines_tail): Likewise.
4591         (processing_these_inlines): Likewise.
4592         (token_obstack): Make static.
4593         (first_token): Likewise.
4594         (init_spew): Don't initialize deleted things; use gengtype for roots.
4595         (clear_inline_text_obstack): Delete.
4596         (feed_input): Use GC for struct feed.  Update for changes to
4597         struct unparsed_text.
4598         (mark_pending_inlines): Delete.
4599         (next_token): Rename from add_token.  Change all callers.  Update
4600         for changes to struct unparsed_text.
4601         (space_for_token): New.
4602         (remove_last_token): New.
4603         (alloc_unparsed_text): New.
4604         (snarf_block): Take an unparsed_text.  Update for changes to struct
4605         unparsed_text.
4606         (snarf_method): Update for changes to struct unparsed_text.
4607         (snarf_defarg): Update for changes to struct unparsed_text.
4608         * tree.c (lang_check_failed): New.
4609
4610         * Make-lang.in (gt-cp-call.h gt-cp-decl2.h gt-cp-parse.h
4611         gt-cp-pt.h gt-cp-repo.h gt-cp-spew.h): New rules.
4612         (cp/spew.o): Add dependency on gt-<filename>.h.
4613         (cp/decl2.o): Add dependency on gt-<filename>.h.
4614         (cp/call.o): Add dependency on gt-<filename>.h.
4615         (cp/pt.o): Add dependency on gt-<filename>.h.
4616         (cp/repo.o): Add dependency on gt-<filename>.h.
4617         (cp/parse.o): Add dependency on gt-<filename>.h.
4618         * call.c: Use gengtype for roots.
4619         * config-lang.in (gtfiles): Add cp-tree.h decl.h lex.h call.c
4620         decl2.c parse.y pt.c repo.c spew.c.
4621         * cp-tree.h: Use gengtype for roots.
4622         (struct saved_scope): Use GGC, gengtype.
4623         (cp_parse_init): Delete prototype.
4624         (init_pt): Delete prototype.
4625         * decl.c: Use gengtype for roots.
4626         (mark_saved_scope): Delete.
4627         (cxx_init_decl_processing): Don't call deleted initilisation
4628         routines.
4629         (signed_size_zero_node): Delete, unused.
4630         * decl.h: Use gengtype for roots.
4631         * decl2.c: Use gengtype for roots.
4632         * lex.h: Use gengtype for roots.
4633         * parse.y: Use gengtype for roots.
4634         (cp_parse_init): Delete.
4635         * pt.c: Use gengtype for roots.
4636         (init_pt): Delete.
4637         * repo.c: Use gengtype for roots.
4638         * spew.c: Use gengtype for roots.
4639
4640         * Make-lang.in: Allow for filename changes.  Add gtype-cp.h.
4641         (cp/decl.o): Add dependency on gtype-cp.h.
4642         * decl.c: Remove use of add_deletable_root, use GTY marker instead.
4643         Include gtype-cp.h.  Allow for filename changes.
4644
4645         * Make-lang.in (cp/gt-decl.h): Generate using gengtype.
4646         (cp/decl.o): Add cp/gt-decl.h dependency.
4647         * config-lang.in (gtfiles): New.
4648         * tree.h: Rename struct binding_level to struct cp_binding_level.
4649         * decl.c: Rename struct binding_level to struct cp_binding_level.
4650         Include cp/gt-decl.h.
4651         (struct cp_binding_level): Use gengtype.
4652         (make_binding_level): Use GGC on struct cp_binding_level.
4653         (mark_binding_level): Use gt_ggc_m_cp_binding_level.
4654         (cxx_init_decl_processing): Mark free_binding_level as
4655         deletable.
4656
4657         * decl.c (mark_cp_function_context): Update calling sequence.
4658
4659         * decl.c (start_function): Don't free 'struct
4660         cp_language_function'.
4661         (pop_cp_function_context): Likewise.
4662         (save_function_data): Allocate it using GC.
4663         * semantics.c (genrtl_start_function): Don't free 'struct
4664         cp_language_function'.
4665
4666 2002-05-31  Matthew Woodcraft  <mattheww@chiark.greenend.org.uk>
4667
4668         * lang-specs.h: Use cpp_debug_options.
4669
4670 2002-05-28  Zack Weinberg  <zack@codesourcery.com>
4671
4672         * mangle.c, tree.c: Include real.h.
4673         * Make-lang.in: Update dependency lists.
4674
4675 2002-05-25  Neil Booth  <neil@daikokuya.demon.co.uk>
4676
4677         * lex.c: Don't include c-lex.h.
4678         * parse.y, spew.c: Don't include c-lex.h; include c-pragma.h.
4679
4680 2002-05-23  Neil Booth  <neil@daikokuya.demon.co.uk>
4681
4682         * spew.c (yyungetc, snarf_block): Remove indent_level handling.
4683
4684 2002-05-22  Richard Henderson  <rth@redhat.com>
4685
4686         * decl.c (obscure_complex_init): Check for VAR_DECL
4687         before using DECL_THREAD_LOCAL.
4688
4689 2002-05-22  Richard Henderson  <rth@redhat.com>
4690
4691         * decl.c (check_tag_decl): Handle RID_THREAD.
4692         (obscure_complex_init): Reject run-time init of tls.
4693         (grokvardecl, grokdeclarator): Handle RID_THREAD.
4694         * lex.c (reswords): Add __thread.
4695         (rid_to_yy): Map RID_THREAD to SCSPEC.
4696
4697 2002-05-22  Neil Booth  <neil@daikokuya.demon.co.uk>
4698
4699         * cp-lang.c (LANG_HOOKS_POST_OPTIONS): Use c_common_post_options.
4700         * cp-tree.h (cxx_post_options): Kill.
4701         * cp-lex.c (cxx_post_options): Kill.
4702
4703 2002-05-21  Richard Henderson  <rth@redhat.com>
4704
4705         * lex.c (rid_to_yy): Add RID_THREAD.
4706
4707 2002-05-21  Alexandre Oliva  <aoliva@redhat.com>
4708
4709         * init.c (build_vec_init): Test for trivial copy-assignment when
4710         copy-assigning arrays.
4711
4712 2002-05-20  Andreas Jaeger  <aj@suse.de>
4713
4714         * init.c (build_default_init): Remove unused variable.
4715
4716 2002-05-20  Alexandre Oliva  <aoliva@redhat.com>
4717
4718         * call.c (any_strictly_viable): New.
4719         (build_new_op): Use it for COMPOUND_EXPR and ADDR_EXPRs.
4720
4721 2002-05-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4722
4723         * error.c (dump_type) [TYPEOF_TYPE]: Fix parenthesis printing.
4724
4725 2002-05-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4726
4727         PR c++/186, DR 259
4728         * pt.c (do_decl_instantiation): Don't complain explicit
4729         instantiation after explicit specialization.
4730         (do_type_instantiation): Likewise.
4731
4732 2002-05-19  Alexandre Oliva  <aoliva@redhat.com>
4733
4734         * cp-tree.h (complete_type_or_diagnostic): Changed prototype,
4735         renamed from...
4736         (complete_type_or_else): ... this.  Redefined as macro.
4737         (cxx_incomplete_type_diagnostic): Declare.
4738         (cxx_incomplete_type_error): Define as macro.
4739         * init.c (build_delete): Warn about incomplete types other than
4740         void, and use the built-in operator delete for them.
4741         * typeck.c (complete_type_or_diagnostic): Renamed from
4742         complete_type_or_else.  Added warn_only argument, passed to...
4743         * typeck2.c (cxx_incomplete_type_diagnostic): ... this.  Print
4744         warnings or errors depending on new warn_only argument.  Renamed
4745         from...
4746         (cxx_incomplete_type_error): ... this.  New implementation in
4747         terms of cxx_incomplete_type_diagnostic.
4748
4749 2002-05-18  Jason Merrill  <jason@redhat.com>
4750
4751         PR c++/6611
4752         * decl2.c (import_export_decl): If we clear
4753         DECL_NOT_REALLY_EXTERN, make sure DECL_EXTERNAL is set.
4754
4755 2002-05-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4756
4757         PR c++/6620
4758         * pt.c (verify_class_unification): Don't check if PARM is template
4759         parameter dependent.  Simplify.
4760         (unify) [TEMPLATE_PARM_INDEX]: Handle when ARG is a template
4761         parameter dependent expression.
4762
4763 2002-05-14  Jason Merrill  <jason@redhat.com>
4764
4765         * rtti.c (get_tinfo_decl): Don't call comdat_linkage.
4766         Do set DECL_COMDAT.
4767         (synthesize_tinfo_var): Take the public decl.
4768         (create_real_tinfo_var): Likewise.  Check DECL_COMDAT.
4769         (emit_tinfo_decl): Adjust.  Call import_export_decl.
4770         * decl2.c (import_export_decl): Simplify tinfo decl handling.
4771
4772 2002-05-14  Alexandre Oliva  <aoliva@redhat.com>
4773
4774         * cp-tree.h (struct lang_type): Added non_zero_init.
4775         (CLASSTYPE_NON_ZERO_INIT_P): New macro.
4776         (zero_init_p, force_store_init_value, build_forced_zero_init): Declare.
4777         * class.c (check_field_decls): Test non_zero_init.
4778         * cvt.c (convert_to_pointer_force): Use cp_convert_to_pointer for
4779         zero-to-NULL conversions.
4780         * decl.c (obscure_complex_init): Don't reset DECL_INITIAL of a
4781         type that needs zero-initialization without zeros.
4782         (check_initializer_decl): Compute zero-initializer for types
4783         that require a non-trivial one.
4784         * init.c (build_forced_zero_init): New function.
4785         (build_default_init): Use it.
4786         * tree.c (zero_init_p): New function.
4787         * typeck2.c (force_store_init_value): New function.
4788         (process_init_constructor): Create non-trivial zero-initializers
4789         for array members and class fields.
4790
4791 2002-05-14  Neil Booth  <neil@daikokuya.demon.co.uk>
4792
4793         * lang-specs.h: Remove redundant -lang-c++.
4794
4795 2002-05-13  Jason Merrill  <jason@redhat.com>
4796
4797         * class.c (build_vtbl_ref_1): Use fixed_type_or_null.
4798         (fixed_type_or_null): See through reference vars.
4799         (build_base_path): Vtable contents are constant.
4800         * typeck.c (get_member_function_from_ptrfunc): Likewise.
4801
4802 2002-05-12  Jason Merrill  <jason@redhat.com>
4803
4804         * cp-lang.c (ok_to_generate_alias_set_for_type): Backend-created
4805         structs are safe.
4806
4807 2002-05-09  Neil Booth  <neil@daikokuya.demon.co.uk>
4808
4809         * cp-tree.h (flag_ansi): Remove.
4810         * decl2.c (flag_ansi): Remove.
4811         (cxx_decode_option): Set flag_iso and flag_undef.
4812
4813 2002-05-09  Jason Merrill  <jason@redhat.com>
4814
4815         * typeck.c (get_member_function_from_ptrfunc): Reorganize.
4816         Use subtraction rather than a bitmask to get the index.
4817         * cvt.c (cp_convert_to_pointer): Bail on an error_mark_node.
4818
4819         * pt.c (tsubst_expr) [ASM_STMT]: Copy ASM_INPUT_P.
4820
4821 2002-05-07  Neil Booth  <neil@daikokuya.demon.co.uk>
4822
4823         * Make-lang.in (decl2.o): Update.
4824         * cp-tree.h (warn_multichar): Remove.
4825         * decl2.c: Include c-common.h.
4826         (warn_multichar): Remove.
4827
4828 2002-05-03  Jason Merrill  <jason@redhat.com>
4829
4830         * tree.c (build_cplus_array_type): Only const and volatile get
4831         special handling.
4832
4833         * decl.c (BOOL_TYPE_SIZE): Move default to defaults.h.
4834
4835 2002-04-30  Mark Mitchell  <mark@codesourcery.com>
4836
4837         ABI change, returning simple classes from functions.
4838         * class.c (finish_struct_bits): Only mark TREE_ADDRESSABLE if
4839         TYPE_HAS_TRIVIAL_INIT_REF is false or
4840         TYPE_HAS_NONTRIVIAL_DESTRUCTOR is true.
4841
4842 2002-04-30  Jason Merrill  <jason@redhat.com>
4843
4844         PR debug/6436
4845         * decl.c (grokdeclarator): Don't override TYPE_NAME of an
4846         anonymous class with a typedef if there are attributes.
4847
4848 2002-04-29  Paul Eggert  <eggert@twinsun.com>
4849
4850         * parse.y (nomods_initdcl0): Replace $<ttype>3 with $<ttype>$.
4851
4852 2002-04-29  Jakub Jelinek  <jakub@redhat.com>
4853
4854         PR c++/6477
4855         * decl.c (follow_tag_typedef): Check if TYPE_NAME (original) is
4856         non-NULL first.
4857
4858 2002-04-29  Mark Mitchell  <mark@codesourcery.com>
4859
4860         PR c++/6492
4861         * pt.c (tsubst_friend_class): If the friend has an explicit scope,
4862         enter that scope before name lookup.
4863
4864         PR c++/6486
4865         * method.c (do_build_copy_constructor): Avoid building
4866         cv-qualified reference types.
4867
4868 2002-04-29  Nathan Sidwell  <nathan@codesourcery.com>
4869
4870         PR c++/5719
4871         * decl.c (grok_op_properties): Assignment ops don't have to return
4872         by value. operator% should.
4873
4874 2002-04-28  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
4875
4876         PR c/6343
4877         * decl.c (duplicate_decls): Call merge_weak.
4878
4879 2002-04-26  Richard Henderson  <rth@redhat.com>
4880
4881         * parse.y (malloced_yyss, malloced_yyvs): New.
4882         (yyoverflow): Re-add.  Set them.
4883         (free_parser_stacks): New.
4884
4885 2002-04-26  Mark Mitchell  <mark@codesourcery.com>
4886
4887         PR c++/6497
4888         * method.c (do_build_assign_ref): Pass a derivation to
4889         build_method_call when calling base class assignment operators.
4890
4891 2002-04-26  Richard Henderson  <rth@redhat.com>
4892
4893         * parse.y (yyoverflow): Revert.
4894
4895 2002-04-26  Richard Henderson  <rth@redhat.com>
4896
4897         PR c/3581
4898         * parse.y (string): Remove.  Update all uses to use STRING
4899         instead, and not call combine_strings.
4900         * rtti.c (tinfo_name): Use fix_string_type.
4901         * semantics.c (finish_asm_stmt): Don't call combine_strings.
4902         * spew.c (yylexstring): New.
4903         (read_token): Use it.
4904
4905 2002-04-25  Richard Henderson  <rth@redhat.com>
4906
4907         PR c/2161
4908         * parse.y (yyoverflow): New.
4909
4910 2002-04-25  Jason Merrill  <jason@redhat.com>
4911
4912         PR c++/5607
4913         * search.c (check_final_overrider): No longer static.
4914         * class.c (update_vtable_entry_for_fn): Call it.
4915         * cp-tree.h: Adjust.
4916
4917 2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>
4918
4919         * cp-lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.
4920         * cp-tree.h (cxx_set_yydebug): Die.
4921         * lex.c (YYDEBUG): Get from c-lex.h.
4922         (cxx_set_yydebug): Remove.
4923         * parse.y: Include c-lex.h.
4924         (YYDEBUG): Get from c-lex.h.
4925
4926 2002-04-24  Mark Mitchell  <mark@codesourcery.com>
4927
4928         PR c++/6438.
4929         * cvt.c (convert_to_void): Don't unconditionally make COND_EXPRs
4930         void.
4931
4932 2002-04-24  Neil Booth  <neil@daikokuya.demon.co.uk>
4933
4934         * cp-lang.c (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE,
4935         LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE, LANG_HOOKS_ATTRIBUTE_TABLE):
4936         Redefine.
4937         * cp-tree.h (cp_attribute_table): Rename.
4938         * decl.c (lang_attribute_table): Remove declaration.
4939         (cxx_init_decl_processing): Don't set it.
4940         * tree.c (cp_attribute_table): Rename.
4941
4942 2002-04-24  Jason Merrill  <jason@redhat.com>
4943
4944         PR c++/6331
4945         * method.c (do_build_copy_constructor): Use cp_build_qualified_type.
4946         * typeck.c (build_modify_expr): Allow arrays to differ in cv-quals.
4947         The pedwarn for array assignment is now unconditional.
4948         * tree.c (build_cplus_array_type_1): Still process simple array types
4949         normally in templates.
4950
4951         PR c++/6395
4952         * decl.c (make_rtl_for_nonlocal_decl): Don't mess with #pragma i/i
4953         stuff for comdats.
4954
4955 2002-04-23  Jakub Jelinek  <jakub@redhat.com>
4956
4957         * parse.y (check_class_key): Allow KEY to be union/enum/struct/class
4958         node with attributes.
4959
4960 2002-2-23  David O'Brien  <obrien@FreeBSD.org>
4961
4962         * g++spec.c (MATH_LIBRARY_PROFILE, LIBSTDCXX_PROFILE): Add.
4963         Use MATH_LIBRARY_PROFILE and LIBSTDCXX_PROFILE if profile flag given.
4964
4965 2002-04-23  Mark Mitchell  <mark@codesourcery.com>
4966
4967         PR c++/6256:
4968         * pt.c (tsubst_friend_class): Handle templates with explicit
4969         nested names.
4970
4971         PR c++/6331:
4972         * typeck.c (merge_types): Remember the cv-qualification of pointer
4973         types when merging them.
4974
4975 2002-04-20  Neil Booth  <neil@daikokuya.demon.co.uk>
4976
4977         * cp-lang.c (LANG_HOOKS_FUNCTION_INIT,
4978         LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_MARK): Redefine.
4979         * cp-tree.h (cxx_push_function_context, cxx_pop_function_context,
4980         cxx_mark_function_context): New.
4981         * decl.c (push_cp_function_context, pop_cp_function_context,
4982         mark_cp_function_context): Rename for consistency.
4983         (cxx_init_decl_processing): Don't set old hooks.
4984
4985 2002-04-19  Neil Booth  <neil@daikokuya.demon.co.uk>
4986
4987         * call.c (convert_type_from_ellipsis): Rename, update.
4988         * cp-lang.c (LANG_HOOKS_TYPE_PROMOTES_TO): Redefine.
4989         * cp-tree.h (convert_type_from_ellipsis): Rename.
4990         * decl.c (cxx_init_decl_processing): Don't set hook.
4991
4992 2002-04-18  Neil Booth  <neil@daikokuya.demon.co.uk>
4993
4994         * call.c (build_new_method_call): Update.
4995         * cp-lang.c (LANG_HOOKS_INCOMPLETE_TYPE_ERROR): Redefine.
4996         * cp-tree.h (cxx_incomplete_type_error): New.
4997         * decl.c (grokdeclarator, grokparms): Update.
4998         * decl2.c (check_classfn): Update.
4999         * pt.c (tsubst): Update.
5000         * typeck.c (complete_type_or_else, expr_sizeof,
5001         decay_conversion): Update.
5002         * typeck2.c (incomplete_type_error): Rename.
5003         (add_exception_specifier): Update.
5004
5005 2002-04-18  Jason Merrill  <jason@redhat.com>
5006
5007         PR c++/5658
5008         * search.c (setup_class_bindings): A class template qualifies as a
5009         type binding.
5010
5011 2002-04-17  Jakub Jelinek  <jakub@redhat.com>
5012
5013         PR c++/6316
5014         * decl2.c (finish_file): Clear DECL_EXTERNAL in a separate loop
5015         before expanding.
5016
5017 2002-04-16  Mark Mitchell  <mark@codesourcery.com>
5018
5019         * init.c (begin_init_stmts): Remove commented out code.
5020         (finish_init_stmts): Set STMT_EXPR_NO_SCOPE.
5021         * semantics.c (begin_gobal_stmt_expr): Adjust call to
5022         expand_start_stmt_expr.
5023
5024 2002-04-15  Mark Mitchell  <mark@codesourcery.com>
5025
5026         * decl.c (register_dtor_fn): Pass the address of dso_handle, not
5027         dso_handle itself, to __cxa_atexit.
5028
5029 2002-04-15  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
5030
5031         * error.c (cxx_print_error_function): Adjust call to macros.
5032
5033 2002-04-14  Jakub Jelinek  <jakub@redhat.com>
5034
5035         * class.c (layout_virtual_bases): Do all dsize computation on trees.
5036
5037 2002-04-14  Jason Merrill  <jason@redhat.com>
5038
5039         * typeck.c (get_member_function_from_ptrfunc): Don't do
5040         gratuitious division and multiplication on
5041         ptrmemfunc_vbit_in_delta targets.
5042
5043 2002-04-12  Mark Mitchell  <mark@codesourcery.com>
5044
5045         PR c++/5373.
5046         * semantics.c (finish_expr_stmt): Remember the type of the
5047         expression before any conversions are performed.
5048
5049 2002-04-12  Mark Mitchell  <mark@codesourcery.com>
5050
5051         PR c++/5189.
5052         * call.c (add_template_candidate_real): Do not treat member
5053         templates as copy constructors.
5054
5055 2002-04-12  Mark Mitchell  <mark@codesourcery.com>
5056
5057         * decl.c (duplicate_decls): Do not copy the RTL for a variable
5058         declaration if the old variable had an incomplete type and the new
5059         variable does not.
5060         (complete_vars): Do not call layout_decl for completed variables.
5061
5062 2002-04-12  Richard Sandiford  <rsandifo@redhat.com>
5063
5064         * decl.c (duplicate_decls): Don't try to unify an implicit typedef
5065         with an explicit one.
5066         (follow_tag_typedef): New.
5067         (lookup_tag): Use it to extract the tag of an explicit typedef.
5068         (xref_tag): Likewise.
5069
5070 2002-04-11  Andrew Haley  <aph@redhat.com>
5071
5072         * typeck.c (type_after_usual_arithmetic_conversions):
5073         If two types have the same variant, return immediately.
5074         When two floating-point operands are the same precision:
5075           convert to float if one of the operands is float;
5076           if neither operand is one of the standard types, return the type
5077           of the first operand.
5078
5079 2002-04-10  Nathan Sidwell  <nathan@codesourcery.com>
5080
5081         PR c++/5507
5082         * decl.c (make_typename_type): Remove implicit typenameness.
5083
5084 2002-04-09  Jason Merrill  <jason@redhat.com>
5085
5086         PR optimization/6189
5087         * semantics.c (genrtl_start_function): Don't free
5088         DECL_SAVED_FUNCTION_DATA for inline functions.
5089
5090         * init.c (build_member_call): For now, don't convert to
5091         intermediate base if it would cause an error.
5092
5093 2002-04-08  Paolo Carlini  <pcarlini@unitus.it>
5094
5095         * parse.y (namespace_qualifier, maybe_identifier,
5096         begin_explicit_instantiation, end_explicit_instantiation,
5097         apparent_template_type, .finish_template_type,
5098         do_id, maybe_init, defarg_again, component_decl_1):
5099         Add ending ';', in accordance with POSIX.
5100
5101 2002-04-06  Mark Mitchell  <mark@codesourcery.com>
5102
5103         PR c++/5571
5104         * class.c (layout_class_type): Remember incomplete static
5105         variables.
5106         (finish_struct_1): Call complete_vars, not
5107         hack_incomplete_structures.
5108         * cp-tree.h (hack_incomplete_structures): Rename to ...
5109         (complete_vars): ... this.
5110         (struct saved_scope): Remove incomplete.
5111         (namespace_scope_incomplete): Remove.
5112         * decl.c (struct binding_level): Remove incomplete.
5113         (incomplete_vars): New variable.
5114         (mark_binding_level): Don't mark incomplete.
5115         (print_binding_level): Don't print it.
5116         (mark_saved_scope): Don't mark incomplete.
5117         (pushdecl): Use maybe_register_incopmlete_var.
5118         (cxx_init_decl_processing): Register incomplete_vars for GC.
5119         (start_decl_1): Clarify error message.
5120         (hack_incomplete_vars): Remove.
5121         (maybe_register_incomplete_var): New function.
5122         (complete_vars): Likewise.
5123
5124 2002-04-06  Jason Merrill  <jason@redhat.com>
5125
5126         PR c++/4934
5127         * error.c (dump_expr) [CONVERT_EXPR]: Make sure TREE_TYPE (t) is
5128         set before checking it.
5129
5130         PR c++/525
5131         * init.c (build_member_call): Use build_scoped_ref.
5132         (resolve_offset_ref): Likewise.
5133         * call.c (build_scoped_method_call): Likewise.
5134         * tree.c (maybe_dummy_object): Kludge around current_class_type being
5135         wrong.
5136         * typeck2.c (build_scoped_ref): Return the binfo via binfo_p parm.
5137         * cp-tree.h: Adjust.
5138
5139         * init.c (push_base_cleanups): Just use build_scoped_method_call.
5140
5141         PR c++/6179
5142         * method.c (implicitly_declare_fn): Pass unqualified type to
5143         synthesize_exception_spec.
5144
5145 2002-04-04  Neil Booth  <neil@daikokuya.demon.co.uk>
5146
5147         * cp-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
5148         * cvt.c: Update comment.
5149         * init.c (expand_cleanup_for_base): Update.
5150         * semantics.c (finish_parenthesized_expr): Update.
5151         * typeck.c (cp_truthvalue_conversion): Update.
5152
5153 2002-04-04  Jason Merrill  <jason@redhat.com>
5154
5155         * semantics.c (finish_eh_cleanup): New fn.
5156         * cp-tree.h: Add prototype.
5157         * init.c (perform_member_init, expand_cleanup_for_base): Use
5158         finish_eh_cleanup.
5159         * cp-tree.def (SUBOBJECT, CTOR_STMT): Remove.
5160         * cp-tree.h: Remove references.
5161         * decl.c (begin_constructor_body, end_constructor_body): Likewise.
5162         * dump.c (cp_dump_tree): Likewise.
5163         * pt.c (tsubst_expr): Likewise.
5164         * semantics.c (genrtl_ctor_stmt, genrtl_subobject): Remove.
5165         (cp_expand_stmt): Remove handling of CTOR_STMT and SUBOBJECT.
5166         * tree.c (cp_statement_code_p): Likewise.
5167
5168         * init.c (build_new_1): Set CLEANUP_EH_ONLY on deleting cleanup.
5169
5170         PR c++/5636
5171         * semantics.c (nullify_returns_r): Just set CLEANUP_EH_ONLY on
5172         cleanup for nrv.
5173
5174         PR c++/5104
5175         * typeck.c (comptypes) [FUNCTION_TYPE]: Don't compare exception
5176         specifiers.
5177         [METHOD_TYPE]: Use same code as FUNCTION_TYPE.
5178
5179 2002-04-03  Richard Henderson  <rth@redhat.com>
5180
5181         * cp-lang.c (cxx_warn_unused_global_decl): New.
5182         (LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): New.
5183
5184 2002-04-03  Neil Booth  <neil@daikokuya.demon.co.uk>
5185
5186         * cp-lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): Redefine.
5187         * tree.c (init_tree): Don't set hook.
5188
5189 2002-04-03  Roger Sayle  <roger@eyesopen.com>
5190
5191         PR c++/5998:
5192         * decl.c (duplicate_decls): Don't mess with assembler names when
5193         redeclaring builtin functions as static.
5194
5195 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
5196
5197         * call.c (build_addr_func): Update.
5198         * class.c (resolve_address_of_overloaded_function): Update.
5199         * cp-lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
5200         * cp-tree.h (cxx_mark_addressable): New.
5201         * decl.c (register_dtor_fn, cxx_maybe_build_cleanup): Update.
5202         * decl2.c (build_cleanup): Update.
5203         * except.c (build_throw): Update.
5204         * init.c (resolve_offset_ref): Update.
5205         * pt.c (convert_nontype_argument): Update.
5206         * semantics.c (finish_asm_stmt, simplify_affr_init_exprs_r): Update.
5207         * typeck.c (decay_conversion, build_array_ref, build_unary_op,
5208         unary_complex_lvalue): Update.
5209         (mark_addressable): Rename.
5210
5211 2002-04-01  Roger Sayle  <roger@eyesopen.com>
5212
5213         PR c++/5998:
5214         * decl.c (duplicate_decls):  Overwrite the RTL when (and only
5215         when) overwriting a built-in function.  Don't use COPY_DECL_RTL,
5216         but follow the SET_DECL_RTL idiom used elsewhere in the function.
5217
5218 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
5219
5220         * cp-lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
5221         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
5222         * decl.c (grokdeclarator): Update.
5223         * mangle.c (write_integer_cst): Update.
5224         * typeck.c (build_binary_op): Update.
5225
5226 2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>
5227
5228         * cp-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Redefine.
5229         * lex.c (cxx_init): Don't set hook.
5230
5231 2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>
5232
5233         * Make-lang.in (error.o): Update.
5234         * cp-lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine.
5235         * cp-tree.h (struct diagnostic_context): Predeclare.
5236         (cxx_print_error_function): New.
5237         * error.c: Include langhooks-def.h.
5238         (lang_print_error_function): Rename.  Update.
5239         (init_error): Don't set hook.
5240
5241 2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>
5242
5243         * cp-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
5244         Redefine.
5245         * cvt.c (cp_convert_to_pointer, type_promotes_to): Use new hooks.
5246         * decl.c (finish_enum): Similarly.
5247         * error.c (dump_type): Similarly.
5248         * lex.c (cxx_init): Similarly.
5249         * mangle.c (write_builtin_type): Similarly.
5250         * typeck.c (comptypes): Similarly.
5251
5252 2002-03-28  Roger Sayle  <roger@eyesopen.com>
5253
5254         PR c++/5998:
5255         * decl.c (cxx_init_decl_processing): Re-enable built-in functions
5256         in the g++ front-end.
5257         (duplicate_decl): Allow redefinition of anticipated built-ins.
5258         Fix inlining problem by over-writing the old DECL_RTL.
5259         (lookup_namespace_name): Fail to find an identifier in the
5260         specified namespace if its still anticipated.
5261         (builtin_function_1): New function split out from builtin_function
5262         to create a builtin in the current namespace with given context.
5263         (builtin_function): Call builtin_function_1 to define the
5264         appropriate builtins in both the std and global namespaces.
5265         (select_decl): Don't test for anticipated decls here.
5266         (unqualified_namespace_lookup): Instead ignore them whilst
5267         searching through scopes and namespaces.
5268         * decl2.c (do_nonmember_using_decl): If a using declaration
5269         specifies an anticipated built-in function, mark it as no longer
5270         anticipated in that scope.
5271         (ambiguous_decl):  Avoid resolving to an anticipated decl.
5272         * lex.c (do_scoped_id): Fail to find an identifier in the global
5273         namespace if its still anticipated.
5274
5275 2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>
5276
5277         * cp-lang.c (LANG_HOOKS_MAKE_TYPE): Redefine.
5278         * cp-tree.h (cp_make_lang_type): Rename.
5279         * lex.c (cp_make_lang_type): Rename.
5280         (make_aggr_type): Update.
5281         * tree.c (init_tree): Don't set make_lang_type_fn.
5282
5283 2002-03-29  Jakub Jelinek  <jakub@redhat.com>
5284
5285         PR c++/6073
5286         * class.c (finish_struct_1): Update static field's DECL_MODE even
5287         if its type is a variant of t.
5288
5289 2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
5290
5291         * cp-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Redefine.
5292         * cp-tree.h (cxx_insert_default_attributes): New.
5293         * decl.c (insert_default_attributes): Rename.
5294
5295 2002-03-27  Mark Mitchell  <mark@codesourcery.com>
5296
5297         PR c++/4884
5298         * call.c (build_op_delete_call): Allow for the fact the placement
5299         may be a COMPOUND_EXPR.
5300
5301 2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
5302
5303         * cp-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
5304         * cp-tree.h (init_cplus_expand): Remove.
5305         (cxx_expand_expr): New.
5306         * expr.c (cplus_expand_expr): Rename cxx_expand_expr,
5307         fix prototype.
5308         (init_cplus_expand): Remove.
5309         * lex.c (cxx_init): Don't call init_cplus_expand.
5310
5311 2002-03-26  Mark Mitchell  <mark@codesourcery.com>
5312
5313         PR c++/4884.
5314         * init.c (build_new_1): Allow for the fact the result of
5315         build_function_call may be a COMPOUND_EXPR.
5316
5317 2002-03-26  Nathan Sidwell  <nathan@codesourcery.com>
5318
5319         PR c++/5682
5320         * cp-tree.h (BINFO_PRIMARY_P): Explain meaning better.
5321         (dfs_skip_nonprimary_vbases_unmarkedp): Remove.
5322         (dfs_skip_nonprimary_vbases_markedp): Remove.
5323         * search.c (get_shared_vbase_if_not_primary): Remove.
5324         (dfs_skip_nonprimary_vbases_unmarkedp): Remove.
5325         (dfs_skip_nonprimary_vbases_markedp): Remove.
5326         (dfs_unmarked_real_bases_queue_p): Just get the canonical binfo.
5327         (dfs_marked_real_bases_queue_p): Likewise.
5328
5329 2002-03-26  Neil Booth  <neil@daikokuya.demon.co.uk>
5330
5331         * cp-lang.c (LANG_HOOKS_MARK_TREE): Redefine.
5332         * cp-tree.h (cxx_mark_tree): New.
5333         * decl.c (lang_mark_tree): Rename cxx_mark_tree.
5334
5335 2002-03-25  Neil Booth  <neil@daikokuya.demon.co.uk>
5336
5337         * cp-tree.h (cxx_maybe_build_cleanup): New.
5338         * decl.c (destroy_local_var, hack_incomplete_structures): Update.
5339         (maybe_build_cleanup): Rename cxx_maybe_build_cleanup.
5340         * tree.c (build_target_expr): Update.
5341         * cp-lang.c (LANG_HOOKS_MAYBE_BUILD_CLEANUP): Redefine.
5342
5343 2002-03-24  Neil Booth  <neil@daikokuya.demon.co.uk>
5344
5345         * decl2.c (cxx_decode_option): Handle -E.
5346         * lang-specs.h (default_compilers): Preprocess with cc1plus.
5347         * lex.c (cxx_init): Exit quickly if c_common_init returns NULL.
5348
5349 2002-03-23  Jakub Jelinek  <jakub@redhat.com>
5350
5351         PR c++/6037
5352         * decl.c (start_enum): Don't set TREE_ADDRESSABLE on TREE_LIST node.
5353
5354 2002-03-23  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
5355
5356         * error.c (dump_type): Be careful about implicit typenames.
5357
5358 2002-03-21  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
5359
5360         PR C++/3656
5361         * semantics.c (finish_base_specifier): Handle erronous base
5362         classes.
5363
5364 2002-03-22  Zack Weinberg  <zack@codesourcery.com>
5365
5366         * error.c: Always use REAL_VALUE_TO_DECIMAL; don't test
5367         REAL_IS_NOT_DOUBLE.
5368
5369 2002-03-22  Jeff Knaggs  <jknaggs@redhat.com>
5370
5371         * typeck.c (get_member_function_from_ptrfunc): Scale idx down to
5372         an index into the vtable_entry array regardless of
5373         TARGET_PTRMEMFUNC_VBIT_LOCATION.
5374
5375 2002-03-21  Aldy Hernandez  <aldyh@redhat.com>
5376
5377         * tree.c (cp_cannot_inline_tree_fn): Same.
5378
5379 2002-03-21  Neil Booth  <neil@daikokuya.demon.co.uk>
5380
5381         * cp-tree.h (pushdecl, pushlevel, poplevel, set_block,
5382         insert_block, getdecls, global_bindings_p): New.
5383
5384 2002-03-20  Nathan Sidwell  <nathan@codesourcery.com>
5385
5386         PR c++/4361
5387         * mangle.c (struct globals) Add internal_mangling_p member.
5388         (write_template_param): Do internal mangling, if needed.
5389         (mangle_conv_op_name_for_type): Request internal mangling.
5390
5391 2002-03-20  Jason Merrill  <jason@redhat.com>
5392
5393         PR c++/2136
5394         * init.c (build_delete): Check access for a member op delete here.
5395         * decl2.c (delete_sanity): Not here.
5396
5397 2002-03-19  Jason Merrill  <jason@redhat.com>
5398
5399         PR c++/5118
5400         * class.c (get_vfield_name): Use the constructor_name.
5401
5402 2002-03-20  Neil Booth  <neil@daikokuya.demon.co.uk>
5403
5404         * cp-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
5405         * cp-tree.h (lang_printable_name): Rename.
5406         * error.c (lang_decl_name): Use new hook.
5407         * lex.c (cxx_init): Remove old hook.
5408         * pt.c (tsubst_decl): Use new hook.
5409         * tree.c (lang_printable_name): Rename.
5410
5411 2002-03-18  Eric Botcazou  <ebotcazou@multimania.com>
5412
5413         PR c++/3882
5414         * pt.c (tsubst_decl): Move __PRETTY_FUNCTION__ handling...
5415         (tsubst_expr) [DECL_STMT]: ...here. And substitute the initializer
5416         only after recording the declaration.
5417
5418 2002-03-18  Jason Merrill  <jason@redhat.com>
5419
5420         PR c++/2039
5421         * init.c (resolve_offset_ref): Hand off to build_component_ref.
5422
5423         PR c++/4222, c++/5995
5424         * call.c (build_over_call): Fix empty class logic.
5425
5426         PR c++/3870
5427         * cp-tree.h (struct saved_scope): Add last_parms field.
5428         * decl.c (maybe_push_to_top_level): Save last_function_parms.
5429         (pop_from_top_level): Restore it.
5430
5431         PR c++/4377
5432         * mangle.c (write_expression): Strip NOP_EXPRs sooner.  Also strip
5433         NON_LVALUE_EXPRs.
5434
5435         PR c++/4003
5436         * pt.c (tsubst_friend_function): Use decl_namespace_context.
5437
5438         PR c++/3948 -- C++ ABI change, followup to 2001-12-18 patch.
5439         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE for a
5440         type with a nontrivial destructor.
5441
5442 2002-03-17  Jason Merrill  <jason@redhat.com>
5443
5444         PR c++/4460
5445         * class.c (build_base_path): Virtual base layout is fixed in
5446         in-charge [cd]tors.
5447
5448 2002-03-17  Neil Booth  <neil@daikokuya.demon.co.uk>
5449
5450         * cp-lang.c (LANG_HOOKS_PARSE_FILE): Redefine.
5451         * parse.y (yyparse): Remove macro.
5452
5453 2002-03-17  Jason Merrill  <jason@redhat.com>
5454
5455         PR c++/5757
5456         * init.c (build_new_1): Pass the right pointer to op delete.
5457
5458 2002-03-16  Nathan Sidwell  <nathan@codesourcery.com>
5459
5460         PR c++/4361
5461         * cp-tree.h (CLASSTYPE_METHOD_VEC): Document where templated
5462         conversion operators go.
5463         (struct lang_decl_flags): Add template_conv_p and unused
5464         bitfields.
5465         (DECL_TEMPLATE_CONV_FN_P): New macro.
5466         * call.c (build_user_type_conversion_1): Don't check second type
5467         conversion of overload set first.
5468         * class.c (add_method): Make sure templated conversion operators
5469         all end up on slot 2.
5470         * lex.c (do_identifier): A conversion operator token might be
5471         satisfied by a templated conversion operator.
5472         * pt.c (check_explicit_specialization): Use
5473         CLASSTYPE_FIRST_CONVERSION_SLOT.
5474         (template_parm_this_level_p): New function.
5475         (push_template_decl_real): Determine DECL_TEMPLATE_CONV_FN_P.
5476         * search.c (lookup_fnfields_1): Template conversions will be on
5477         the first slot.
5478         * typeck.c (build_component_ref): Preserve the type of an
5479         conversion operator name on the overload type.
5480         (build_x_function_call): Retrieve the conversion operator name.
5481
5482 2002-03-15  Richard Henderson  <rth@redhat.com>
5483
5484         * init.c (build_new_1): Use size_binop instead of cp_build_binary_op.
5485
5486 2002-03-15  Mark Mitchell  <mark@codesourcery.com>
5487
5488         * cp-tree.h (CLEANUP_DECL): Remove.
5489         (CLEANUP_EXPR): Likewise.
5490         * decl.c (destroy_local_var): Simplify.
5491         (maybe_build_cleanup): Tidy.
5492         * dump.c (cp_dump_tree): Remove handling of CLEANUP_STMT.
5493         * semantics.c (cp_expand_stmt): Likewise.
5494         * cp/tree.c (cp_statement_code_p): Likewise.
5495
5496 2002-03-15  Jason Merrill  <jason@redhat.com>
5497
5498         PR c++/5857
5499         * decl.c (duplicate_decls): Use merge_types instead of common_type.
5500         * typeck.c (common_type): Just hand off to
5501         type_after_usual_arithmetic_conversions and
5502         composite_pointer_type.
5503         (merge_types): New fn.
5504         (commonparms): Use it instead of common_type.
5505         (type_after_usual_arithmetic_conversions): Also handle COMPLEX_TYPE.
5506         (composite_pointer_type): Also handle attributes.
5507         * cp-tree.h: Declare merge_types.
5508
5509         * decl.c (make_rtl_for_nonlocal_decl): Also defer COMDAT
5510         variables.
5511         * decl2.c (maybe_make_one_only): Also mark the decl as needed.
5512
5513 2002-03-14  Richard Henderson  <rth@redhat.com>
5514
5515         * decl.c: Include c-pragma.h.
5516         (start_decl, start_function): Invoke maybe_apply_pragma_weak.
5517         * Make-lang.in: Update dependencies.
5518
5519 2002-03-14  Jakub Jelinek  <jakub@redhat.com>
5520
5521         PR c++/5908
5522         * call.c (build_over_call): Set TREE_NO_UNUSED_WARNING too.
5523         * cvt.c (convert_to_void): Preserve TREE_NO_UNUSED_WARNING.
5524
5525 2002-03-12  Richard Sandiford  <rsandifo@redhat.com>
5526
5527         * mangle.c (write_builtin_type): Handle 128-bit integers even if
5528         they are not a standard integer type.
5529
5530 2002-03-12  Richard Sandiford  <rsandifo@redhat.com>
5531
5532         * cp-tree.h (init_init_processing): Remove declaration.
5533         * init.c (BI_header_type, init_init_processing): Remove old ABI stuff.
5534         * decl.c (cxx_init_decl_processing): Don't call init_init_processing.
5535
5536 2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5537
5538         * cp-lang.c (tree_code_type, tree_code_length, tree_code_name):
5539         Define.
5540         * decl.c (duplicate_decls): Use TREE_CODE_LENGTH, not
5541         tree_code_length.
5542         * lex.c (cplus_tree_code_type, cplus_tree_code_length,
5543         cplus_tree_code_name): Delete.
5544         (cxx_init): Don't call add_c_tree_codes, instead set
5545         lang_unsafe_for_reeval.  Don't try to copy into the various
5546         tree_code arrays.
5547
5548 2002-03-12  Nathan Sidwell  <nathan@codesourcery.com>
5549
5550         PR c++/5659
5551         * decl.c (xref_tag): Don't set CLASSTYPE_DECLARED_CLASS here.
5552         * decl2.c (handle_class_head): Set CLASSTYPE_DECLARED_CLASS for
5553         definitions.
5554
5555 2002-03-11  Nathan Sidwell  <nathan@codesourcery.com>
5556
5557         Revert 2001-03-26  Nathan Sidwell  <nathan@codesourcery.com>,
5558         DR209 is now not a defect.
5559         * cp-tree.h (skip_type_access_control): Remove.
5560         * decl.c (grokdeclarator): Do type access control for friend
5561         declarations.
5562         * semantics.c (decl_type_access_control): Don't reset
5563         current_type_lookups.
5564         (save_type_access_control): Always save the lookups.
5565         (skip_type_access_control): Remove.
5566         (finish_class_definition): Don't change type_lookups.
5567
5568 2002-03-11  Nathan Sidwell  <nathan@codesourcery.com>
5569
5570         Revert 2000-12-01  Nathan Sidwell  <nathan@codesourcery.com>,
5571         It is incorrect.
5572         * typeck.c (build_static_cast): Compare non-qualified types
5573         with pointer to member conversions.
5574
5575 2002-03-11  Dan Nicolaescu  <dann@ics.uci.edu>
5576             Daniel Berlin  <dan@dberlin.org>
5577
5578         * cp-lang.c (ok_to_generate_alias_set_for_type): New function.
5579         (cxx_get_alias_set): Use it.
5580
5581 2002-03-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5582
5583         * cp-tree.h (stabilize_expr): Prototype.
5584
5585 2002-03-08  Craig Rodrigues  <rodrigc@gcc.gnu.org>
5586
5587         * cp-tree.h (CLEAR_BINFO_MARKED): Make both parts of
5588         conditional return void.
5589
5590 2002-03-08  Neil Booth  <neil@daikokuya.demon.co.uk>
5591
5592         * cp-lang.c (LANG_HOOKS_UNSAVE): Redefine.
5593         * cp-tree.h (cxx_unsave): New.
5594         * tree.c (cp_unsave): Rename cxx_unsave, update prototype.
5595         (init_tree): Update.
5596
5597 2002-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5598
5599         * decl.c (cxx_init_decl_processing): Use ARRAY_SIZE in lieu of
5600         explicit sizeof/sizeof.
5601         * decl2.c (cxx_decode_option): Likewise.
5602         * lex.c (init_reswords, REDUCE_LENGTH, TOKEN_LENGTH): Likewise.
5603
5604 2002-03-02  Nathan Sidwell  <nathan@codesourcery.com>
5605
5606         PR c++/775
5607         * decl.c (lookup_tag): Only reject enum/class mismatch, not
5608         class/union mismatch.
5609         * parse.y (check_class_key): New function.
5610         (structsp): Call it.
5611
5612 2002-03-01  Michael Matz  <matz@suse.de>
5613
5614         * typeck.c (cp_pointer_int_sum): Complete inner type which is
5615         used later by size_in_bytes().
5616
5617 2002-03-01  Phil Edwards  <pme@gcc.gnu.org>
5618
5619         * cp-tree.h:  Require __GNUC__ to be #defined.
5620         (build_init):  Add missing prototype.
5621
5622 2002-03-01  Jason Merrill  <jason@redhat.com>
5623
5624         * except.c: Don't include decl.h or obstack.h.  Do include
5625         tree-inline.h.
5626         (build_throw): Destroy temporaries from the thrown
5627         expression before calling __cxa_throw.  Construct a thrown
5628         temporary directly into the exception object.
5629         (stabilize_throw_expr): New function.
5630         (wrap_cleanups_r): New function.
5631         * tree.c (stabilize_expr): New function.
5632         * init.c (build_init): New function.
5633         * Make-lang.in (cp/except.o): Adjust .h deps.
5634
5635 2002-02-28  Jason Merrill  <jason@redhat.com>
5636
5637         * search.c (lookup_base_r): Don't clear is_non_public just because
5638         we found a friendly scope.
5639
5640         * decl.c (finish_function): Only warn about missing return
5641         statement with -Wreturn-type.
5642
5643 2002-02-28  Neil Booth  <neil@daikokuya.demon.co.uk>
5644
5645         * class.c (build_clone): Update.
5646         * cp-lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
5647         * cp-tree.h (cxx_dup_lang_specific_decl): New.
5648         * lex.c (copy_lang_decl): Rename cxx_dup_lang_specific_decl.
5649         (copy_decl): Update.
5650         * method.c (make_thunk): Update.
5651
5652 2002-02-27  Zack Weinberg  <zack@codesourcery.com>
5653
5654         * decl2.c: Delete traditional-mode-related code copied from
5655         the C front end but not used, or used only to permit the
5656         compiler to link.
5657
5658 2002-02-24 Craig Rodrigues  <rodrigc@gcc.gnu.org>
5659
5660         PR c++/4093
5661         * cp-tree.h (SET_BINFO_MARKED): Cast false part of condition
5662         to void.
5663
5664 2002-02-22  Jakub Jelinek  <jakub@redhat.com>
5665
5666         PR other/5746
5667         * semantics.c (finish_switch_cond): Don't call get_unwidened
5668         if error_mark_node.
5669
5670 2002-02-22  Nathan Sidwell  <nathan@codesourcery.com>
5671
5672         PR c++/2645, DR 295
5673         * cp-tree.h (tsubst_flags_t): Add tf_ignore_bad_quals,
5674         tf_keep_type_decl.
5675         (make_typename_type): Use tsubst_flags_t.
5676         * decl.c (make_typename_type): Adjust. Return non-artificial
5677         TYPE_DECLs, if required.
5678         (grokdeclarator): Simplify CVR qualification handling. Allow bad
5679         qualifiers on typedef types.
5680         * decl2.c (handle_class_head): Adjust make_typename_type call.
5681         * parse.y (nested_name_specifier): Likewise.
5682         (typename_sub0): Likewise.
5683         (typename_sub1): Likewise.
5684         * pt.c (convert_template_argument): Adjust make_typename_type
5685         return value.
5686         (tsubst): Adjust cp_build_qualified_type_real calls.
5687         (check_cv_quals_for_unify): Cope with allowing bad qualifications
5688         on template type parms.
5689         (instantiate_decl): Recheck substitutions to give warnings on bad
5690         qualifications.
5691         * tree.c (cp_build_qualified_type_real): Use tf_allow_bad_quals.
5692
5693 2002-02-21  Aldy Hernandez  <aldyh@redhat.com>
5694
5695         * cp/decl.c (duplicate_decls): Merge always_inline attribute.
5696
5697         * cp/tree.c (cp_cannot_inline_tree_fn): Do not inline at -O0
5698         unless DECL_ALWAYS_INLINE.
5699
5700 2002-02-20  Jakub Jelinek  <jakub@redhat.com>
5701
5702         * typeck.c (cp_pointer_int_sum): Renamed from
5703         pointer_int_sum, call pointer_int_sum.
5704
5705 2002-02-20  Jakub Jelinek  <jakub@redhat.com>
5706
5707         * decl.c (duplicate_decls): Return 0 if issued error about
5708         redeclaration.
5709
5710 2002-02-19  Jason Merrill  <jason@redhat.com>
5711
5712         ABI change: Mangle `void (A::*)() const' as
5713         M1AKFvvE, not MK1AFvvE.
5714         * mangle.c (write_function_type): Write cv-quals for member
5715         function type here.
5716         (write_pointer_to_member_type): Not here.
5717
5718 2002-02-18  Jason Merrill  <jason@redhat.com>
5719
5720         * pt.c (do_type_instantiation): Don't pedwarn if in_system_header.
5721         (do_decl_instantiation): Likewise.
5722
5723 2002-02-17  Craig Rodrigues  <rodrigc@gcc.gnu.org>
5724
5725         PR c++/5685
5726         * decl.c (duplicate_decls): Make warning unconditional
5727         if duplicate default argument declarations are present.
5728
5729 2002-02-17  Jakub Jelinek  <jakub@redhat.com>
5730
5731         * typeck.c (build_binary_op) [BIT_XOR_EXPR]: Remove explicit
5732         shortening.
5733
5734 2002-02-15  Nathan Sidwell  <nathan@codesourcery.com>
5735
5736         * decl.c (grokdeclarator): Set typedef_decl for all TYPE_DECLs,
5737         remove incorrect comment. Move #if 0'd code to common path. Use
5738         IMPLICIT_TYPENAME_P. Simplify & reformat ARRAY_TYPE duplication.
5739
5740 2002-02-13  Jason Merrill  <jason@redhat.com>
5741
5742         * decl.c (builtin_function): Set TREE_THIS_VOLATILE on return fns.
5743         (finish_function): Don't warn if current_function_returns_null.
5744
5745         * typeck2.c (digest_init): Do handle values of vector type.
5746
5747         * typeck2.c (digest_init, process_init_constructor): Treat vectors
5748         like arrays.
5749
5750 2002-02-11  Jason Merrill  <jason@redhat.com>
5751
5752         * parse.y (reserved_declspecs): Don't handle attributes.
5753         (reserved_typespecquals): Handle them here.
5754         * Make-lang.in (parse.c): Adjust expected conflicts.
5755
5756 2002-02-08  Jakub Jelinek  <jakub@redhat.com>
5757
5758         * parse.y (primary, primary_no_id): Use compstmt_or_stmtexpr
5759         instead of compstmt.
5760         (compstmt_or_stmtexpr): Renamed from compstmt.
5761         (compstmt): In addition to compstmt_or_stmtexpr clear last_expr_type.
5762
5763 2002-02-07  Nathan Sidwell  <nathan@codesourcery.com>
5764
5765         Rename instantiate_type_flags to tsubst_flags_t & expand use.
5766         * cp-tree.h (instantiate_type_flags): Rename to ...
5767         (tsubst_flags_t): ... here. Rename itf_complain to tf_error,
5768         add tf_warning flag.
5769         (instantiate_type): Adjust prototype.
5770         (tsubst, tsubst_expr, tsubst_copy, lookup_template_class,
5771         do_type_instantiation, cp_build_qualified_type_real): Likewise.
5772         cp_build_qualified_type: Adjust.
5773         * class.c (instantiate_type): Adjust parameter. Rename itf_* to
5774         tf_*.
5775         * call.c (standard_conversion): Rename itf_* to tf_*.
5776         (reference_binding): Likewise.
5777         (convert_like_real): Likewise.
5778         * cvt.c (cp_convert_to_pointer): Likewise.
5779         (convert_to_reference): Likewise.
5780         * decl.c (lookup_namespace_name): Use tf_* flags.
5781         (make_typename_type): Likewise.
5782         (grokdeclarator): Likewise.
5783         * pt.c (convert_nontype_argument): Adjust COMPLAIN usage.
5784         (coerce_template_template_parms, convert_template_argument,
5785         coerce_template_parms, maybe_get_template_decl_from_type_decl,
5786         lookup_template_class, tsubst_friend_function, tsubst_friend_class,
5787         instantiate_class_template, tsubst_template_arg_vector,
5788         tsubst_template_parms, tsubst_aggr_type, tsubst_default_argument,
5789         tsubst_decl, tsubst_arg_types, tsubst_function_type,
5790         tsubst_call_declarator_parms, tsubst, tsubst_copy, tsubst_expr,
5791         instantiate_template, fn_type_unification,
5792         resolve_overloaded_unification, verify_class_unification,
5793         unify, get_bindings_real, do_type_instantiation,
5794         regenerate_decl_from_template, instantiate_decl,
5795         tsubst_initializer_list, tsubst_enum,
5796         get_mostly_instantiated_function_type,
5797         invalid_nontype_parm_type_p): Likewise.
5798         * tree.c (cp_build_qualified_type_real): Likewise.
5799         * typeck.c (build_binary_op): Rename itf_* to tf_*.
5800         (build_ptrmemfunc): Likewise.
5801         (convert_for_assignment): Likewise.
5802
5803 2002-02-07  Nathan Sidwell  <nathan@codesourcery.com>
5804
5805         PR c++/109
5806         * decl.c (grokdeclarator): Allow friend declarations from
5807         dependent types.
5808         * decl2.c (handle_class_head): Don't push into template parm contexts.
5809         * pt.c (push_template_decl_real): Template parm contexts are never
5810         being defined.
5811
5812 2002-02-05  Alexandre Oliva  <aoliva@redhat.com>
5813
5814         * class.c: Include target.h.
5815         (check_bitfield_decl): Disregard EMPTY_FIELD_BOUNDARY,
5816         BITFIELDS_NBYTES_LIMITED and PCC_BITFIELD_TYPE_MATTERS for MS
5817         bit-field layout.
5818         * Make-lang.in: Adjust deps.
5819
5820 2002-02-05  Jason Merrill  <jason@redhat.com>
5821
5822         * error.c (dump_type): Be more helpful about VECTOR_TYPE.
5823
5824 2002-02-04  Jakub Jelinek  <jakub@redhat.com>
5825
5826         * semantics.c (begin_switch_stmt): Clear SWITCH_TYPE.
5827         (finish_switch_cond): Set SWITCH_TYPE.
5828
5829 2002-02-04  Richard Henderson  <rth@redhat.com>
5830
5831         * method.c (use_thunk): Always initialize the block tree.  Reindent.
5832         * semantics.c (expand_body): Emit thunks after function, not before.
5833
5834 2002-02-04  Jason Merrill  <jason@redhat.com>
5835
5836         * decl.c (start_function): Call cplus_decl_attributes immediately
5837         after grokdeclarator.
5838
5839         * decl.c (start_function): Combine DECL_RESULT handling code.
5840
5841 2002-02-03  Jason Merrill  <jason@redhat.com>
5842
5843         * xref.c: Remove.
5844         * Make-lang.in (CXX_OBJS): Remove cp/xref.o
5845         (cp/xref.o): Remove dependencies.
5846         * class.c (finish_struct_1, check_methods): Don't call xref fns.
5847         (finish_struct_1): Likewise.
5848         * friend.c (make_friend_class): Likewise.
5849         * lex.c (cxx_init, cxx_finish, extract_interface_info): Likewise.
5850         * spew.c (read_process_identifier): Likewise.
5851
5852 2002-02-01  Jason Merrill  <jason@redhat.com>
5853
5854         PR c++/4872
5855         * decl.c (finish_function): Warn about a non-void function with
5856         no return statement and no abnormal exit.
5857         * cp-tree.h (struct cp_language_function): Add returns_abnormally.
5858         (current_function_returns_abnormally): New macro.
5859         * call.c (build_call): Set it.
5860
5861         * typeck.c (build_component_ref): Always complain about offsetof
5862         constructs on non-PODs.  Only make it an error for members of
5863         virtual bases.
5864
5865         * error.c (dump_scope): Don't add TFF_DECL_SPECIFIERS.
5866         (dump_function_decl): Always dump parms.
5867
5868         * decl2.c (finish_static_data_member_decl): Complain about a local
5869         class with a static data member.
5870
5871         PR c++/4286
5872         * search.c (lookup_field_1): Don't xref a static data member
5873         just because we looked it up.
5874
5875 2002-01-31  Jason Merrill  <jason@redhat.com>
5876
5877         * Make-lang.in (parse.c): Handle .output file.
5878
5879         PR c++/3395
5880         * decl.c (xref_tag): Remember early attributes in TYPE_ATTRIBUTES,
5881         not TREE_TYPE.
5882         * semantics.c (finish_class_definition): Adjust.
5883
5884         Allow attributes in parms and casts.
5885         * parse.y (named_parm): Don't strip attrs.
5886         (declmods): Remove 'attributes' production.
5887         (nonempty_cv_qualifiers): Accept attributes.
5888         (ATTRIBUTE): Give precedence.
5889         * decl.c (groktypename): Handle attributes.
5890         (grokparms): Likewise.
5891
5892 2002-01-29  Jakub Jelinek  <jakub@redhat.com>
5893
5894         * decl2.c (cxx_decode_option): Pass 0 as last argument to
5895         cpp_handle_option.
5896         * lang-specs.h: Use cpp_unique_options instead of cpp_options
5897         when used together with cc1_options.
5898
5899 2002-01-29  Nathan Sidwell  <nathan@codesourcery.com>
5900
5901         PR c++/5132
5902         * typeck2.c (digest_init): Make sure non-array core type is
5903         instantiated.
5904         * decl2.c (reparse_absdcl_as_casts): Just store the type in the
5905         constructor, rather than build a new one.
5906         (build_expr_from_tree, CONSTRUCTOR case): Be careful with the
5907         PURPOSE of constructor elts.
5908
5909 2002-01-23  Zack Weinberg  <zack@codesourcery.com>
5910
5911         * Make-lang.in (parse.c): Adjust expected number of
5912         shift-reduce conflicts.
5913         (decl.o): Depend on diagnostic.h.
5914         * decl.c: Include diagnostic.h.
5915         (grokdeclarator): Check for null pointer.
5916         (finish_function): Don't abort when
5917         current_binding_level->parm_flag != 1, if errors have
5918         occurred; throw away the statement tree and extra binding
5919         levels, and continue.
5920         * lex.c (note_list_got_semicolon): Check for null pointer.
5921         * method.c (hack_identifier): Just return error_mark_node if
5922         value is error_mark_node.
5923         * parse.y (primary: TYPEID(type_id)): No need to use
5924         TYPE_MAIN_VARIANT here.
5925         (handler_seq): Accept an empty list of catch clauses and
5926         generate a fake handler block to avoid later crashes.
5927         (ansi_raise_identifier): Accept the error token too.
5928         * semantics.c (begin_class_definition,
5929         finish_class_definition): Check for error_mark_node.
5930
5931 2002-01-23  Zack Weinberg  <zack@codesourcery.com>
5932
5933         * typeck2.c (friendly_abort): Delete definition.
5934         * cp-tree.h (friendly_abort): Don't prototype.
5935         (my_friendly_assert): Use fancy_abort.
5936
5937 2002-01-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
5938
5939         * cp-tree.h (my_friendly_abort): Remove.
5940
5941 2002-01-23  Jakub Jelinek  <jakub@redhat.com>
5942
5943         * spew.c (pending_inlines, pending_inlines_tail,
5944         processing_these_inlines): Make static.
5945         (mark_pending_inlines): Remove static.
5946         (begin_parsing_inclass_inline): If in function, save pi
5947         for GC to cp_function_chain->unparsed_inlines instead.
5948         (process_next_inline): Likewise.
5949         * cp-tree.h (struct cp_language_function): Add unparsed_inlines.
5950         (mark_pending_inlines): Add prototype.
5951         * decl.c (spew_debug): Remove unused extern.
5952         (mark_lang_function): Call mark_pending_inlines.
5953
5954 2002-01-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
5955
5956         * call.c, class.c, decl.c, decl2.c, error.c, expr.c, friend.c,
5957         init.c, lex.c, mangle.c, method.c, pt.c, repo.c, rtti.c, search.c,
5958         semantics.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c:
5959         Change my_fancy_abort() to abort().
5960
5961 2002-01-23  Jason Merrill  <jason@redhat.com>
5962
5963         PR c++/5453
5964         * class.c (fixed_type_or_null): Fix thinko.
5965
5966         PR c++/3331
5967         * init.c (resolve_offset_ref): Use build_indirect_ref.
5968
5969         * decl2.c (grokclassfn): Don't set DECL_REGISTER on 'this'.
5970
5971 2002-01-22  Jason Merrill  <jason@redhat.com>
5972
5973         * parse.y (function_body): Suppress the block for the outermost
5974         curly braces.
5975         * decl.c (pushdecl): Don't try to skip it.
5976         (begin_function_body): Keep the block we create, not the next one.
5977         * init.c (emit_base_init): Don't mess with keep_next_level.
5978
5979         * class.c (build_base_path): Tweak formatting.
5980
5981 2002-01-19  Nathan Sidwell  <nathan@codesourcery.com>
5982
5983         Fix regression introduced with patch for c++/775
5984         * parse.y (class_head_defn): Check for template specializations
5985         with a different class-key.
5986
5987 2002-01-17  Jason Merrill  <jason@redhat.com>
5988
5989         * decl.c (begin_constructor_body, begin_destructor_body): New fns.
5990         (begin_function_body): Call them and keep_next_level.
5991         * init.c (emit_base_init): Call keep_next_level.
5992         * semantics.c (setup_vtbl_ptr): Lose.
5993         * cp-tree.h (struct cp_language_function): Remove vtbls_set_up_p.
5994         (vtbls_set_up_p): Lose.
5995         * pt.c (tsubst_expr, CTOR_INITIALIZER): Call emit_base_init.
5996         * method.c (do_build_copy_constructor): Likewise.
5997         (synthesize_method): Call finish_mem_initializers.
5998         * parse.y (nodecls): Likewise.
5999
6000         * error.c (dump_type_suffix): Print the exception specs before
6001         recursing.
6002         (dump_function_decl): Here, too.
6003
6004         * cp-tree.h (TMPL_PARMS_DEPTH): Cast to signed HOST_WIDE_INT.
6005
6006 2002-01-10  Ira Ruben   <ira@apple.com>
6007
6008         PR c++/907
6009         * decl.c (start_method): Handle attrlist.
6010
6011 2002-01-10  Jakub Jelinek  <jakub@redhat.com>
6012
6013         * decl2.c (max_tinst_depth): Increase default limit to 500.
6014
6015 2002-01-10  Graham Stott  <grahams@redhat.com>
6016
6017         * spew.c (YYCHAR): Uppercase macro parameter and add
6018         parenthesis.
6019         (YYCODE): Likewise.
6020         (NAME): Uppercase macro parameter.
6021
6022 2002-01-09  Graham Stott  <grahams@redhat.com>
6023
6024         * decl.h (grokdeclarator): Wrap long line.
6025
6026         * semantics.c (FINISH_COND): Uppercase macro paramaters and
6027         add parenthesis.
6028
6029 2002-01-08  Graham Stott  <grahams@redhat.com>
6030
6031         * xref.c (FILE_NAME_ABSOLUTE_P): Add parenthesis.
6032         (PALLOC): Uppercase macro parameter and whitespace.
6033         (SALLOC): Uppercase macro parameter.
6034         (SFREE): Uppercase macros parameter, add parenthese and
6035         whitespace.
6036         (STREQL): Uppercase macro parameter and whitespace.
6037         (STRNEQ): Likewise.
6038         (STRLSS): Likewise.
6039         (STRLEQ): Likewise.
6040         (STRGTR): Likewise.
6041         (STRGEQ): Likewise.
6042
6043         * call.c (convert_like): Add parenthesis and wrap.
6044         (convert_like_with_context): Likewise.
6045         (ICS_RANK): Whitespace.
6046         (NEED_TEMPORARY_P): Remove parenthesis.
6047
6048         * class.c (VTT_TOP_LEVEL_P): Uppercase macro parameter and
6049         whitespace.
6050         (VTT_MARKED_BINFO_P): Likewise.
6051
6052         * decl.c (BINDING_LEVEL): Add parenthesis.
6053         (DEF_OPERATOR): Likewise.
6054
6055         * mangle.c (MANGLE_TRACE): Add parenthesis.
6056         (MANGLE_TRACE_TREE): Likewise.
6057         (write_signed_number): Likewise.
6058         (write_unsigned_number): Likewise.
6059
6060         * pt.c (ccat): Uppercase macro parameter.
6061         (cat): Likewise
6062
6063         * search.c (SET_BINFO_ACCESS): Add parenthesis.
6064
6065 2002-01-07  Jason Merrill  <jason@redhat.com>
6066
6067         * decl2.c (coerce_new_type): Downgrade error for size_t mismatch
6068         to pedwarn.
6069
6070         PR c++/3536
6071         * method.c (make_thunk): If !flag_weak, give the thunk the
6072         function's linkage.
6073         (use_thunk): Here, too.
6074
6075 2002-01-07  Graham Stott  <grahams@redhat.com>
6076
6077         * error.c: Update copyright date.
6078         (print_scope_operator): Add parenthesis.
6079         (print_left_paren): Likewise.
6080         (print_right_paren): Likewise.
6081         (print_left_bracket): Likewise.
6082         (print_right_bracket): Likewise.
6083         (print_template_argument_list_start): Likewise.
6084         (print_template_argument_list_end): Likewise.
6085         (print_non_consecutive_character): Likewise.
6086         (print_tree_identifier): Likewise.
6087         (print_identifier): Likewise.
6088         (NEXT_CODE): Uppercase macro parameter.
6089         (ident_fndecl): Delete unused.
6090         (GLOBAL_THING): Likewise.
6091
6092 2002-01-06  Graham Stott  <grahams@redhat.com>
6093
6094         * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK): Add parenthesis.
6095         (VAR_FUNCTION_OR_PARM_DECL_CHECK): Likewise.
6096         (VAR_TEMPL_TYPE_OR_FUNCTION_DECL_CHECK) Likewise.
6097         (RECORD_OR_UNION_TYPE_CHECK): Likewise.
6098         (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Likewise.
6099         (C_IS_RESERVED_WORD): Uppercase macro parameter.
6100         (C_RID_YYCODE) Likewise.
6101         (ptrmem_cst): Use rtx.
6102         (LOCAL_BINDING_P): Add whitespace.
6103         (INHERITED_VALUE_BINDING_P): Likewise.
6104         (BINDING_SCOPE): Wrap long line.
6105         (BINDING_HAS_LEVEL_P): Remove parenthesis.
6106         (BINDING_VALUE): Wrap long line.
6107         (BINDING_TYPE): Whitespace.
6108         (IDENTIFIER_GLOBAL_VALUE): Add parenthesis.
6109         (SET_IDENTIFIER_GLOBAL_VALUE): Likewise.
6110         (IDENTIFIER_NAMESPACE_VALUE): Likewise.
6111         (SET_IDENTIFIER_NAMESPACE_VALUE: Likewise.
6112         (same_type_p): Uppercase macro parameters.
6113         (same_type_ignoring_top_level_qualifiers_p): Likewise.
6114         (OVL_FUNCTION): Wrap long line.
6115         (OVL_CHAIN): Whitespace.
6116         (OVL_CURRENT): Add parenthesis and whitespace.
6117         (OVL_NEXT): Whitespace.
6118         (OVL_USED): Likewise.
6119         (IDENTIFIER_TYPE_VALUE): Likewise.
6120         (REAL_IDENTIFIER_TYPE_VALUE): Remove parenthesis.
6121         (SET_IDENTIFIER_TYPE_VALUE): Add parenthesis and whitespace.
6122         (LANG_ID_FIELD): Whitespace.
6123         (SET_LANG_ID(NODE,VALUE,NAME): Likewise.
6124         (IDENTIFIER_LABEL_VALUE): Whitespace and wrap.
6125         (SET_IDENTIFIER_LABEL_VALUE): Whitespace.
6126         (IDENTIFIER_IMPLICIT_DECL): Whitespace and wrap.
6127         (SET_IDENTIFIER_IMPLICIT_DECL); Whitespace.
6128         (IDENTIFIER_ERROR_LOCUS): Whitespace and wrap.
6129         (SET_IDENTIFIER_ERROR_LOCUS); Whitespace.
6130         (IDENTIFIER_VIRTUAL_P): Likewise.
6131         (IDENTIFIER_OPNAME_P): Likewise.
6132         (IDENTIFIER_TYPENAME_P): Remove parenthesis.
6133         (C_TYPE_FIELDS_READONLY): Uppercase macro parameters.
6134         (C_SET_EXP_ORIGINAL_CODE): Likewise.
6135         (TYPE_ASSEMBLER_NAME_STRING): Wrap long line.
6136         (TYPE_ASSEMBLER_NAME_LENGTH): Likewise.
6137         (IS_AGGR_TYPE): Uppercase macro parameter.
6138         (CLASS_TYPE_P): Likewise.
6139         (IS_AGGR_TYPE_CODE): Uppercase macro parameter and parenthesis.
6140         (IS_AGGR_TYPE_2): Whitespace.
6141         (TAGGED_TYPE_P): Uppercase macro parameter.
6142         (TYPE_BUILT_IN): Whitespace.
6143         (TYPE_FOR_JAVA): Likewise.
6144         (FUNCTION_ARG_CHAIN): Remove parenthesis.
6145         (FUNCTION_FIRST_USER_PARMTYPE): Add parenthesis.
6146         (FUNCTION_FIRST_USER_PARAM): Likewise.
6147         (PROMOTES_TO_AGGR_TYPE): Whitespace.
6148         (DERIVED_FROM_P): Add parenthesis and wrap.
6149         (UNIQUELY_DERIVED_FROM_P): Likewise.
6150         (ACCESSIBLY_UNIQUELY_DERIVED_P): Likewise.
6151         (PUBLICLY_UNIQUELY_DERIVED_P): Likewise.
6152         (CLASSTYPE_USE_TEMPLATE): Whitespace.
6153         (CLASSTYPE_INLINE_FRIENDS): Remove parenthesis.
6154         (TYPE_GETS_DELETE): Add parenthesis.
6155         (TYPE_HAS_CONVERSION): Add parenthesis and wrap.
6156         (TYPE_HAS_ASSIGN_REF): Likewise,
6157         (TYPE_HAS_CONST_ASSIGN_REF): Likewise.
6158         (TYPE_HAS_INIT_REF): Likewise.
6159         (TYPE_HAS_CONST_INIT_REF): Likewise.
6160         (TYPE_BEING_DEFINED): Likewise.
6161         (TYPE_LANG_SPECIFIC): Likewise.
6162         (CLASSTYPE_RTTI): Likewise.
6163         (TYPE_OVERLOADS_CALL_EXPR): Likewise.
6164         (TYPE_OVERLOADS_ARRAY_REF): Likewise.
6165         (TYPE_OVERLOADS_ARROW): Likewise.
6166         (TYPE_USES_MULTIPLE_INHERITANCE): Likewise.
6167         (TYPE_USES_VIRTUAL_BASECLASSES): Add parenthesis.
6168         (CLASSTYPE_METHOD_VEC): Likewise.
6169         (CLASSTYPE_MARKED_N): Likewise.
6170         (CLASSTYPE_MARKED): Likewise.
6171         (CLASSTYPE_MARKED2): Likewise.
6172         (CLASSTYPE_MARKED3): Likewise.
6173         (CLASSTYPE_MARKED4): Likewise.
6174         (CLASSTYPE_MARKED5): Likewise.
6175         (CLASSTYPE_MARKED6): Likewise.
6176         (SET_CLASSTYPE_MARKED): Whitespace.
6177         (CLEAR_CLASSTYPE_MARKED): Likewise.
6178         (SET_CLASSTYPE_MARKED2): Likewise.
6179         (CLEAR_CLASSTYPE_MARKED2): Likewise.
6180         (SET_CLASSTYPE_MARKED3): Likewise.
6181         (CLEAR_CLASSTYPE_MARKED3): Likewise.
6182         (SET_CLASSTYPE_MARKED4): Likewise.
6183         (CLEAR_CLASSTYPE_MARKED4): Likewise.
6184         (SET_CLASSTYPE_MARKED5): Likewise.
6185         (CLEAR_CLASSTYPE_MARKED5): Likewise.
6186         (SET_CLASSTYPE_MARKED6): Likewise.
6187         (CLEAR_CLASSTYPE_MARKED6): Likewise.
6188         (CLASSTYPE_TAGS): Likewise.
6189         (CLASSTYPE_VSIZE): Likewise.
6190         (CLASSTYPE_VBASECLASSES): Likewise.
6191         (CANONICAL_BINFO): Add parenthesis.
6192         (CLASSTYPE_SIZE(NODE): Likewise.
6193         (CLASSTYPE_SIZE_UNIT): Likewise.
6194         (CLASSTYPE_ALIGN(NODE): Likewise.
6195         (CLASSTYPE_USER_ALIGN): Likewise.
6196         (TYPE_JAVA_INTERFACE): Likewise.
6197         (CLASSTYPE_PURE_VIRTUALS): Likewise.
6198         (CLASSTYPE_NEEDS_VIRTUAL_REINIT): Whitespace and wrap.
6199         (TYPE_HAS_DEFAULT_CONSTRUCTOR): Likewise.
6200         (CLASSTYPE_HAS_MUTABLE): Likewise.
6201         (CLASSTYPE_FRIEND_CLASSES): Likewise. Likewise.
6202         (CLASSTYPE_DECLARED_CLASS): Whitespace and wrap.
6203         (CLASSTYPE_READONLY_FIELDS_NEED_INIT): Likewise.
6204         (CLASSTYPE_REF_FIELDS_NEED_INIT): Likewise.
6205         (CLASSTYPE_INTERFACE_ONLY): Likewise.
6206         (CLASSTYPE_INTERFACE_KNOWN): Likewise.
6207         (CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
6208         (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
6209         (SET_CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
6210         (SET_CLASSTYPE_INTERFACE_KNOWN): Likewise.
6211         (CLASSTYPE_DEBUG_REQUESTED): Whitespace and wrap.
6212         (BINFO_UNSHARED_MARKED): Whitespace.
6213         (BINFO_MARKED): Whitespace and wrap.
6214         (SET_BINFO_MARKED): Likewise.
6215         (CLEAR_BINFO_MARKED): Likewise.
6216         (BINFO_VTABLE_PATH_MARKED): Likewise.
6217         (SET_BINFO_VTABLE_PATH_MARKED): Likewise.
6218         (CLEAR_BINFO_VTABLE_PATH_MARKED): Likewise.
6219         (BINFO_SUBVTT_INDEX): Remove parenthesis.
6220         (BINFO_VPTR_INDEX): Likewise.
6221         (BINFO_PRIMARY_BASE_OF): Likewise,
6222         (CLASSTYPE_VFIELDS): Whitespace.
6223         (VF_DERIVED_VALUE): Wrap long line.
6224         (NAMESPACE_LEVEL): Whitespace.
6225         (CAN_HAVE_FULL_LANG_DECL_P): Remove parenthesis.
6226         (DEFARG_POINTER): Whitespace.
6227         (DECL_NEEDED_P): Remove parenthesis.
6228         (DECL_LANGUAGE): Whitespace.
6229         (SET_DECL_LANGUAGE): Add parenthesis.
6230         (DECL_CONSTRUCTOR_P): Whitespace and wrap.
6231         (DECL_OVERLOADED_OPERATOR_P): Remove parenthesis.
6232         (DECL_IN_AGGR_P): Whitespace.
6233         (DECL_FRIEND_P): Likewise.
6234         (DECL_BEFRIENDING_CLASSES): Likewise.
6235         (DECL_STATIC_FUNCTION_P): Whitespace and wrap.
6236         (DECL_NONCONVERTING_P): Whitespace.
6237         (DECL_PURE_VIRTUAL_P): Likewise.
6238         (DECL_NEEDS_FINAL_OVERRIDER_P): Likewise.
6239         (DECL_PENDING_INLINE_INFO): Whitespace.
6240         (DECL_SORTED_FIELDS): Likewise.
6241         (DECL_DEFERRED_FN): Likewise.
6242         (DECL_TEMPLATE_INFO): Likewise.
6243         (CLASSTYPE_TEMPLATE_INFO): Whitespace and wrap.
6244         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO); Likewise.
6245         (SET_TYPE_TEMPLATE_INFO): Add parenthesis.
6246         (TMPL_ARGS_LEVEL): Likewise.
6247         (SET_TMPL_ARGS_LEVEL): Likewise.
6248         (INNERMOST_TEMPLATE_PARMS): Whitespace.
6249         (C_TYPEDEF_EXPLICITLY_SIGNED): Uppercase macro parameter.
6250         (INTEGRAL_CODE_P(CODE): Add parenthesis.
6251         (CP_INTEGRAL_TYPE_P): Remove parenthesis.
6252         (TYPE_HAS_CONSTRUCTOR): Whitespace.
6253         (TREE_HAS_CONSTRUCTOR): Likewise.
6254         (TYPE_HAS_DESTRUCTOR): Likewise.
6255         (TYPE_HAS_REAL_ASSIGN_REF): Likewise.
6256         (TYPE_HAS_COMPLEX_ASSIGN_REF): Likewise.
6257         (TYPE_HAS_ABSTRACT_ASSIGN_REF): Likewise.
6258         (TYPE_HAS_COMPLEX_INIT_REF): Likewise.
6259         (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Likewise.
6260         (TYPE_PTRMEMFUNC_P): Likewise.
6261         (TYPE_PTRMEMFUNC_FLAG): Likewise.
6262         (TYPE_GET_PTRMEMFUNC_TYPE): Likewise.
6263         (TYPE_SET_PTRMEMFUNC_TYPE): Likewise.
6264         (TYPE_PTRMEM_CLASS_TYPE): Remove parenthesis.
6265         (TYPE_PTRMEM_POINTED_TO_TYPE): Likewise.
6266         (DECL_ACCESS): Whitespace.
6267         (DECL_GLOBAL_CTOR_P): Remove parenthesis.
6268         (DECL_GLOBAL_DTOR_P): Likewise.
6269         (GLOBAL_INIT_PRIORITY): Likewise.
6270         (DECL_TEMPLATE_PARMS): Likewise.
6271         (DECL_TEMPLATE_RESULT): Likewise.
6272         (DECL_TEMPLATE_INSTANTIATIONS): Likewise.
6273         (DECL_TEMPLATE_SPECIALIZATIONS): Likewise.
6274         (DECL_IMPLICIT_TYPEDEF_P): Remove parenthesis.
6275         (SET_DECL_IMPLICIT_TYPEDEF_P): Likewise.
6276         (PRIMARY_TEMPLATE_P): Add parenthesis.
6277         (DECL_USE_TEMPLATE): Whitespace.
6278         (CLASSTYPE_IMPLICIT_INSTANTIATION): Likewise.
6279         (SET_CLASSTYPE_IMPLICIT_INSTANTIATION): Likewise.
6280         (CLASSTYPE_EXPLICIT_INSTANTIATION): Likewise.
6281         (SET_CLASSTYPE_EXPLICIT_INSTANTIATION): Likewise.
6282         (CALL_DECLARATOR_PARMS): Remove parenthesis.
6283         (CALL_DECLARATOR_QUALS): Likewise.
6284         (CALL_DECLARATOR_EXCEPTION_SPEC): Likewise.
6285         (TEMP_NAME_P): Wrap.
6286         (VFIELD_NAME_P): Likewise.
6287         (B_SET): Uppercase macro parameters and add parenthesis.
6288         (B_CLR): Likewise.
6289         (B_TST): Likewise.
6290         (LOOKUP_NAMESPACES_ONLY): Uppercase macro parameters.
6291         (LOOKUP_TYPES_ONLY): Uppercase macro parameters.
6292         (LOOKUP_QUALIFIERS_ONLY): Uppercase macro parameters.
6293         (same_or_base_type_p): Likewise.
6294         (cp_deprecated): Likewise.
6295
6296 2002-01-05  Richard Henderson  <rth@redhat.com>
6297
6298         * semantics.c (expand_body): Revert last change.
6299
6300 2002-01-04  Jason Merrill  <jason@redhat.com>
6301
6302         PR c++/4122
6303         * class.c (update_vtable_entry_for_fn): Set delta to zero for a
6304         lost primary.
6305
6306         * class.c (build_vtbl_initializer): Check for a lost primary
6307         before calculating the vtable entry to throw away.
6308
6309 2002-01-02  Jason Merrill  <jason@redhat.com>
6310
6311         * semantics.c (expand_body): Call outlining_inline_function when
6312         emitting an inline function out of line.
6313
6314 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
6315
6316         PR c++/5116, c++/764 reversion
6317         * call.c (build_new_op): Revert the instantiations. They are
6318         incorrect.
6319
6320 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
6321
6322         PR c++/5089
6323         * decl2.c (reparse_absdcl_as_casts): Don't warn about casts to void.
6324
6325 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
6326
6327         PR c++/3716
6328         * pt.c (tsubst_aggr_type): Move pmf handling into tsubst.
6329         (tsubst, case POINTER_TYPE): Handle pmfs here.
6330         (tsubst, case OFFSET_TYPE): Check it is not an offset to
6331         reference. If it is offset to FUNCTION_TYPE, create a METHOD_TYPE.
6332
6333 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
6334
6335         PR c++/35
6336         * cp-tree.h (DECL_LANG_FLAG_0): Used for PARM_DECL too.
6337         (DECL_TEMPLATE_PARM_P): A PARM_DECL might be one too.
6338         * pt.c (process_template_parm): SET_DECL_TEMPLATE_PARM_P on the
6339         PARM_DECL.
6340         (tsubst_template_parms): Break up loop statements.
6341         (tsubst_decl, case PARM_DECL): Copy DECL_TEMPLATE_PARM_P. Template
6342         parm PARM_DECLs don't get promoted.
6343
6344 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
6345
6346         PR c++/5123
6347         * typeck.c (build_component_ref): Cope with a TEMPLATE_ID_EXPR.
6348         (build_x_function_call): Cope with a COMPONENT_REF containing a
6349         TEMPLATE_ID_EXPR.
6350
6351 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
6352
6353         PR c++/5213
6354         * pt.c (convert_template_argument): Be more careful determining
6355         when RECORD_TYPE templates are or are not templates.
6356
6357 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
6358
6359         PR c++/775
6360         * cp-tree.h (handle_class_head): Adjust prototype.
6361         * decl2.c (handle_class_head): Add DEFN_P and NEW_TYPE_P
6362         parameters. Use for all class heads.
6363         * parse.y (named_class_head_sans_basetype, named_class_head,
6364         named_complex_class_head_sans_basetype,
6365         named_class_head_sans_basetype_defn,
6366         unnamed_class_head): Remove.
6367         (class_head, class_head_apparent_template): Recognize class heads
6368         (class_head_decl, class_head_defn): New reductions. Process class
6369         heads.
6370         (structsp): Adjust class definition and class declaration
6371         reductions.
6372         (maybe_base_class_list): Give diagnostic on empty list.
6373
6374 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
6375
6376         PR c++/4379
6377         * typeck.c (build_x_unary_op): Don't destroy the OFFSET_REF on a
6378         single non-static member.
6379         (unary_complex_lvalue): If it cannot be a pointer to member, don't
6380         make it so. Check it is not pointer to reference.
6381
6382 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
6383
6384         PR c++/5132
6385         * decl2.c (reparse_absdcl_as_casts): Don't digest_init if we
6386         are processing a template decl.
6387
6388 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
6389
6390         PR c++/5116, c++/764
6391         * call.c (build_new_op): Make sure template class operands are
6392         instantiated. Simplify arglist construction.
6393
6394 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
6395
6396         * call.c (build_user_type_conversion_1): Use my_friendly_assert
6397         rather than if ... abort.
6398         * cvt.c (convert_to_reference): Likewise.
6399         * semantics.c (setup_vtbl_ptr): Likewise.
6400         * pt.c (lookup_template_class): Comment typo.
6401
6402 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
6403
6404         PR c++/5125
6405         * pt.c (push_template_decl_real): Make sure DECL has
6406         DECL_LANG_SPECIFIC.
6407
6408 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
6409
6410         PR c++/335
6411         * init.c (resolve_offset_ref): Copy cv qualifiers of this pointer
6412         for non-reference fields.
6413         * typeck.c (require_complete_type): Use resolve_offset_ref).
6414
6415 2001-12-26  Nathan Sidwell  <nathan@codesourcery.com>
6416
6417         PR c++/196
6418         * parse.y (bad_parm): Better diagnostic when given a SCOPE_REF.
6419
6420 2001-12-24  Nathan Sidwell  <nathan@codesourcery.com>
6421
6422         PR c++/160
6423         * typeck.c (build_modify_expr): Remove old unreachable code & tidy
6424         up. Don't stabilize_references when initializing a reference.
6425
6426 2001-12-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6427
6428         * decl2.c (lang_f_options): Const-ify.
6429
6430 2001-12-20  Joseph S. Myers  <jsm28@cam.ac.uk>
6431
6432         * config-lang.in (diff_excludes): Remove.
6433
6434 2001-12-19  Nathan Sidwell  <nathan@codesourcery.com>
6435
6436         PR c++/90
6437         * typeck.c (build_function_call_real): Use original function
6438         expression for errors.
6439
6440 2001-12-18  Jason Merrill  <jason@redhat.com>
6441
6442         PR c++/3242
6443         * class.c (add_method): Do compare 'this' quals when trying to match a
6444         used function.  Don't defer to another used function.
6445
6446 2001-12-18  Nathan Sidwell  <nathan@codesourcery.com>
6447
6448         * pt.c (instantiate_clone): Remove, fold into ...
6449         (instantiate_template): ... here. Simplify by removing mutual
6450         recursion.
6451         * typeck2.c (build_m_component_ref): Don't cv qualify the function
6452         pointed to by a pointer to function.
6453         * class.c (delete_duplicate_fields_1): Typo.
6454
6455 2001-12-18  Jason Merrill  <jason@redhat.com>
6456
6457         C++ ABI change: destroy value arguments in caller.
6458         * semantics.c (genrtl_start_function, genrtl_finish_function): Don't
6459         create an extra binding level for the parameters.
6460         * decl.c (store_parm_decls): Don't do parameter cleanups.
6461
6462 2001-12-18  Nathan Sidwell  <nathan@codesourcery.com>
6463
6464         * call.c (build_new_method_call): Use '%#V'.
6465         * error.c (cv_to_string): Use V parameter to determine padding.
6466
6467 2001-12-18  Joseph S. Myers  <jsm28@cam.ac.uk>
6468
6469         * call.c, decl2.c, init.c: Use "built-in" and "bit-field"
6470         spellings in messages.
6471
6472 2001-12-17  Zack Weinberg  <zack@codesourcery.com>
6473
6474         * cp-tree.h: Delete #defines for cp_error, cp_warning,
6475         cp_pedwarn, and cp_compiler_error.
6476         * call.c, class.c, cp-tree.h, cvt.c, decl.c, decl2.c, error.c,
6477         except.c, friend.c, init.c, lex.c, method.c, parse.y, pt.c,
6478         rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
6479         typeck2.c: Change calls to the above macros to use their
6480         language-independent equivalents: error, warning, pedwarn, and
6481         internal_error respectively.
6482
6483 2001-12-16  Neil Booth  <neil@daikokuya.demon.co.uk>
6484
6485         * decl2.c (finish_file): Remove back_end_hook.
6486
6487 2001-12-16  Joseph S. Myers  <jsm28@cam.ac.uk>
6488
6489         * ChangeLog.1, ChangeLog.2, ChangeLog, NEWS, call.c, class.c,
6490         cp-tree.h, decl.c, decl2.c, except.c, operators.def, optimize.c,
6491         pt.c, rtti.c, semantics.c, typeck.c: Fix spelling errors.
6492
6493 2001-12-15  Joseph S. Myers  <jsm28@cam.ac.uk>
6494
6495         * lang-options.h: Use American spelling in messages.
6496
6497 2001-12-13  Jason Merrill  <jason@redhat.com>
6498
6499         * Make-lang.in (parse.h): Separate rule, just depend on parse.c.
6500
6501         Use cleanups to run base and member destructors.
6502         * init.c (push_base_cleanups): New function, split out from...
6503         (build_delete): ...here.  Lose !TYPE_HAS_DESTRUCTOR code.
6504         * decl.c (finish_destructor_body): Move vbase destruction code to
6505         push_base_cleanups.
6506         (begin_function_body, finish_function_body): New fns.
6507         (finish_function): Move [cd]tor handling and call_poplevel to
6508         finish_function_body.
6509         (pushdecl): Skip the new level.
6510         * semantics.c (genrtl_try_block): Don't call end_protect_partials.
6511         (setup_vtbl_ptr): Call push_base_cleanups.
6512         * method.c (synthesize_method): Call {begin,end}_function_body.
6513         * pt.c (tsubst_expr): Handle COMPOUND_STMT_BODY_BLOCK.
6514         * cp-tree.h: Declare new fns.
6515         * parse.y (function_body, .begin_function_body): New nonterminals.
6516         (fndef, pending_inline, function_try_block): Use function_body.
6517         (ctor_initializer_opt, function_try_block): No longer has a value.
6518         (base_init): Remove .set_base_init token.
6519         (.set_base_init, compstmt_or_error): Remove.
6520         * Make-lang.in (parse.c): Expect two fewer s/r conflicts.
6521
6522         * optimize.c (maybe_clone_body): Fix parameter updating.
6523
6524 2001-12-12  Jason Merrill  <jason@redhat.com>
6525
6526         * decl.c (store_parm_decls): Remove parms_have_cleanups cruft.
6527         * semantics.c (genrtl_start_function): Don't pass
6528         parms_have_cleanups or push an extra binding level.
6529         (genrtl_finish_function): Lose cleanup_label cruft.
6530
6531         * cp-tree.h (struct cp_language_function): Remove x_ctor_label.
6532         (ctor_label): Remove.
6533         * semantics.c (finish_return_stmt): Lose ctor_label support.
6534         * decl.c (finish_constructor_body, mark_lang_function): Likewise.
6535         * typeck.c (check_return_expr): Check DECL_DESTRUCTOR_P, not
6536         dtor_label.
6537
6538         * call.c (build_new_method_call): Let resolves_to_fixed_type_p
6539         check for [cd]tors.
6540         * class.c (fixed_type_or_null, case INDIRECT_REF): Fix.
6541
6542         * decl.c (finish_function): Check VMS_TARGET, not VMS.
6543
6544         * decl.c (start_cleanup_fn): Remove redundant pushlevel.
6545         (end_cleanup_fn): And poplevel.
6546
6547         * semantics.c (setup_vtbl_ptr): Always build a CTOR_INITIALIZER
6548         if we're in a template.
6549
6550 2001-12-12  Jakub Jelinek  <jakub@redhat.com>
6551
6552         * cp-tree.h (DESTRUCTOR_DECL_PREFIX, DESTRUCTOR_NAME_P,
6553         ANON_PARMNAME_FORMAT, ANON_PARMNAME_P, DESTRUCTOR_NAME_FORMAT,
6554         THIS_NAME_P): Delete.
6555         * spew.c (read_process_identifier): Remove DESTRUCTOR_NAME_P,
6556         THIS_NAME_P and ANON_PARMNAME_P tests from warning about clash
6557         with internal naming scheme.
6558         * error.c (dump_decl): Remove DESTRUCTOR_NAME_P use.
6559
6560 2001-12-12  Nathan Sidwell  <nathan@codesourcery.com>
6561
6562         * decl.c (grokdeclarator): Deprecated implicit typename use.
6563
6564 2001-12-11  Nathan Sidwell  <nathan@codesourcery.com>
6565
6566         PR g++/51
6567         * parse.y (frob_specs): Indicate it is a language linkage which
6568         contained the extern.
6569         * decl.c (grokdeclarator): Allow extern language linkage with
6570         other specifiers.
6571
6572 2001-12-10  Nathan Sidwell  <nathan@codesourcery.com>
6573
6574         PR g++/72
6575         * decl.c (add_binding): Don't reject duplicate typedefs involving
6576         template parameters.
6577
6578 2001-12-10  Neil Booth  <neil@daikokuya.demon.co.uk>
6579
6580         * parse.y, semantics.c: Similarly.
6581
6582 2001-12-09  Nathan Sidwell  <nathan@codesourcery.com>
6583
6584         PR g++/87
6585         * cp-tree.h (DECL_COPY_CONSTRUCTOR_P): Use copy_fn_p.
6586         (copy_args_p): Rename to ...
6587         (copy_fn_p): ... here.
6588         (grok_special_member_properties): New function.
6589         (grok_op_properties): Lose VIRTUALP parameter.
6590         (copy_assignment_arg_p): Remove.
6591         * call.c (build_over_call): Use copy_fn_p.
6592         * decl.c (grokfndecl): Reformat. Adjust call to
6593         grok_op_properties.
6594         (copy_args_p): Rename to ...
6595         (copy_fn_p): ... here. Reject template functions. Check for pass
6596         by value.
6597         (grok_special_member_properties): Remember special functions.
6598         (grok_ctor_properties): Don't remember them here, just check.
6599         (grok_op_properties): Likewise.
6600         (start_method): Call grok_special_member_properties.
6601         * decl2.c (grokfield): Likewise.
6602         (copy_assignment_arg_p): Remove.
6603         (grok_function_init): Don't remember abstract assignment here.
6604         * pt.c (instantiate_class_template): Call
6605         grok_special_member_properties.
6606         (tsubst_decl): Adjust grok_op_properties call.
6607
6608 2001-12-08  Aldy Hernandez  <aldyh@redhat.com>
6609
6610         * lex.c (rid_to_yy): Add RID_CHOOSE_EXPR and
6611         RID_TYPES_COMPATIBLE_P.
6612
6613 2001-12-08  John David Anglin  <dave@hiauly1.hia.nrc.ca>
6614
6615         * semantics.c (simplify_aggr_init_exprs_r): Add DIRECT_BIND flag in
6616         call to build_aggr_init.
6617         * cp-tree.h (DIRECT_BIND): Document new use of DIRECT_BIND.
6618
6619 2001-12-08  Neil Booth  <neil@daikokuya.demon.co.uk>
6620
6621         * parse.y: Replace uses of the string non-terminal with STRING.
6622         Don't perform string concatentaion here.
6623         (string): Remove non-terminal.
6624         * semantics.c (finish_asm_stmt): Don't concatenate strings here.
6625
6626 2001-12-05  Jason Merrill  <jason@redhat.com>
6627
6628         * cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Define.
6629         (LANG_HOOKS_TREE_INLINING_END_INLINING): Define.
6630         * tree.c (cp_start_inlining, cp_end_inlining): New fns.
6631         * pt.c (push_tinst_level): No longer static.
6632         * cp-tree.h: Declare them.
6633
6634         * init.c (resolve_offset_ref): Don't check access for the base
6635         conversion to access a FIELD_DECL.
6636
6637         * cp-tree.h (TYPE_REFFN_P): New macro.
6638         * decl.c (bad_specifiers): Check it, too.
6639
6640         * rtti.c (create_pseudo_type_info): Set CLASSTYPE_INTERFACE_ONLY
6641         on the __*_type_info type if we haven't seen a definition.
6642
6643 2001-12-05  Neil Booth  <neil@daikokuya.demon.co.uk>
6644
6645         * decl.c: Include c-common.h.
6646         (shadow_warning): Move to c-common.c.
6647
6648 Wed Dec  5 17:00:49 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6649
6650         * decl.c (duplicate_decls): Don't copy DECL_NO_CHECK_MEMORY_USAGE.
6651
6652 2001-12-04  Nathan Sidwell  <nathan@codesourcery.com>
6653
6654         * pt.c (end_template_parm_list): Clear TREE_CHAIN of each parm.
6655
6656 2001-12-04  Nathan Sidwell  <nathan@codesourcery.com>
6657
6658         PR g++/164
6659         * init.c (sort_base_init): Allow binfos to be directly specified.
6660         * method.c (do_build_copy_constructor): Explicitly convert to the
6661         base instance.
6662         (do_build_assign_ref): Likewise.
6663
6664 2001-12-03  Hans-Peter Nilsson  <hp@bitrange.com>
6665
6666         * decl.c (xref_basetypes): Don't use C99 construct in tag_code
6667         declaration and initialization.
6668
6669 2001-12-03  Neil Booth  <neil@daikokuya.demon.co.uk>
6670
6671         * typeck2.c: Remove leading capital from diagnostic messages, as
6672         per GNU coding standards.
6673
6674 2001-12-03  Mumit Khan  <khan@nanotech.wisc.edu>
6675
6676         PR c++/3394
6677         * decl.c (xref_basetypes): Handle attributes between
6678         'class' and name.
6679
6680 2001-12-03  Nathan Sidwell  <nathan@codesourcery.com>
6681
6682         PR g++/3381
6683         * parse.y (named_complex_class_head_sans_basetype): Add new
6684         reduction.
6685         * Make-lang.in (parse.c): Adjust expected conflict count.
6686
6687 2001-12-03  Jason Merrill  <jason@redhat.com>
6688
6689         * class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the
6690         immediate binfos for our virtual bases.
6691
6692 2001-12-02  Neil Booth  <neil@daikokuya.demon.co.uk>
6693
6694         * call.c (build_java_interface_fn_ref): Similarly.
6695         * except.c (is_admissible_throw_operand): Similarly.
6696         * init.c (build_java_class_ref): Similarly.
6697         * xref.c (open_xref_file): Similarly.
6698
6699 2001-12-01  Neil Booth  <neil@daikokuya.demon.co.uk>
6700
6701         * class.c (finish_struct): Remove trailing periods from messages.
6702         * decl.c (check_tag_decl): Similarly.
6703         * lex.c (cxx_set_yydebug): Similarly.
6704         * typeck2.c (friendly_abort): Similarly.
6705
6706 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
6707
6708         PR c++/3048
6709         * cp-tree.h (ovl_member): Remove.
6710         * decl2.c (merge_functions): Handle extern "C" functions
6711         specially.
6712         * tree.c (ovl_member): Remove.
6713
6714 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
6715
6716         PR c++/4842
6717         * class.c (get_basefndecls): Take an IDENTIFIER_NODE, not a
6718         FUNCTION_DECL, as input.
6719         (mark_overriders): Remove.
6720         (warn_hidden): Rework for the new ABI.
6721
6722 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
6723
6724         PR c++/3471
6725         * call.c (convert_like_real): Do not build additional temporaries
6726         for rvalues of class type.
6727
6728 2001-11-28  Nathan Sidwell  <nathan@codesourcery.com>
6729
6730         * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Use lookup base.
6731         (ACCESSIBLY_UNIQUELY_DERIVED_FROM_P): Likewise.
6732         (PUBLICLY_UNIQUELY_DERIVED_FROM_P: Likewise.
6733         (DERIVED_FROM_P): Likewise.
6734         (enum base_access): Renumber, add ba_quiet bit mask.
6735         (get_binfo): Remove.
6736         (get_base_distance): Remove.
6737         (binfo_value): Remove.
6738         (ACCESSIBLY_DERIVED_FROM_P): Remove.
6739         * call.c (standard_conversion): Use lookup_base.
6740         * class.c (strictly_overrides): Likewise.
6741         (layout_virtual_bases): Likewise.
6742         (warn_about_ambiguous_direct_bases): Likewise.
6743         (is_base_of_enclosing_class): Likewise.
6744         (add_vcall_offset_vtbl_entries_1): Likewise.
6745         * cvt.c (build_up_reference): Adjust comment.
6746         * init.c (build_member_call): Reformat.
6747         * search.c (get_binfo): Remove.
6748         (get_base_distance_recursive): Remove.
6749         (get_base_distance): Remove.
6750         (lookup_base_r): Tweak.
6751         (lookup_base): Add ba_quiet control. Complete the types here.
6752         (covariant_return_p): Use lookup_base.
6753         * tree.c (binfo_value): Remove.
6754         (maybe_dummy_object): Use lookup_base.
6755         * typeck.c (build_static_cast): Use lookup_base.
6756         (get_delta_difference): Likewise.
6757         * typeck2.c (binfo_or_else): Use lookup_base.
6758         (build_scoped_ref): Add back error_mark_check.
6759         (build_m_component_ref): Use lookup_base.
6760
6761 2001-11-29  Joseph S. Myers  <jsm28@cam.ac.uk>
6762
6763         * Make-lang.in (c++.generated-manpages): New dummy target.
6764
6765 Tue Nov 27 09:03:47 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6766
6767         * Make-lang.in (cp-lang.o): Depends on c-common.h.
6768         * cp-lang.c (c-common.h): Include.
6769         (LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_SAFE_FROM_P): New hooks.
6770         * decl.c (cxx_init_decl_processing): Don't set lang_safe_from_p.
6771         * expr.c (init_cplus_expand): Don't set lang_expand_constant.
6772
6773 2001-11-26  Neil Booth  <neil@daikokuya.demon.co.uk>
6774
6775         * decl2.c (c_language): Move to c-common.c.
6776         * lex.c (cxx_post_options, cxx_init_options): Use c-common.c
6777         functions.
6778         (cxx_init): Update.
6779
6780 2001-11-26  Jason Merrill  <jason@redhat.com>
6781
6782         * call.c (joust): Remove COND_EXPR hack.
6783
6784 2001-11-25  Aldy Hernandez  <aldyh@redhat.com>
6785
6786         * search.c (lookup_base_r): Declare bk in variable declaration
6787         space.
6788
6789 2001-11-25  Nathan Sidwell  <nathan@codesourcery.com>
6790
6791         PR g++/3145
6792         * class.c (build_vbase_pointer): Remove.
6793         (build_vbase_path): Remove.
6794         (build_base_path): New function.
6795         * cp-tree.h (base_access, base_kind): New enumerations.
6796         (build_base_path): Declare.
6797         (convert_pointer_to_real): Remove.
6798         (convert_pointer_to): Remove.
6799         (lookup_base): Declare.
6800         (convert_pointer_to_vbase): Remove.
6801         * call.c (build_scoped_method_call): Use lookup_base &
6802         build_base_path instead of convert_pointer_to_real,
6803         get_base_distance & get_binfo.
6804         (build_over_call): Likewise.
6805         * cvt.c (cp_convert_to_pointer): Likewise.
6806         (convert_to_pointer_force): Likewise.
6807         (build_up_reference): Likewise.
6808         (convert_pointer_to_real): Remove.
6809         (convert_pointer_to): Remove.
6810         * init.c (dfs_initialize_vtbl_ptrs): Use build_base_path
6811         instead of convert_pointer_to_vbase & build_vbase_path.
6812         (emit_base_init): Use build_base_path instead of
6813         convert_pointer_to_real.
6814         (expand_virtual_init): Lose unrequired conversions.
6815         (resolve_offset_ref): Use lookup_base and build_base_path
6816         instead of convert_pointer_to.
6817         * rtti.c (build_dynamic_cast_1): Use lookup_base &
6818         build_base_path instead of get_base_distance & build_vbase_path.
6819         * search.c (get_vbase_1): Remove.
6820         (get_vbase): Remove.
6821         (convert_pointer_to_vbase): Remove.
6822         (lookup_base_r): New function.
6823         (lookup_base): New function.
6824         * typeck.c (require_complete_type): Use lookup_base &
6825         build_base_path instead of convert_pointer_to.
6826         (build_component_ref): Likewise.
6827         (build_x_function_call): Likewise.
6828         (get_member_function_from_ptrfunc): Likewise.
6829         (build_component_addr): Likewise.
6830         * typeck2.c (build_scoped_ref): Likewise.
6831
6832 2001-11-22  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6833
6834         * cp-tree.h (CP_TYPE_QUALS): Removed.
6835         * decl.c (cxx_init_decl_processing): Don't set lang_dump_tree.
6836         * cp-lang.c: Set LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN and
6837         LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN.
6838         * dump.c (cp_dump_tree): Use void* dump_info argument to match
6839         lang-hooks prototype.
6840         * call.c, cp-tree.h, cvt.c, decl.c, init.c, mangle.c, method.c, pt.c,
6841         rtti.c, semantics.c, tree.c, typeck.c, typeck2.c: All references to
6842         CP_TYPE_QUALS changed to cp_type_quals.
6843         * Make-lang.in: References to c-dump.h changed to tree-dump.h.
6844         (CXX_C_OBJS): Remove c-dump.o.
6845
6846 2001-11-21  Mark Mitchell  <mark@codesourcery.com>
6847
6848         PR c++/3637
6849         * pt.c (lookup_template_class): Ensure that all specializations
6850         are registered on the list corresponding to the most general
6851         template.
6852
6853 2001-11-20  Mark Mitchell  <mark@codesourcery.com>
6854
6855         * call.c (non_reference): Add documentation.
6856         (convert_class_to_reference): Do not strip reference types
6857         from conversion operators.
6858         (maybe_handle_ref_bind): Simplify.
6859         (compare_ics): Correct handling of references.
6860
6861 2001-11-19  John Wilkinson <johnw@research.att.com>
6862
6863         * dump.c (dump_op): New function.
6864         (cp_dump_tree): Dump CLASSTYPE_TEMPLATE_SPECIALIZATION.  Use
6865         dump_op.  Dump DECL_MUTABLE, access and staticness for VAR_DECLs.
6866         DECL_PURE_VIRTUAL_P, DECL_VIRTUAL_P,
6867
6868 2001-11-19  Mark Mitchell  <mark@codesourcery.com>
6869
6870         PR4629
6871         * semantics.c (finish_sizeof): Make sure that expression created
6872         while processing a template do not have a type.
6873         (finish_alignof): Likewise.
6874         * typeck.c (c_sizeof): Likewise.
6875         (expr_sizeof): Likewise.
6876
6877 2001-11-18  Neil Booth  <neil@daikokuya.demon.co.uk>
6878
6879         * lex.c (cxx_finish): Call c_common_finish.
6880         (finish_parse): Remove.
6881
6882 2001-11-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6883
6884         * decl.c (create_array_type_for_decl): Check if NAME is NULL_TREE
6885         when displaying error message about missing array bounds.
6886
6887 2001-11-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6888
6889         * mangle.c (write_expression): Handle CAST_EXPR, STATIC_CAST_EXPR,
6890         CONST_CAST_EXPR.
6891         * operators.def: Add CAST_EXPR, STATIC_CAST_EXPR, CONST_CAST_EXPR.
6892
6893 2001-11-16  Neil Booth  <neil@daikokuya.demon.co.uk>
6894
6895         * cp-tree.h (print_class_statistics): Restore.
6896
6897 2001-11-15  Jason Merrill  <jason@redhat.com>
6898
6899         * method.c (use_thunk): Don't emit debugging information for thunks.
6900
6901         * parse.y: Add ... IDENTIFIER SCOPE and ... PTYPENAME SCOPE expansions.
6902         * decl.c (make_typename_type): Handle getting a class template.
6903         * search.c (lookup_field_r): A class template is good enough for
6904         want_type.
6905
6906         * call.c (convert_like_real): Only use cp_convert for the bad part.
6907         (standard_conversion): Also allow bad int->enum.
6908         * typeck.c (ptr_reasonably_similar): Also allow functions to
6909         interconvert.  Pointers to same-size integers are reasonably
6910         similar.
6911
6912         * cvt.c (convert_to_void): If we build a new COND_EXPR, always
6913         give it void type.
6914
6915 2001-11-15  Nathan Sidwell  <nathan@codesourcery.com>
6916
6917         PR g++/3154
6918         * init.c (sort_base_init): Remove unreachable code.
6919         (expand_member_init): Adjust comment to reflect reality. Simplify
6920         and remove unreachable code.
6921
6922 2001-11-15  Neil Booth  <neil@daikokuya.demon.co.uk>
6923
6924         * cp-tree.h (init_reswords, cxx_init_decl_processing): New.
6925         (cxx_init): Update prototype.
6926         * decl.c (init_decl_processing): Rename.  Move null node init
6927         to its creation time.
6928         * lex.c (cxx_init_options): Update.
6929         (cxx_init): Combine with old init_parse; also call
6930         cxx_init_decl_processing.
6931
6932 2001-11-14  Richard Sandiford  <rsandifo@redhat.com>
6933
6934         * decl.c (check_initializer): Try to complete the type of an
6935         array element before checking whether it's complete.  Don't
6936         complain about arrays with complete element types but an
6937         unknown size.
6938         (cp_finish_decl): Build the hierarchical constructor before
6939         calling maybe_deduce_size_from_array_init.
6940
6941 2001-11-14  Joseph S. Myers  <jsm28@cam.ac.uk>
6942
6943         * Make-lang.in: Change all uses of $(manext) to $(man1ext).
6944
6945 2001-11-13  Nathan Sidwell  <nathan@codesourcery.com>
6946
6947         PR g++/4206
6948         * parse.y (already_scoped_stmt): Remove.
6949         (simple_stmt, WHILE & FOR): Use implicitly_scoped_stmt.
6950
6951 2001-11-12  H.J. Lu <hjl@gnu.org>
6952
6953         * cvt.c (ocp_convert): Don't warn the address of a weak
6954         function is always `true'.
6955
6956 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
6957
6958         * cp-lang.c (LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
6959         LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
6960         LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): Override.
6961         * cp-tree.h (print_class_statistics): Remove.
6962         (cxx_print_statistics, cxx_print_xnode, cxx_print_decl, cxx_print_type,
6963         cxx_print_identifier, cxx_set_yydebug): New.
6964         * lex.c (set_yydebug): Rename c_set_yydebug.
6965         * ptree.c (print_lang_decl, print_lang_type, print_lang_identifier,
6966         lang_print_xnode): Rename.
6967         * tree.c (print_lang_statistics): Rename.
6968
6969 2001-11-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6970
6971         * class.c (dump_array): Fix format specifier warning.
6972
6973 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
6974
6975         * cp-lang.c (LANG_HOOKS_NAME): Override.
6976         (struct lang_hooks): Constify.
6977         * lex.c (cxx_init_options): Update.
6978         (lang_identify): Remove.
6979         * parse.y (language_string): Remove.
6980
6981 2001-11-08  Andreas Franck  <afranck@gmx.de>
6982
6983         * Make-lang.in (CXX_INSTALL_NAME, GXX_CROSS_NAME,
6984         DEMANGLER_CROSS_NAME): Handle program_transform_name the way
6985         suggested by autoconf.
6986         (GXX_TARGET_INSTALL_NAME, CXX_TARGET_INSTALL_NAME): Define.
6987         (c++.install-common): Use the transformed target alias names.
6988
6989 2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
6990
6991         * Make-lang.in: Update.
6992         * cp-lang.c: Include langhooks-def.h.
6993
6994 2001-11-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6995
6996         * pt.c (tsubst_copy): Call tsubst for TYPEOF_EXPR.
6997
6998 2001-11-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6999
7000         * lex.c (copy_lang_type): Add static prototype.
7001
7002 2001-11-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7003
7004         * pt.c (unify): Handle SCOPE_REF.
7005
7006 2001-11-01  Jakub Jelinek  <jakub@redhat.com>
7007
7008         * tree.c (cp_copy_res_decl_for_inlining): Adjust
7009         DECL_ABSTRACT_ORIGIN for the return variable.
7010
7011 2001-10-31  Zack Weinberg  <zack@codesourcery.com>
7012
7013         *  Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
7014
7015 2001-10-28  Joseph S. Myers  <jsm28@cam.ac.uk>
7016
7017         * ChangeLog.1, ChangeLog.2, ChangeLog, class.c, decl2.c, search.c,
7018         semantics.c, spew.c: Fix spelling errors.
7019
7020 2001-10-27  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7021
7022         * decl2.c (validate_nonmember_using_decl): Handle NAMESPACE_DECL.
7023
7024 2001-10-25  Zack Weinberg  <zack@codesourcery.com>
7025
7026         * cp-lang.c: Redefine LANG_HOOKS_CLEAR_BINDING_STACK to
7027         pop_everything.
7028
7029 Tue Oct 23 14:00:20 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7030
7031         * cp-lang.c (cxx_get_alias_set): New function.
7032         Point LANG_HOOKS_GET_ALIAS_SET to it.
7033
7034 2001-10-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7035
7036         * cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
7037         * cp-tree.h (make_unbound_class_template): Prototype new function.
7038         * decl.c (make_unbound_class_template): New function.
7039         * decl2.c (arg_assoc_template_arg): Handle UNBOUND_CLASS_TEMPLATE.
7040         * error.c (dump_type): Likewise.
7041         * mangle.c (write_type): Likewise.
7042         * parse.y (template_parm): Likewise.
7043         (template_argument): Use make_unbound_class_template.
7044         * pt.c (convert_template_argument): Handle UNBOUND_CLASS_TEMPLATE.
7045         (tsubst): Likewise.
7046         (tsubst_copy): Likewise.
7047         (unify): Likewise.
7048         * tree.c (walk_tree): Likewise.
7049         * typeck.c (comptypes): Likewise.
7050
7051 2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7052
7053         * xref.c (GNU_xref_member): Use safe-ctype macros and/or fold
7054         extra calls into fewer ones.
7055
7056 2001-10-18  Alexandre Oliva  <aoliva@redhat.com>
7057
7058         * decl.c (duplicate_decls): Propagate DECL_UNINLINABLE.
7059         Warn when merging inline with attribute noinline.
7060         (start_decl, start_function): Warn if inline and attribute
7061         noinline appear in the same declaration.
7062
7063 2001-10-16  H.J. Lu <hjl@gnu.org>
7064
7065         * cp-tree.h (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Defined
7066         for tree checking disabled.
7067
7068 2001-10-16  Hans-Peter Nilsson  <hp@axis.com>
7069
7070         * cp-tree.h (VFIELD_NAME_FORMAT) [NO_DOLLAR_IN_LABEL &&
7071         NO_DOT_IN_LABEL]: Adjust to match VFIELD_NAME.
7072
7073 2001-10-15  Richard Sandiford  <rsandifo@redhat.com>
7074
7075         * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Define.
7076         (unify): Only handle MINUS_EXPR specially if the above flag is set
7077         and the subtracted constant is 1.  Clear the flag on recursive calls.
7078         Set it when unifying the maximum value in an INTEGER_TYPE's range.
7079
7080 2001-10-15  Richard Sandiford  <rsandifo@redhat.com>
7081
7082         * decl.c (bad_specifiers): Don't allow exception specifications
7083         on any typedefs.
7084
7085 2001-10-14  Neil Booth  <neil@daikokuya.demon.co.uk>
7086
7087         * cp/lex.c (init_cp_pragma): Similarly.
7088
7089 2001-10-13  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7090
7091         * pt.c (lookup_template_class): Build complete template arguments
7092         for BOUND_TEMPLATE_TEMPLATE_PARM.
7093
7094 2001-10-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7095
7096         * cp-tree.h (TYPE_BINFO): Update comment.
7097         (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): New macro.
7098         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Use template_info.
7099         (TYPENAME_TYPE_FULLNAME): Use TYPE_FIELDS.
7100         (copy_type): Prototype new function.
7101         * lex.c (copy_lang_decl): Gather tree node statistics.
7102         (copy_lang_type): New function.
7103         (copy_type): Likewise.
7104         (cp_make_lang_type): Create lang_type for
7105         BOUND_TEMPLATE_TEMPLATE_PARM.  Set TYPE_BINFO for TYPENAME_TYPE
7106         and BOUND_TEMPLATE_TEMPLATE_PARM.
7107         * pt.c (tsubst): Use copy_type instead of copy_node.
7108         * search.c (lookup_field_1): Ignore TYPENAME_TYPE.
7109
7110 2001-10-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7111
7112         * pt.c (determine_specialization): Ignore functions without
7113         DECL_TEMPLATE_INFO.
7114
7115 2001-10-12  Nathan Sidwell  <nathan@codesourcery.com>
7116
7117         PR g++/4476
7118         * typeck2.c (abstract_virtuals_error): Ignore incomplete classes.
7119
7120 2001-10-11  Jason Merrill  <jason_merrill@redhat.com>
7121
7122         * typeck2.c (store_init_value): Don't re-digest a bracketed
7123         initializer.
7124
7125         * class.c (finish_struct_anon): Use TYPE_ANONYMOUS_P instead of
7126         ANON_AGGR_TYPE_P.
7127
7128 2001-10-11  Richard Henderson  <rth@redhat.com>
7129
7130         * class.c (build_vtable_entry_ref): Create a VTABLE_REF instead
7131         of an asm statement.
7132         (build_vtbl_ref_1): Split out from build_vtbl_ref.
7133         (build_vfn_ref): Use it to handle vtable descriptors before
7134         calling build_vtable_entry_ref.
7135         * decl2.c (output_vtable_inherit): Use assemble_vtable_inherit.
7136
7137 2001-10-10  Richard Henderson  <rth@redhat.com>
7138
7139         * parse.y (asm_operand): Allow named operands.
7140         * semantics.c (finish_asm_stmt): Tweek for changed location
7141         of the operand constraint.
7142
7143 2001-10-09  Jason Merrill  <jason_merrill@redhat.com>
7144
7145         * call.c (standard_conversion): Add bad conversion between
7146         integers and pointers.
7147         (convert_like_real): Don't use convert_for_initialization for bad
7148         conversions; complain here and use cp_convert.
7149         (build_over_call): Don't handle bad conversions specially.
7150         (perform_implicit_conversion): Allow bad conversions.
7151         (can_convert_arg_bad): New fn.
7152         * cp-tree.h: Declare it.
7153         * typeck.c (convert_for_assignment): Use it.
7154         (ptr_reasonably_similar): Any target type is similar to void.
7155
7156 2001-10-08  Alexandre Oliva  <aoliva@redhat.com>
7157
7158         * Make-lang.in (CXX_OBJS): Added cp-lang.o.
7159         (cp/cp-lang.o): New rule.
7160         * cp-tree.h: Declare hooks.
7161         * tree.c: Make hooks non-static.
7162         (init_tree): Don't initialize hooks here.
7163         * lex.c: Likewise.  Move definition of lang_hooks to...
7164         * cp-lang.c: ... new file.
7165
7166 2001-10-08  Richard Henderson  <rth@redhat.com>
7167
7168         * cp-tree.h (struct lang_decl_flags): Remove declared_inline.
7169         (DECL_DECLARED_INLINE_P): Use the bit in struct c_lang_decl.
7170
7171 2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7172
7173         * class.c (build_vtable_entry_ref): Const-ify.
7174         * decl.c (predefined_identifier,
7175         initialize_predefined_identifiers): Likewise.
7176         * init.c (build_new_1): Likewise.
7177         * lex.c (cplus_tree_code_type, cplus_tree_code_length, resword):
7178         Likewise.
7179
7180 2001-10-05  Alexandre Oliva  <aoliva@redhat.com>
7181
7182         * optimize.c (struct inline_data): Moved to ../tree-inline.c.
7183         (INSNS_PER_STMT): Likewise.
7184         (remap_decl, remap_block, copy_scopy_stmt, copy_body_r): Likewise.
7185         (copy_body, initialize_inlined_parameters): Likewise.
7186         (declare_return_variable, inlinable_function_p): Likewise.
7187         (expand_call_inline, expand_calls_inline): Likewise.
7188         (optimize_inline_calls, clone_body): Likewise.
7189         * tree.c (walk_tree): Moved to ../tree-inline.c.
7190         (walk_tree_without_duplicates): Likewise.
7191         (copy_tree_r, remap_save_expr): Likewise.
7192
7193 2001-10-04  Alexandre Oliva  <aoliva@redhat.com>
7194
7195         * Make-lang.in (cp/decl.o, cp/tree.o): Depend on tree-inline.h.
7196         (cp/pt.o, cp/semantics.o, cp/optimize.o): Likewise.
7197         * cp-tree.h (lang_decl): Moved inlined_fns to tree_decl.
7198         (TREE_READONLY_DECL_P, DECL_INLINED_FNS): Moved to ../tree.h.
7199         (flag_inline_trees): Moved declaration to ../tree-inline.h.
7200         (walk_tree): Moved declaration to ../tree-inline.h.
7201         (walk_tree_without_duplicates, copy_tree_r): Likewise.
7202         (remap_save_expr): Likewise.
7203         * decl.c: Include tree-inline.h.
7204         (lang_mark_tree): Don't mark inlined_fns.
7205         * decl2.c (flag_inline_trees): Moved defn to ../tree-inline.c.
7206         * optimize.c: Include tree-inline.h.
7207         (optimize_inline_calls): Move declaration to ../tree.h, as
7208         non-static.
7209         (remap_decl): Use language-independent constructs and hooks.
7210         (remap_block, copy_body_r, declare_return_variable): Likewise.
7211         (inlinable_function_p): Likewise.  Don't test for
7212         DECL_LANG_SPECIFIC before DECL_INLINED_FNS as inlined_fns is
7213         no longer language-specific.
7214         (optimize_inline_calls): Likewise.  Make it non-static.  Moved
7215         call of dump_function to...
7216         (optimize_function): Here...
7217         (clone_body): New function, extracted from...
7218         (maybe_clone_body): ... here.  Build decl_map locally and pass
7219         it on to clone_body.
7220         * pt.c, semantics.c: Include tree-inline.h.
7221         * tree.c: Likewise.
7222         (cp_walk_subtrees): New language-specific hook for tree inlining.
7223         (cp_cannot_inline_tree_fn, cp_add_pending_fn_decls,
7224         cp_is_overload_p, cp_auto_var_in_fn_p,
7225         cp_copy_res_decl_for_inlining): Likewise.
7226         (walk_tree): Move language-specific constructs into...
7227         (cp_walk_subtrees): this new function.
7228         (copy_tree_r): Use language-independent constructs and hooks.
7229         (init_tree): Initialize tree inlining hooks.
7230         (remap_save_expr): Adjust prototype so that the declaration
7231         does not require the definition of splay_tree.
7232
7233 2001-10-03  John David Anglin  <dave@hiauly1.hia.nrc.ca>
7234
7235         * rtti.c (get_tinfo_decl): Call typeinfo_in_lib_p with the type used
7236         to build the declaration instead of the declaration itself.
7237
7238 2001-10-02  Jason Merrill  <jason_merrill@redhat.com>
7239
7240         * decl2.c (cxx_decode_option): Add 'else'.
7241
7242         * spew.c (end_input): No longer static.
7243         * cp-tree.h: Declare it.
7244         * parse.y (datadef): Add "error END_OF_SAVED_INPUT" expansion.
7245
7246 2001-10-02  Joseph S. Myers  <jsm28@cam.ac.uk>
7247
7248         * call.c (build_over_call), typeck.c (build_function_call_real):
7249         Pass type attributes to check_function_format rather than name or
7250         assembler name.  Don't require there to be a name or assembler
7251         name to check formats.
7252
7253 2001-10-02  Joseph S. Myers  <jsm28@cam.ac.uk>
7254
7255         * decl.c (init_decl_processing): Don't call
7256         init_function_format_info.  Initialize lang_attribute_table
7257         earlier.
7258         (builtin_function): Call decl_attributes.
7259         (insert_default_attributes): New.
7260
7261 2001-10-01  Jason Merrill  <jason_merrill@redhat.com>
7262
7263         * decl.c (grokdeclarator): Copy array typedef handling from C
7264         frontend.
7265
7266         * decl.c (grokdeclarator): Copy too-large array handling from C
7267         frontend.
7268
7269 2001-09-29  Alexandre Oliva  <aoliva@redhat.com>
7270
7271         * config-lang.in (target_libs): Added target-gperf, so that we
7272         don't try to build it if C++ is disabled.
7273
7274 2001-09-23  Zack Weinberg  <zack@codesourcery.com>
7275
7276         * Make-lang.in (CXX_OBJS): Take out cp/errfn.o.
7277         (cp/errfn.o): Delete rule.
7278         (cp/error.o): Depend on flags.h.
7279         * errfn.c: Delete file.
7280         * cp-tree.h: Declare warn_deprecated.  Remove definitions of
7281         TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS,
7282         and TFF_TEMPLATE_DEFAULT_ARGUMENTS. #define cp_error, cp_warning,
7283         cp_pedwarn, and cp_compiler_error to error, warning, pedwarn, and
7284         internal_error respectively.  Make cp_deprecated into a macro.
7285         Don't define cp_printer typedef or declare cp_printers.
7286         * error.c: Include flags.h.
7287         Delete: struct tree_formatting_info, print_function_argument_list,
7288         print_declaration, print_expression, print_function_declaration,
7289         print_function_parameter, print_type_id, print_cv_qualifier_seq,
7290         print_type_specifier_seq, print_simple_type_specifier,
7291         print_elaborated_type_specifier, print_rest_of_abstract_declarator,
7292         print_parameter_declaration_clause, print_exception_specification,
7293         print_nested_name_specifier, and definition of cp_printers.
7294         (locate_error): New function.
7295         (cp_error_at, cp_warning_at, cp_pedwarn_at): Moved here and
7296         rewritten in terms of locate_error and diagnostic.c.
7297         (cp_tree_printer): Rename cp_printer; wire up to *_to_string
7298         instead of deleted print_* routines.  Handle %C, %L, %O, %Q also.
7299         (init_error): Adjust to match.
7300
7301 Sat Sep 22 09:15:31 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7302
7303         * Make-lang.in (CXX_C_OBJS): Add attribs.o.
7304
7305 2001-09-21  Richard Henderson  <rth@redhat.com>
7306
7307         * class.c (set_vindex): Mind TARGET_VTABLE_USES_DESCRIPTORS.
7308         (build_vtbl_initializer): Likewise.
7309         (build_vfn_ref): New.
7310         * cp-tree.h: Declare it.
7311         * call.c (build_over_call): Use it.
7312         * decl2.c (mark_vtable_entries): Mark FDESC_EXPR.
7313         * typeck.c (get_member_function_from_ptrfunc): Mind descriptors.
7314
7315 Fri Sep 21 08:16:19 2001  J"orn Rennecke <amylaar@redhat.com>
7316
7317         * decl.c (grokdeclarator): Use C syntax for attr_flags declaration.
7318
7319 2001-09-21  Joseph S. Myers  <jsm28@cam.ac.uk>
7320
7321         Table-driven attributes.
7322         * decl.c: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
7323         * decl2.c (cplus_decl_attributes): Only take one attributes
7324         parameter.
7325         * cp-tree.c (cplus_decl_attributes): Update prototype.
7326         * class.c (finish_struct), decl.c (start_decl, start_function),
7327         decl2.c (grokfield), friend.c (do_friend), parse.y
7328         (parse_bitfield): Update calls to cplus_decl_attributes.
7329         * decl.c (grokdeclarator): Take a pointer to a single ordinary
7330         attribute list.
7331         * decl.h (grokdeclarator): Update prototype.
7332         * decl2.c (grokfield): Take a single ordinary attribute list.
7333         * friend.c (do_friend): Likewise.
7334         * decl.c (shadow_tag, groktypename, start_decl,
7335         start_handler_parms, grokdeclarator, grokparms, start_function,
7336         start_method), decl2.c (grokfield, grokbitfield, grokoptypename),
7337         parse.y (parse_field, parse_bitfield, component_decl_1), pt.c
7338         (process_template_parm, do_decl_instantiation): Pass single
7339         ordinary attribute lists around.
7340         * decl.c (grokdeclarator): Correct handling of nested attributes.
7341         Revert the patch
7342         1998-10-18  Jason Merrill  <jason@yorick.cygnus.com>
7343                 * decl.c (grokdeclarator): Embedded attrs bind to the right,
7344                 not the left.
7345         .
7346         * cp-tree.h (cp_valid_lang_attribute): Remove declaration
7347         (cp_attribute_table): Declare.
7348         * decl.c (valid_lang_attribute): Don't define.
7349         (lang_attribute_table): Define.
7350         (init_decl_processing): Initialize lang_attribute_table instead of
7351         valid_lang_attribute.
7352         * tree.c (cp_valid_lang_attribute): Remove.
7353         (handle_java_interface_attribute, handle_com_interface_attribute,
7354         handle_init_priority_attribute): New functions.
7355         (cp_attribute_table): New array.
7356         * decl2.c (import_export_class): Don't use
7357         targetm.valid_type_attribute.
7358
7359 2001-09-15  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
7360
7361         * Make-lang.in (cp/error.o): Depend on real.h
7362         * error.c: #include "real.h"
7363
7364 2001-09-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7365
7366         * mangle.c (mangle_conv_op_name_for_type): Use concat in lieu of
7367         xmalloc/strcpy/strcat.
7368
7369 2001-09-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7370
7371         * decl.c (warn_extern_redeclared_static, cp_make_fname_decl):
7372         Const-ification.
7373         * pt.c (tsubst_decl): Likewise.
7374
7375 2001-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7376
7377         * decl2.c (lang_f_options): Const-ification.
7378         * lex.c (cplus_tree_code_name): Likewise.
7379         * spew.c (yyerror): Likewise.
7380
7381 2001-09-06  Nathan Sidwell  <nathan@codesourcery.com>
7382
7383         PR c++/3986
7384         * class.c (force_canonical_binfo_r): Check & move an indirect
7385         primary base first.
7386         (force_canonical_binfo): Check that it's not already
7387         canonical.
7388         (mark_primary_virtual_base): Remove BINFO parameter.
7389         (mark_primary_bases): Adjust, set BINFO_LOST_PRIMARY_P here.
7390
7391 2001-09-06  Nathan Sidwell  <nathan@codesourcery.com>
7392
7393         Remove TYPE_NONCOPIED_PARTS.
7394         * cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Map onto
7395         CLASSTYPE_PURE_VIRTUALS.
7396         (TYPE_RAISES_EXCEPTIONS): Map onto TYPE_BINFO.
7397         * class.c (duplicate_tag_error): Remove TYPE_NONCOPIED_PARTS.
7398         (layout_class_type): Don't call fixup_inline_methods here ...
7399         (finish_struct_1): ... call it here.
7400
7401 2001-09-04  Mark Mitchell  <mark@codesourcery.com>
7402
7403         * decl.c (duplicate_decls): Remove code deadling with
7404         DECL_SAVED_INSNS.
7405         * decl2.c (finish_file): Likewise.
7406         * pt.c (instantiate_decl): Likewise.
7407         * semantics.c (expand_body): Don't defer local functions if
7408         they wouldn't be deferred for some other reason.  Don't
7409         generate RTL for functions that will not be emitted.
7410         (genrtl_start_function): Remove code deadling with
7411         DECL_SAVED_INSNS.
7412         (genrtl_finish_function): Likewise.
7413
7414 2001-09-04  Nathan Sidwell  <nathan@codesourcery.com>
7415
7416         PR c++/4203
7417         * call.c (build_over_call): Do not optimize any empty base
7418         construction.
7419
7420 2001-08-31  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7421
7422         * error.c (dump_template_decl): Output template parameters
7423         together with their specifiers.
7424         Output `class' prefix for template template parameter.
7425         (dump_decl): Fix formatting.
7426
7427 2001-08-30  Kurt Garloff  <garloff@suse.de>
7428
7429         * optimize.c (inlinable_function_p): Allow only smaller single
7430         functions. Halve inline limit after reaching recursive limit.
7431
7432 2001-08-30  Joern Rennecke <amylaar@redhat.com>
7433             Jason Merrill  <jason_merrill@redhat.com>
7434
7435         * class.c (build_vtable_entry_ref): Subtract in char*, not
7436         ptrdiff_t.
7437
7438 2001-08-23  Jason Merrill  <jason_merrill@redhat.com>
7439
7440         * tree.c (cp_build_qualified_type_real): Use get_qualified_type.
7441         (build_cplus_array_type): Use cp_build_qualified_type, not
7442         TYPE_MAIN_VARIANT, to get an unqualified version.
7443
7444         * decl2.c (grok_alignof): Lose.
7445         (build_expr_from_tree): Use expr_sizeof and c_alignof_expr.
7446         * typeck.c (c_alignof): Lose.
7447         * semantics.c (finish_sizeof, finish_alignof): New.
7448         * parse.y: Use them.
7449         * cp-tree.h: Declare them.
7450
7451 2001-08-22  Jason Merrill  <jason_merrill@redhat.com>
7452
7453         * pt.c (tsubst_expr): Hand off to the TREE_CHAIN of a statement.
7454         Don't loop in COMPOUND_STMT, FOR_STMT or TRY_BLOCK.
7455         * tree.c (cp_statement_code_p): A TAG_DEFN is a statement.
7456
7457 2001-08-19  Jakub Jelinek  <jakub@redhat.com>
7458
7459         * typeck2.c (add_exception_specifier): Only require complete type if
7460         not in processing template declaration.
7461
7462 2001-08-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7463
7464         * decl.c: Cast argument to size_t, not HOST_WIDE_INT, in calls to
7465         GNU_xref_start_scope and GNU_xref_end_scope.
7466
7467         * tree.c (TYPE_HASH): Moved to ../tree.h.
7468
7469 2001-08-16  Mark Mitchell  <mark@codesourcery.com>
7470
7471         * cvt.c (convert_to_void): Preserve TREE_SIDE_EFFECTS
7472         on COMPOUND_EXPRs.
7473
7474 2001-08-14  Richard Henderson  <rth@redhat.com>
7475
7476         * class.c, cp-tree.h (build_vfn_ref): Remove.
7477         * call.c, rtti.c: Replace all refernces with build_vtbl_ref.
7478
7479 2001-08-13  Mark Mitchell  <mark@codesourcery.com>
7480
7481         * call.c (build_over_call): Mark COMPOUND_EXPRs generated for
7482         empty class assignment as having side-effects to avoid
7483         spurious warnings.
7484
7485 2001-08-13  Zack Weinberg  <zackw@panix.com>
7486
7487         * Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
7488         * except.c: Include libfuncs.h.
7489
7490 2001-08-11  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
7491
7492         * decl.c (grokdeclarator): Clarify diagnostic message.
7493
7494 2001-08-13  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7495
7496         * decl2.c (do_nonmember_using_decl): Replace using directive
7497         with using declaration in the error message.
7498
7499 2001-08-11  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7500
7501         * pt.c (maybe_fold_nontype_arg): Use TREE_TYPE of ARG as the
7502         criterion to avoid rebuilding expression tree instead of
7503         processing_template_decl.
7504
7505 2001-08-07  Jason Merrill  <jason_merrill@redhat.com>
7506
7507         Support named return value optimization for inlines, too.
7508         * decl.c (finish_function): Nullify returns here.
7509         * semantics.c (genrtl_start_function): Not here.
7510         (cp_expand_stmt): Don't mess with CLEANUP_STMTs.
7511         (nullify_returns_r): No longer static.  Just clear RETURN_EXPR.
7512         Also nullify the CLEANUP_STMT for the nrv.
7513         * cp-tree.h: Declare it.
7514         * optimize.c (declare_return_variable): Replace the nrv with the
7515         return variable.
7516         * typeck.c (check_return_expr): Be more flexible on alignment check.
7517         Ignore cv-quals when checking for a matching type.
7518
7519 2001-08-09  Richard Henderson  <rth@redhat.com>
7520
7521         * decl2.c (finish_objects): Use target hooks instead of
7522         assemble_constructor and assemble_destructor.
7523
7524 2001-08-08  John David Anglin  <dave@hiauly1.hia.nrc.ca>
7525
7526         * g++spec.c (lang_specific_driver): Quote argument after `-Xlinker'.
7527
7528 2001-08-07  Nathan Sidwell  <nathan@codesourcery.com>
7529
7530         PR c++/3820
7531         Stop using TYPE_NONCOPIED_PARTS.
7532         * call.c (build_over_call): Be careful when copy constructing
7533         or assigning to an empty class.
7534         * class.c (check_bases_and_members): It has a
7535         COMPLEX_ASSIGN_REF if it has a vptr.
7536         (layout_class_type): Don't add empty class padding to
7537         TYPE_NONCOPIED_PARTS.
7538         (finish_struct_1): Don't add the VFIELD either.
7539         * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): Mention _copy_
7540         initialization.
7541
7542 2001-08-07  Jason Merrill  <jason_merrill@redhat.com>
7543
7544         * tree.c (walk_tree): Walk siblings even if !walk_subtrees.
7545
7546 2001-08-06  Richard Henderson  <rth@redhat.com>
7547
7548         * decl2.c (finish_objects): Pass a symbol_ref and priority to
7549         assemble_{constructor,destructor}.  Remove priority handling.
7550
7551 2001-08-05  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
7552
7553         Don't allow template-id in using-declaration.
7554         * decl2.c (validate_nonmember_using_decl): Handle template-ids.
7555         (do_class_using_decl): Likewise.
7556
7557 2001-08-04  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
7558
7559         * cp/spew.c (read_token): No need to pop buffers.
7560
7561 2001-08-02  Stan Shebs  <shebs@apple.com>
7562
7563         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY): Remove, no longer used.
7564         (fnaddr_from_vtable_entry): Remove decl.
7565         * method.c (use_thunk): Update comment.
7566
7567 2001-08-01  Andrew Cagney  <ac131313@redhat.com>
7568
7569         * repo.c (get_base_filename): Change return value to const char
7570         pointer.
7571
7572 2001-08-02  Nathan Sidwell  <nathan@codesourcery.com>
7573
7574         Kill -fhonor-std.
7575         * NEWS: Document.
7576         * cp-tree.h (flag_honor_std): Remove.
7577         (CPTI_FAKE_STD): Remove.
7578         (std_node): Remove comment about it being NULL.
7579         (fake_std_node): Remove.
7580         * decl.c (in_fake_std): Remove.
7581         (walk_namespaces_r): Remove fake_std_node check.
7582         (push_namespace): Remove in_fake_std code.
7583         (pop_namespace): Likewise.
7584         (lookup_name_real): Remove fake_std_node check.
7585         (init_decl_processing): Always create std_node. Always add
7586         std:: things there.
7587         (builtin_function): Always put non '_' fns in std.
7588         * decl2.c (flag_honor_std): Remove.
7589         (lang_f_options): Remove honor-std.
7590         (unsupported_options): Add honor-std.
7591         (set_decl_namespace): Remove fake_std_node check.
7592         (validate_nonmember_using_decl): Likewise.
7593         (do_using_directive): Likewise.
7594         (handle_class_head): Likewise.
7595         * dump.c (cp_dump_tree): Likewise.
7596         * except.c (init_exception_processing): Adjust.
7597         * init.c (build_member_call): Remove fake_std_node check.
7598         (build_offset_ref): Likewise.
7599         * lang-options.h: Remove -fhonor-std, -fno-honor-std.
7600         * rtti.c (init_rtti_processing): Adjust.
7601
7602 2001-07-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
7603
7604         * tree.c (cp_tree_equal): WITH_CLEANUP_EXPR node to use its second
7605         operand while calling cp_tree_equal.
7606
7607 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
7608
7609         The 3.0 ABI no longer has vbase pointer fields.
7610         * cp-tree.h (VBASE_NAME, VBASE_NAME_FORMAT, VBASE_NAME_P,
7611         FORMAT_VBASE_NAME): Remove.
7612         * method.c (do_build_copy_constructor): Adjust.
7613         (do_build_assign_ref): Adjust.
7614         * search.c (lookup_field_r): Adjust.
7615         * typeck.c (build_component_ref): Adjust.
7616
7617         The 3.0 ABI always has a vtable pointer at the start of every
7618         polymorphic class.
7619         * rtti.c (build_headof_sub): Remove.
7620         (build_headof): Adjust.
7621         (get_tinfo_decl_dynamic): No need to check flag_rtti
7622         here. Adjust.
7623         (create_real_tinfo_var): Explain why we need a hidden name.
7624
7625 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
7626
7627         PR c++/3631
7628         * class.c (update_vtable_entry_for_fn): The fixed adjustment
7629         of a virtual thunk should be from declaring base.
7630
7631 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
7632
7633         * class.c (dfs_ctor_vtable_bases_queue_p): Always walk into
7634         the shared virtual base, so preserving inheritance graph order.
7635
7636 2001-07-30  Andreas Jaeger  <aj@suse.de>
7637
7638         * decl2.c: Remove unused var global_temp_name_counter.
7639
7640 2001-07-28  Richard Henderson  <rth@redhat.com>
7641
7642         * method.c (pending_inlines): Remove.
7643
7644 2001-07-27  Nathan Sidwell  <nathan@codesourcery.com>
7645
7646         * class.c (mark_primary_virtual_base): Don't adjust base
7647         offsets here.
7648         (dfs_unshared_virtual_bases): Adjust them here.
7649         (mark_primary_bases): Explain why we adjust at the end.
7650
7651 2001-07-27  Nathan Sidwell  <nathan@codesourcery.com>
7652
7653         * class.c (finish_struct_1): When copying the primary base's
7654         VFIELD, make sure we find it is at offset zero.
7655
7656 2001-07-26  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7657
7658         * pt.c (tsubst_template_parms): Call maybe_fold_nontype_arg and
7659         tsubst_expr for default template arguments.
7660
7661 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
7662
7663         PR c++/3621
7664         * spew.c (yylex): Only copy the token's lineno, if it is
7665         nonzero.
7666
7667 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
7668
7669         PR c++/3624
7670         * call.c (resolve_args): Simplify, call
7671         convert_from_reference.
7672         (build_new_op): Resolve and convert from reference ARG1
7673         earlier. Adjust ARG2 & ARG3 resolve and conversion.
7674
7675 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
7676
7677         * decl.c (last_function_parm_tags): Remove.
7678         (current_function_parm_tags): Remove.
7679         (init_decl_processing): Adjust.
7680         (start_function): Adjust.
7681         (store_parm_decls): Adjust.
7682
7683         PR c++/3152
7684         * decl.c (grokdeclarator): Detect when a function typedef is
7685         declaring a function, and create last_function_parms correctly.
7686
7687 2001-07-25  Jason Merrill  <jason_merrill@redhat.com>
7688
7689         * call.c (joust): Only prefer a non-builtin candidate to a builtin
7690         one if they have the same signature.
7691
7692         * cvt.c (build_up_reference): Take DECL parm.  Check TREE_STATIC on
7693         it rather than toplevel_bindings_p.  Give it a mangled name if static.
7694         (convert_to_reference): Adjust.
7695         * decl2.c (get_temp_name): Lose.
7696         * mangle.c (mangle_ref_init_variable): New fn.
7697         (mangle_guard_variable): Strip the ref-init header.
7698         * cp-tree.h: Adjust.
7699         * decl.c (cp_finish_decl): Add the DECL_STMT after processing the
7700         initializer.
7701         (grok_reference_init): Always use DECL_INITIAL.
7702
7703 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
7704
7705         PR c++/3416
7706         * call.c (build_conditional_expr): Recheck args after
7707         conversions.
7708         * cp-tree.h (build_conditional_expr): Move to correct file.
7709         * typeck.c (decay_conversion): Diagnose any unknown types
7710         reaching here.
7711         (build_binary_op): Don't do initial decay or default
7712         conversions on overloaded functions.
7713         (build_static_cast): Don't do a decay conversion here.
7714
7715 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
7716
7717         PR c++/3543
7718         * typeck.c (condition_conversion): Resolve an OFFSET_REF.
7719         * expr.c (cplus_expand_expr): An OFFSET_REF should never get here.
7720
7721 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
7722
7723         * class.c (build_vtbl_or_vbase_field): Remove, move into ...
7724         (create_vtbl_ptr): ... here.
7725
7726 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
7727
7728         * class.c (build_vbase_offset_vbtl_entries): Look for
7729         non-primary base of which we are a sub vtable.
7730
7731 2001-07-24  Phil Edwards  <pme@sources.redhat.com>
7732
7733         * semantics.c (finish_this_expr):  Remove unused code.
7734
7735 2001-07-24  Nathan Sidwell  <nathan@codesourcery.com>
7736
7737         Simplify rtti, now we've only one ABI.
7738         * cp-tree.h (cp_tree_index): Remove CPTI_TINFO_DECL_ID,
7739         CPTI_TINFO_VAR_ID.
7740         (tinfo_decl_id, tinfo_var_id): Remove.
7741         (get_typeid_1): Remove.
7742         * rtti.c
7743         (init_rtti_processing): Remove tinfo_decl_id & tinfo_var_id.
7744         (typeid_ok_p): New function.
7745         (build_type_id): Call typeid_ok_p. Don't call tinfo_from_decl.
7746         (get_tinfo_decl): Remove old abi documentation.
7747         (tinfo_from_decl): Remove.
7748         (get_type_id): Call typeid_ok_p. Absorb get_typeid_1.
7749         (get_typeid_1): Remove.
7750         (get_base_offset): Remove.
7751         (synthesize_tinfo_var): Absorb get_base_offset.
7752         (create_real_tinfo_var): Don't use tinfo_decl_id.
7753
7754 2001-07-23  Graham Stott  <grahams@redhat.com>
7755
7756         * cp/class.c (type_requires_array_cookie): Fix use of uninitialized
7757         variable has_two_argument_delete_p.
7758
7759 2001-07-21  Nathan Sidwell  <nathan@codesourcery.com>
7760
7761         Remove flag_vtable_thunk. It is always on for the 3.0 ABI.
7762         * cp-tree.h (CPTI_DELTA2_IDENTIFIER): Remove.
7763         (CPTI_INDEX_IDENTIFIER): Remove.
7764         (CPT_PFN_OR_DELTA2_IDENTIFIER): Remove.
7765         (delta2_identifier): Remove.
7766         (index_identifier): Remove.
7767         (pfn_or_delta2_identifier): Remove.
7768         (flag_vtable_thunks): Remove.
7769         (VTABLE_DELTA2_NAME): Remove.
7770         (VTABLE_INDEX_NAME): Remove.
7771         (FNADDR_FROM_VTABLE_ENTRY): Adjust.
7772         (vfunc_ptr_type_node): Adjust.
7773         (VTABLE_NAME_PREFIX): Adjust.
7774         (build_vfn_ref): Lose first parameter.
7775         (fixup_all_virtual_upcast_offsets): Remove.
7776         * decl.c (initialize_predefined_identifiers): Remove
7777         delta2_identifier, index_identifier, pfn_or_delta2_identifier.
7778         (init_decl_processing): Remove no-vtable-thunk code.
7779         * decl2.c (flag_vtable_thunks): Remove.
7780         (mark_vtable_entries): Remove no-vtable-thunk code.
7781         * error.c (dump_decl): Remove no-vtable-thunk code.
7782         (dump_expr): Adjust ptr to member function code.
7783         * init.c (initialize_vtable_ptrs): Remove no-vtable-thunk
7784         code.
7785         * rtti.c (build_headof): Remove no-vtable-thunk code.
7786         (get_tinfo_decl_dynamic): Adjust build_vfn_ref call.
7787         * search.c (get_base_distance): Remove expand_upcast_fixups case.
7788         (virtual_context) Remove.
7789         (expand_upcast_fixups): Remove.
7790         (fixup_virtual_upcast_offsets): Remove.
7791         (fixup_all_virtual_upcast_offsets): Remove.
7792         * typeck.c (get_member_function_from_ptrfunc): Remove
7793         no-vtable-thunk code.
7794         * call.c (build_over_call): Adjust call to build_vfn_ref.
7795         * class.c (build_vfn_ref): Lose first parameter. Remove
7796         no-vtable-thunk code.
7797         (build_rtti_vtbl_entries): Remove no-vtable-thunk code.
7798         (build_vtable_entry): Remove no-vtable-thunk code.
7799
7800 2001-07-20  Nathan Sidwell  <nathan@codesourcery.com>
7801
7802         Remove old-abi remnants. Remove comments about old abi
7803         behavior. Remove references to 'new-abi' in comments.
7804         * cp-tree.h: Adjust comments.
7805         (vbase_offsets_in_vtable_p): Delete.
7806         (vcall_offsets_in_vtable_p): Delete.
7807         (vptrs_present_everywhere_p): Delete.
7808         (all_overridden_vfuns_in_vtables_p): Delete.
7809         (merge_primary_and_secondary_vtables_p): Delete.
7810         (TYPE_CONTAINS_VPTR_P): Adjust.
7811         (VTT_NAME_PREFIX): Remove.
7812         (CTOR_VTBL_NAME_PREFIX): Remove.
7813         (init_vbase_pointers): Remove.
7814         * class.c: Adjust coments.
7815         (build_vbase_pointer_fields): Delete.
7816         (build_vbase_pointer): Remove old-abi code.
7817         (build_secondary_vtable): Likewise.
7818         (modify_all_vtables): Likewise.
7819         (create_vtable_ptr): Likewise.
7820         (layout_class_type): Likewise.
7821         (finish_struct_1): Likewise.
7822         (finish_vtbls): Likewise.
7823         (dfs_finish_vtbls): Delete.
7824         (build_vbase_offset_vtbl_entries): Remove old-abi code.
7825         * cvt.c: Adjust comments.
7826         * decl.c: Adjust comments.
7827         * decl2.c: Adjust comments.
7828         * init.c: Adjust comments.
7829         (construct_virtual_bases): Remove old-abi code.
7830         * lang-specs.h: Remove -fno-new-abi.
7831         * mangle.c: Adjust comments.
7832         * rtti.c: Adjust comments.
7833         (get_base_offset): Remove old-abi-code.
7834         * search.c: Adjust comments.
7835         (dfs_init_vbase_pointers): Remove.
7836         (dfs_vtable_path_unmark): Remove.
7837         (init_vbase_pointers): Remove.
7838         * semantics.c: Adjust comments.
7839         (emit_associated_thunks): Remove old-abi code.
7840         * typeck.c: Adjust comments.
7841
7842 2001-07-20  Daniel Berlin  <dan@cgsoftware.com>
7843
7844         * Make-lang.in (cp/optimize.o): Depend on $(PARAMS_H), not
7845         params.h.
7846
7847 2001-07-19  Mark Mitchell  <mark@codesourcery.com>
7848
7849         * class.c (finish_struct_anon): Forbid nested classes.
7850
7851 2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
7852
7853         * decl2.c: Don't include dwarfout.h and dwarf2out.h.
7854         * optimize.c: Include debug.h.
7855         (maybe_clone_body): Use debug hook.
7856         * semantics.c: Include debug.h.
7857         (expand_body): Use debug hook.
7858
7859 2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
7860
7861         * spew.c (read_token, yyerror): Remove CPP_INT, CPP_FLOAT cases.
7862
7863 2001-07-18  Mark Mitchell  <mark@codesourcery.com>
7864
7865         * class.c (type_requires_array_cookie): New function.
7866         (check_methods): Don't try to figure out whether the type needs a
7867         cookie here.
7868         (check_bases_and_members): Set TYPE_VEC_NEW_USES_COOKIE here.
7869         * cp-tree.h (TYPE_VEC_DELETE_TAKES_SIZE): Remove.
7870         (TYPE_VEC_NEW_USES_COOKIE): Reimplement.
7871         * pt.c (instantiate_class_template): Don't set
7872         TYPE_VEC_DELETE_TAKES_SIZE.
7873         * NEWS: Document ABI changes from GCC 3.0.
7874
7875 2001-07-18  Xavier Delacour <xavier@fmaudio.net>,
7876             Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
7877
7878         * NEWS (Changes in GCC 3.0): Fix typo.
7879
7880 2001-07-13  Joseph S. Myers  <jsm28@cam.ac.uk>
7881
7882         * decl2.c (cplus_decl_attributes): Take a pointer to the node to
7883         which attributes are to be attached, and a flags argument.  Update
7884         call to decl_attributes.
7885         (grokfield): Update call to decl_attributes.
7886         * class.c (finish_struct): Update call to cplus_decl_attributes.
7887         * cp-tree.h (cplus_decl_attributes): Update prototype.
7888         * decl.c (start_decl, grokdeclarator, start_function): Update
7889         calls to decl_attributes and cplus_decl_attributes.
7890         * friend.c (do_friend): Update call to cplus_decl_attributes.
7891         * parse.y (parse_bitfield): Update call to cplus_decl_attributes.
7892
7893 2001-07-12  Mark Mitchell  <mark@codesourcery.com>
7894
7895         * decl.c (make_rtl_for_nonlocal_decl): Set DECL_C_HARD_REGISTER
7896         for `register' variables with an asm-specification.
7897
7898 2001-07-11  Mark Mitchell  <mark@codesourcery.com>
7899
7900         * semantics.c (finish_asm_stmt): Mark the output operands
7901         to an asm addressable, if necessary.
7902
7903 2001-07-11  Ben Elliston  <bje@redhat.com>
7904
7905         * Revert this change -- there is a subtle bug.
7906
7907         PR c++/80
7908         * decl.c (finish_enum): New "attributes" argument; pass it to
7909         cplus_decl_attributes.  Use a narrower type if the enum is packed.
7910         * cp-tree.h (finish_enum): Adjust prototype.
7911         * parse.y (enum_head): New non-terminal.
7912         (structsp): Use it. Enums now may be preceded or followed by
7913         optional attributes -- pass their chained tree to finish_enum().
7914         * pt.c (tsubst_enum): Pass NULL_TREE for the new argument.
7915
7916 2001-07-10  Mark Mitchell  <mark@codesourcery.com>
7917
7918         * pt.c (tsubst_decl): Set DECL_CONTEXT for namespace-scope
7919         variables.
7920
7921 2001-07-10  Jason Merrill  <jason_merrill@redhat.com>
7922
7923         * semantics.c (cp_expand_stmt): Fix for null
7924         current_function_return_value.
7925
7926 2001-07-10  Jan van Male  <jan.vanmale@fenk.wau.nl>
7927
7928         * call.c (build_op_delete_call): Initialize fn.
7929         (convert_like_real): Delete conditional.
7930         (joust): Initialize *w and *l.
7931         * class.c: Add prototype for binfo_ctor_vtable.
7932         (get_primary_binfo): Initialize result.
7933         * init.c (build_java_class_ref): Initialize name.
7934
7935 2001-07-09  Erik Rozendaal  <dlr@acm.org>
7936
7937         * typeck.c (unary_complex_lvalue): Do not duplicate the
7938         argument to modify, pre-, or post-increment when used as an
7939         lvalue and when the argument has side-effects.
7940
7941 2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>
7942
7943         * decl.c (start_decl): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
7944         (start_function): Don't call SET_DEFAULT_DECL_ATTRIBUTES.  Call
7945         cplus_decl_attributes even if attrs is NULL.
7946         * friend.c (do_friend): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
7947
7948 2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>
7949
7950         * decl.c (grokdeclarator), decl2.c (cplus_decl_attributes): Update
7951         calls to decl_attributes.
7952
7953 2001-07-06  Ira Ruben   <ira@apple.com>
7954
7955         * cp-tree.def (TEMPLATE_DECL): Update comment. DECL_RESULT should
7956         be DECL_TEMPLATE_RESULT.
7957
7958 2001-07-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7959
7960         * cp-tree.h (copy_template_template_parm): Rename to ...
7961         (bind_template_template_parm): ... here.
7962         * tree.c (copy_template_template_parm): Rename to ...
7963         (bind_template_template_parm): ... here.  Remove the case when
7964         NEWARGS is NULL_TREE.
7965         (copy_tree_r): Don't copy TEMPLATE_TEMPLATE_PARM and
7966         BOUND_TEMPLATE_TEMPLATE_PARM.
7967         * pt.c (lookup_template_class): Adjust.
7968
7969 2001-07-05  Jason Merrill  <jason_merrill@redhat.com>
7970
7971         * cvt.c (convert_lvalue): New fn.
7972         * cp-tree.h: Declare it.
7973         * method.c (do_build_assign_ref): Use it.
7974         (do_build_copy_constructor): Convert parm to base types
7975         before calling base constructors.
7976
7977         * typeck.c (check_return_expr): Check DECL_ALIGN instead of
7978         DECL_USER_ALIGN.  Check flag_elide_constructors instead of
7979         optimize.
7980         * semantics.c (cp_expand_stmt): Don't destroy the named return value.
7981
7982 2001-07-02  Nathan Sidwell  <nathan@codesourcery.com>
7983
7984         * optimize.c (optimize_inline_calls): New function, broken out
7985         of ...
7986         (optimize_function): ... here. Call it. Don't inline if it is
7987         a thunk.
7988         (dump_function): Print name of dump flag causing this dump.
7989         * semantics.c (expand_body): Move thunk inline check to
7990         optimize_function.
7991
7992 2001-06-29  Joseph S. Myers  <jsm28@cam.ac.uk>
7993
7994         * typeck.c (COMP_TYPE_ATTRIBUTES): Don't define.
7995         (comptypes): Use target.comp_type_attributes.
7996
7997 2001-06-29  Nathan Sidwell  <nathan@codesourcery.com>
7998
7999         * cp-tree.h (flag_dump_class_layout): Remove unneeded declaration.
8000
8001 2001-06-28  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
8002
8003         * error.c (lang_print_error_function): Add a `diagnostic_context *'
8004         parameter. Tweak.
8005
8006 2001-06-27  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
8007
8008         * decl2.c (import_export_class): Update.
8009
8010 2001-06-26  Gabriel Dos Reis  <gdr@codesourcery.com>
8011
8012         * error.c (init_error): Adjust settings.
8013
8014 2001-06-26  Gabriel Dos Reis  <gdr@codesourcery.com>
8015
8016         * error.c (init_error): Adjust settings.
8017
8018 2001-06-19  Richard Sandiford  <rsandifo@redhat.com>
8019
8020         * except.c (initialize_handler_parm): Expect __cxa_begin_catch to
8021         return pointers to data members by reference rather than by value.
8022
8023 2001-06-18  Jason Merrill  <jason_merrill@redhat.com>
8024
8025         Implement the Named Return Value optimization.
8026         * cp-tree.h (struct cp_language_function): Add x_return_value.
8027         (current_function_return_value): Now a macro.
8028         * decl.c: Don't define it.
8029         (define_label, finish_case_label): Don't clear it.
8030         (init_decl_processing): Don't register it with GC.
8031         * semantics.c (genrtl_finish_function): Don't check it for
8032         no_return_label.  Copy the RTL from the return value to
8033         current_function_return_value and walk, calling...
8034         (nullify_returns_r): ...this new fn.
8035         * typeck.c (check_return_expr): Set current_function_return_value.
8036
8037 2001-06-15  Jason Merrill  <jason_merrill@redhat.com>
8038
8039         * class.c (dfs_accumulate_vtbl_inits): Just point to the base we're
8040         sharing a ctor vtable with.  Merge code for cases 1 and 2.
8041         (binfo_ctor_vtable): New fn.
8042         (build_vtt_inits, dfs_build_secondary_vptr_vtt_inits): Use it.
8043
8044 2001-06-14  Jason Merrill  <jason_merrill@redhat.com>
8045
8046         * class.c (dfs_find_final_overrider): Fix logic.
8047
8048         * class.c (update_vtable_entry_for_fn): Uncomment optimization to use
8049         virtual thunk instead of non-virtual.
8050         (get_matching_virtual): Uncomment.
8051
8052         * pt.c (unify): Don't recurse between the POINTER_TYPE and the
8053         OFFSET_TYPE.  If we're adding cv-quals, the extra ones would be on
8054         PARM, not ARG.
8055
8056 2001-06-14  Nathan Sidwell  <nathan@codesourcery.com>
8057
8058         * class.c (dfs_accumulate_vtbl_inits): For case 2 & 3, make sure
8059         we've not emerged from the hierarchy of RTTI_BINFO on reaching
8060         a non-virtual base.
8061
8062 2001-06-13  Mark Mitchell  <mark@codesourcery.com>
8063
8064         * NEWS: Update release number.
8065
8066 2001-06-12  Nathan Sidwell  <nathan@codesourcery.com>
8067
8068         PR c++/3130, c++/3131, c++/3132
8069         * cp-tree.h (BINFO_UNSHARED_MARKED): New #define.
8070         * class.c (force_canonical_binfo_r): Move
8071         BINFO_UNSHARED_MARKED, BINFO_LOST_PRIMARY_P. Don't move
8072         virtual bases unless they're primary and what they're primary
8073         too has been moved.
8074         (dfs_unshared_virtual_bases): Use BINFO_UNSHARED_MARKED. Cope
8075         with morally virtual bases. Duplicate BINFO_LOST_PRIMARY_P and
8076         BINFO_PRIMARY_BASE_OF. Clear BINFO_VTABLE for all but the most
8077         derived binfo.
8078         (mark_primary_bases): Use BINFO_UNSHARED_MARKED.
8079         (layout_nonempty_base_or_field): Add most derived type
8080         parameter. Adjust.
8081         (layout_empty_base): Likewise.
8082         (build_base_field): Likewise.
8083         (build_base_fields): Likewise.
8084         (propagate_binfo_offsets): Add most derived type
8085         parameter. Skip non canonical virtual bases too.
8086         (dfs_set_offset_for_unshared_vbases): Don't skip primary
8087         bases. Do skip canonical bases.
8088         (layout_virtual_bases): Adjust.
8089         (layout_class_type): Adjust.
8090         (dfs_get_primary_binfo): Build list of virtual primary base
8091         candidates.
8092         (get_primary_binfo): Check that the shared virtual primary
8093         base candidate was found first.
8094         (accumulate_vtbl_inits): Don't do anything for non-vptr
8095         containing binfos. For case 1 primary virtual bases, keep
8096         checking that we've not emerged from the hierarchy of RTTI_BINFO.
8097
8098 2001-06-12  Nathan Sidwell  <nathan@codesourcery.com>
8099
8100         PR c++/3089
8101         * class.c (dfs_accumulate_vtbl_inits): Always walk down the
8102         hierarchy looking for primary bases for a ctor
8103         vtable. Recursively call oneself, if we meet our primary via
8104         this route and haven't met it yet via inheritance graph order.
8105
8106 2001-06-11  Mark Mitchell  <mark@codesourcery.com>
8107
8108         * lang-options.h: Emit documentation for -fno-honor-std, not
8109         -fhonor-std.
8110
8111 2001-06-10  Alexandre Oliva  <aoliva@redhat.com>
8112
8113         * typeck.c (get_member_function_from_ptrfunc) [vbit_in_delta]:
8114         Don't clobber delta.
8115         (expand_ptrmemfunc_cst) [ptrmemfunc_vbit_in_delta]: Adjust pfn.
8116
8117 2001-06-10  Mark Mitchell <mark@codesourcery.com>
8118             Gabriel Dos Reis  <gdr@codesourcery.com>
8119
8120         * Make-lang.in (cp/call.o): Depend on diagnostic.h
8121         (cp/typeck.o): Depend on diagnostic.h
8122         (cp/typeck2.o): Depend on diagnostic.h
8123         (cp/repo.o): Depend on dignostic.h
8124         * typeck.c: #include diagnostic.h
8125         (convert_for_initialization): Remove extern declaration for
8126         warningcount and errorcount.
8127
8128         * call.c: #include diagnostic.h
8129         (convert_like_real): Remove extern declaration for warnincount and
8130         errorcount.
8131
8132         * repo.c: #include diagnostic.h
8133         * typeck2.c: #include diagnostic.h
8134
8135 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
8136
8137         * decl.c (duplicate_decls): Fix DECL_TEMPLATE_RESULT thinko
8138         in previous change.
8139
8140 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
8141
8142         PR c++/2929
8143         * friend.c (do_friend): Use push_decl_namespace for classes at
8144         namespace scope.
8145
8146 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
8147             Jason Merrill <jason_merrill@redhat.com>
8148
8149         PR c++/3061
8150         * class.c (build_secondary_vtable): Use assert, rather than an error
8151         message.
8152         (dfs_fixup_binfo_vtbls): BINFO_VTABLE might be NULL.
8153         (dfs_accumulate_vtbl_inits): A lost primary virtual base may
8154         be between ORIG_BINFO and RTTI_BINFO, but neither of them.
8155         Don't set BINFO_VTABLE for a primary virtual base.
8156
8157 2001-06-07  Mark Mitchell  <mark@codesourcery.com>
8158
8159         * decl.c (duplicate_decls): Update source position information
8160         when a template function is defined.
8161
8162 2001-06-07  Phil Edwards  <pme@sources.redhat.com>
8163
8164         * lang-specs.h:  Move -D_GNU_SOURCE to config/linux.h.
8165
8166 2001-06-07  Nathan Sidwell  <nathan@codesourcery.com>
8167
8168         PR c++/2914
8169         * decl.c (pushtag): Don't push into a complete type's scope.
8170
8171 2001-06-06  Jason Merrill  <jason_merrill@redhat.com>
8172
8173         * cp-tree.h (THUNK_GENERATE_WITH_VTABLE_P): Lose.
8174         (struct lang_decl_flags): Lose generate_with_vtable_p.
8175         (BV_GENERATE_THUNK_WITH_VTABLE_P): Lose.
8176         * class.c (copy_virtuals): Adjust.
8177         * decl2.c (mark_vtable_entries): Adjust.
8178         * method.c (make_thunk, build_vtable_entry): Adjust.
8179         * class.c (update_vtable_entry_for_fn): Only look as far as the
8180         first defining class.
8181         (build_vtbl_initializer): Put nothing in the slot for a function only
8182         defined in a lost primary virtual base.
8183         (add_vcall_offset_vtbl_entries_1): Use the same code for
8184         the lost primary case and the normal case.
8185         (dfs_unshared_virtual_bases): Don't lose a non-virtual primary base.
8186         (get_vfield_offset, get_derived_offset): Lose.
8187         (dfs_find_final_overrider): Use look_for_overrides_here.
8188         (get_matching_virtual): New fn.
8189         * semantics.c (emit_associated_thunks): Check BV_USE_VCALL_INDEX_P,
8190         not BV_VCALL_INDEX.
8191         * search.c (look_for_overrides_here): Split out from...
8192         (look_for_overrides_r): Here.
8193
8194         * class.c (find_final_overrider): Return error_mark_node on error.
8195
8196         * decl2.c (key_method): #if 0 accidental change.
8197
8198 2001-06-06  John David Anglin  <dave@hiauly1.hia.nrc.ca>
8199
8200         * call.c (convert_default_arg): Use INTEGRAL_TYPE_P.
8201         (build_over_call): Likewise.
8202         * decl.c (grokparms): Likewise.
8203         * pt.c (tsubst_decl): Likewise.
8204         * typeck.c (convert_arguments): Likewise.
8205
8206 2001-06-05  Mark Mitchell  <mark@codesourcery.com>
8207
8208         * semantics.c (begin_class_definition): Robustify.
8209
8210         * pt.c (instantiate_decl): Tell the repository code about the
8211         clones, not the cloned functions.
8212         * repo.c (repo_template_used): Explicitly instantiate the cloned
8213         function, not the clones.
8214
8215 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
8216
8217         * call.c (build_user_type_conversion_1): Set ICS_USER_FLAG and
8218         ICS_BAD_FLAG on created conversion.
8219         (compare_ics): Break out rank.
8220
8221 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
8222
8223         * decl.c (xref_tag): Remove extraneous %s on dependent name
8224         lookup warning.
8225
8226 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
8227
8228         * class.c (layout_vtable_decl): Fix off by one error on
8229         build_index_type.
8230         (build_vtt): Likewise.
8231         (build_ctor_vtbl_group): Likewise.
8232
8233 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
8234
8235         * class.c (maybe_indent_hierarchy): New function.
8236         (dump_class_hierarchy_r): Add flags. Dump extra binfo
8237         information, if enabled. Use maybe_indent_hierarchy. Adjust
8238         output format.
8239         (dump_class_hierarchy): Adjust prototype. Adjust output format.
8240         (dump_array, dump_vtable, dump_vtt): New functions.
8241         (finish_struct_1): Adjust hierarchy dumping.
8242         (initialize_vtable): Call dump_vtable.
8243         (build_vtt): Call dump_vtt.
8244         (build_ctor_vtbl_group): Call dump_vtable.
8245         * decl2.c (flag_dump_class_layout): Remove.
8246         (cxx_decode_option): Remove dump translation unit
8247         and dump class hierarchy check. Call dump_switch_p.
8248         (finish_file): Adjust dumping.
8249         (dump.c): Only dump base classes if not TDF_SLIM.
8250         Only dump namespace members if not TDF_SLIM.
8251         * optimize.c (dump_function): New function.
8252         (optimize_function): Call dump_function.
8253         * semantics.c (expand_body): Use dump_enabled_p.
8254
8255 2001-06-01  Nathan Sidwell  <nathan@codesourcery.com>
8256
8257         PR g++/2936
8258         Part missed from first commit
8259         * decl2.c (finish_anon_union): Copy context.
8260
8261 2001-05-30  Nathan Sidwell  <nathan@codesourcery.com>
8262
8263         PR g++/2936
8264         * optimize.c (remap_decl): Remap anonymous aggregate members too.
8265
8266 2001-05-26  Nathan Sidwell  <nathan@codesourcery.com>
8267
8268         PR g++/2823
8269         * semantics.c (expand_body): Don't optimize thunks.
8270
8271 2001-05-25  Sam TH  <sam@uchicago.edu>
8272
8273         * cp-tree.h lex.h: Fix header include guards.
8274
8275 2001-05-25  Mark Mitchell <mark@codesourcery.com>
8276
8277         * decl.c (init_decl_processing): Tweak.
8278
8279 2001-05-24  Mark Mitchell  <mark@codesourcery.com>
8280
8281         * decl.c (duplicate_decls): Tidy.
8282         (init_decl_processing): Always set flag_no_builtin.
8283
8284 2001-05-24  Nathan Sidwell  <nathan@codesourcery.com>
8285
8286         PR c++/2184
8287         * decl2.c (do_local_using_decl): Push the decls, even in a
8288         template.
8289
8290 2001-05-22  Mark Mitchell  <mark@codesourcery.com>
8291
8292         * optimize.c (initialize_inlined_parameters): Don't set
8293         TREE_READONLY for a VAR_DECL taking the place of an inlined
8294         PARM_DECL.
8295
8296 2001-05-22  Jason Merrill  <jason_merrill@redhat.com>
8297
8298         * class.c, cp-tree.h, rtti.c: Remove com_interface attribute support.
8299         * tree.c (cp_valid_lang_attribute): Warn about use of com_interface
8300         attribute.
8301
8302 2001-05-22  Joseph S. Myers  <jsm28@cam.ac.uk>
8303
8304         * parse.y: Refer to compound literals as such, not as
8305         constructor-expressions.
8306
8307 2001-05-21  Mark Mitchell  <mark@codesourcery.com>
8308
8309         * call.c (build_op_delete_call): Ignore exception-specifications
8310         when looking for matching delete operators.
8311         * init.c (build_new_1): Compute whether or not the allocation
8312         function used is a placement allocation function or not, and
8313         communicate this information to build_op_delete_call.
8314
8315 2001-05-21  Jason Merrill  <jason_merrill@redhat.com>
8316
8317         * class.c (build_vtable_entry_ref): Lose vtbl parm.  Fix for new abi.
8318         (build_vtbl_ref): Adjust.
8319         (dfs_accumulate_vtbl_inits): Set TREE_CONSTANT on the vtable address.
8320         * decl2.c (lang_f_options): Remove huge-objects, vtable-thunks.
8321         Re-add vtable-gc.
8322         (unsupported_options): Correspondingly.
8323
8324         * decl2.c (maybe_make_one_only): Check flag_weak, not
8325         supports_one_only().
8326
8327         * cp-tree.def (START_CATCH_STMT): Lose.
8328         * dump.c (cp_dump_tree): Don't dump it.  Do dump HANDLER_PARMS.
8329         * tree.c (cp_statement_code_p): Don't case it.
8330         * semantics.c (cp_expand_stmt): Likewise.
8331         * cp-tree.h (START_CATCH_TYPE): Lose.
8332         (HANDLER_TYPE): New.
8333         * except.c (expand_start_catch_block): Don't start any blocks.
8334         Return the type.
8335         (expand_end_catch_block): Don't end any blocks.
8336         * parse.y (handler): Don't pass anything from finish_handler_parms
8337         to finish_handler.
8338         * pt.c (tsubst_expr): Likewise.
8339         * semantics.c (begin_handler): Call note_level_for_catch here.
8340         (finish_handler_parms): Don't return anything.
8341         (genrtl_catch_block, begin_catch_block): Lose.
8342         (genrtl_handler): Call expand_start_catch here.
8343
8344 2001-05-18  Jason Merrill  <jason_merrill@redhat.com>
8345
8346         * class.c (build_vtable): Set DECL_ASSEMBLER_NAME for vtables here.
8347         (get_vtable_decl, build_vtt): Not here.
8348
8349 2001-05-20  Nathan Sidwell  <nathan@codesourcery.com>
8350
8351         PR c++/2781
8352         * optimize.c (update_cloned_parm): Copy addressability and other
8353         flags.
8354
8355 2001-05-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8356
8357         * pt.c (determine_specialization): Ignore artificial functions.
8358
8359 2001-05-20  Neil Booth  <neil@daikokuya.demon.co.uk>
8360
8361         * cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
8362         (C_RID_CODE): Remove.
8363         * lex.c (cxx_init_options): Call set_identifier_size.  Update.
8364         (init_parse): Don't do it here.
8365
8366 2001-05-18  Diego Novillo  <dnovillo@redhat.com>
8367
8368         * decl2.c (finish_objects): Use the original SYMBOL_REF from the
8369         function declaration to avoid stripping the symbol's attributes.
8370
8371 2001-05-18  Nathan Sidwell  <nathan@codesourcery.com>
8372
8373         * decl.c (pushdecl): Adjust error string.
8374         (xref_tag): Adjust friend class injection warning. Remove the
8375         inherited name from the class shadowed scope.
8376
8377 2001-05-17  Mark Mitchell  <mark@codesourcery.com>
8378
8379         * except.c (cp_protect_cleanup_actions): New function.
8380         (init_exception_processing): Don't set protect_cleanup_actions
8381         here.  Do set lang_protect_cleanup_actions.
8382
8383 2001-05-16  Nathan Sidwell  <nathan@codesourcery.com>
8384
8385         * spew.c (read_token): Call yyerror on all unexpected tokens.
8386
8387 2001-05-16  Nathan Sidwell  <nathan@codesourcery.com>
8388
8389         * init.c (member_init_ok_or_else): Take a tree rather than
8390         string for name.
8391         (expand_member_init): Adjust.
8392
8393 2001-05-14  Nick Clifton  <nickc@cambridge.redhat.com>
8394
8395         * decl.c (duplicate_decls): Suppress warning about duplicate
8396         decls if the first decl is a friend.
8397
8398 2001-05-12  Zack Weinberg  <zackw@stanford.edu>
8399
8400         * except.c (choose_personality_routine): Export.  Add
8401         explanatory comment.  Take an enum languages, not a boolean.
8402         (initialize_handler_parm): Adjust to match.
8403         * cp-tree.h: Prototype choose_personality_routine.
8404         * lex.c (handle_pragma_java_exceptions): New function.
8405         (init_cp_pragma): Register #pragma GCC java_exceptions.
8406
8407 2001-05-12  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
8408
8409         * method.c (build_mangled_C99_name): Remove unused prototype.
8410
8411 2001-05-12  Alexandre Oliva  <aoliva@redhat.com>
8412
8413         * cp-tree.h (ptrmemfunc_vbit_where_t): Declare type.
8414         * typeck.c (get_member_function_from_ptrfunc,
8415         build_ptrmemfunc, expand_ptrmemfunc_cst): Take
8416         TARGET_PTRMEMFUNC_VBIT_LOCATION into account.
8417
8418         Reverted Geoff Keating's 2001-05-03's patch.
8419
8420 2001-05-11  Ira Ruben   <ira@apple.com>
8421
8422         * cp/cp-tree.h (C_EXP_ORIGINAL_CODE): Delete; declared in c-common.h.
8423
8424 2001-05-11  Neil Booth  <neil@daikokuya.demon.co.uk>
8425
8426         * cp-tree.h (finish_label_expr, lookup_label): Delete.
8427         * parse.y: Update for '&&'; don't issue warning here.
8428         * semantics.c (finish_label_expr): Delete.
8429
8430 2001-05-07  Mark Mitchell  <mark@codesourcery.com>
8431
8432         * splay-tree.h (splay_tree_max): New function.
8433         (splay_tree_min): Likewise.
8434
8435 2001-05-03  Geoffrey Keating  <geoffk@redhat.com>
8436
8437         * cp-tree.h (enum cp_tree_index): Add CPTI_PFN_VFLAG_IDENTIFIER.
8438         (pfn_vflag_identifier): Define.
8439         Update comment about layout of pointer functions.
8440         (build_ptrmemfunc1): Update prototype.
8441         (expand_ptrmemfunc_cst): Update prototype.
8442         * decl.c (initialize_predefined_identifiers): Initialize
8443         pfn_vflag_identifier.
8444         (build_ptrmemfunc_type): When FUNCTION_BOUNDARY < 16, add
8445         an extra field to the type.
8446         * expr.c (cplus_expand_constant): Pass 'flag' between
8447         expand_ptrmemfunc_cst and build_ptrmemfunc1.
8448         * typeck.c (get_member_function_from_ptrfunc): When
8449         FUNCTION_BOUNDARY < 16, look at additional field to determine
8450         if a pointer-to-member is a real pointer or a vtable offset.
8451         (build_ptrmemfunc1): Add new parameter to contain extra field.
8452         (build_ptrmemfunc): Pass the extra field around.
8453         (expand_ptrmemfunc_cst): Add new parameter to return extra field.
8454         (pfn_from_ptrmemfunc): Ignore the extra field.
8455
8456 2001-05-03  Mark Mitchell  <mark@codesourcery.com>
8457
8458         * cp-tree.h (flag_inline_trees): Update documentation.
8459         * decl.c (init_decl_processing): Adjust handling of
8460         flag_inline_functions and flag_inline_trees to support -O3.
8461         (grokfndecl): Set DECL_INLINE on all functions if that's what
8462         the user requested.
8463         (save_function_data): Clear DECL_INLINE in
8464         current_function_cannot_inline is non-NULL.
8465         * decl2.c (flag_inline_trees): Update documentation.
8466
8467 2001-05-03  Nathan Sidwell  <nathan@codesourcery.com>
8468
8469         * dump.c (cp_dump_tree, USING_STMT case): New case.
8470         * tree.c (cp_statement_code_p): Add USING_STMT.
8471         * decl2.c (do_using_directive): Add the using directive statement.
8472
8473         * tree.c (walk_tree): Reformat an if block.
8474
8475 2001-05-02  Mark Mitchell  <mark@codesourcery.com>
8476
8477         * decl.c (compute_array_index_type): Don't try to do anything with
8478         the indices when processing a template.
8479
8480 2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8481
8482         * call.c: NULL_PTR -> NULL.
8483         * class.c: Likewise.
8484         * cvt.c: Likewise.
8485         * decl.c: Likewise.
8486         * decl2.c: Likewise.
8487         * except.c: Likewise.
8488         * init.c: Likewise.
8489         * rtti.c: Likewise.
8490         * search.c: Likewise.
8491         * tree.c: Likewise.
8492         * typeck.c: Likewise.
8493         * typeck2.c: Likewise.
8494
8495 2001-05-02  Mark Mitchell  <mark@codesourcery.com>
8496
8497         * decl2.c (do_using_directive): Revert previous patch.
8498
8499 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
8500
8501         * cp-tree.def (USING_STMT): New statement node.
8502         * cp-tree.h (USING_STMT_NAMESPACE): New macro.
8503         * decl2.c (do_using_directive): Add USING_STMT to statement
8504         tree. Don't emit errors when processing template decl.
8505         * pt.c (tsubst_expr, USING_STMT case): New case.
8506         * semantics.c (cp_expand_stmt, USING_STMT case): New case.
8507
8508 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
8509
8510         * call.c (build_new_op): Convert args from reference here.
8511         (build_conditional_expr): Don't convert here.
8512
8513 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
8514
8515         * spew.c (last_token_id): New static variable.
8516         (read_token): Set it here.
8517         (yyerror): Use it here.
8518
8519 2001-04-30  Richard Henderson  <rth@redhat.com>
8520
8521         * cvt.c: Downcase C_PROMOTING_INTEGER_TYPE_P invocations.
8522         * decl.c: Likewise.
8523
8524 2001-04-30  Mark Mitchell  <mark@codesourcery.com>
8525
8526         * gxxint.texi: Remove.
8527         * Make-lang.in: Remove all traces of gxxint.texi.
8528
8529 Mon Apr 30 16:14:10 2001  Mark P Mitchell  <mark@codesourcery.com>
8530
8531         * decl2.c (start_static_initialization_or_destruction): Correct
8532         logic to handle the -fno-use-cxa-atexit case.
8533
8534 2001-04-30  Mark Mitchell  <mark@codesourcery.com>
8535
8536         * optimize.c (update_cloned_parm): New function.
8537         (maybe_clone_body): Use it.  Update the `this' parameter too.
8538
8539 2001-04-29  Joseph S. Myers  <jsm28@cam.ac.uk>
8540
8541         * decl2.c (unsupported_options): Add new-abi.
8542         * lang-options.h: Remove no longer supported options.
8543
8544 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
8545
8546         * except.c (can_convert_eh): Don't check template parms,
8547         typename types etc.
8548
8549 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
8550
8551         * optimize.c (maybe_clone_body): Copy parameter names and locations.
8552
8553 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
8554
8555         * cp-tree.h (adjust_clone_args): Prototype new function.
8556         * class.c (adjust_clone_args): New function.
8557         * decl.c (start_function): Call it for in charge ctors.
8558
8559 2001-04-26  Mark Mitchell  <mark@codesourcery.com>
8560
8561         * method.c (use_thunk): Make sure that thunks really are emitted
8562         when requested.
8563
8564 2001-04-26  Nathan Sidwell <nathan@codesourcery.com>
8565
8566         * mangle.c (write_chars): New macro.
8567         (hwint_to_ascii): New function
8568         (write_number): Use it.
8569         (write_integer_cst): Deal with really big numbers.
8570
8571 2001-04-25  Mark Mitchell  <mark@codesourcery.com>
8572
8573         * optimize.c (maybe_clone_body): Copy TREE_PUBLIC before emitting
8574         the clone.
8575
8576 2001-04-25  Nathan Sidwell  <nathan@codesourcery.com>
8577
8578         * decl.c (grokdeclarator): Set context of namespace scope
8579         TYPE_DECLS.
8580
8581 2001-04-24  Zack Weinberg  <zackw@stanford.edu>
8582
8583         * cp/optimize.c: Include hashtab.h.
8584         (struct inline_data): Add tree_pruner.
8585         (expand_call_inline, expand_calls_inline): Use it when calling
8586         walk_tree.
8587         (optimize_function): Initialize and free tree_pruner.
8588
8589 2001-04-24  Nathan Sidwell <nathan@codesourcery.com>
8590
8591         Lazy __FUNCTION__ generation.
8592         * cp-tree.def (FUNCTION_NAME): Remove.
8593         * cp-tree.h (function_name_declared_p): Remove.
8594         (cp_fname_init): Prototype.
8595         * decl.c (init_decl_processing): Don't generate __FUNCTION__ et al ids,
8596         don't call declare_function_name. Call start_fname_decls.
8597         (cp_make_fname_decl): Adjust parameters. Generate the name. Don't
8598         clobber the line number.
8599         (cp_fname_init): New function.
8600         (start_function): Call start_fname_decls.
8601         (finish_function): Call finish_fname_decls.
8602         * lex.c (reswords): Add slots for __FUNCTION__ et al.
8603         (rid_to_yy): Add mappings for __FUNCTION__ et al.
8604         * optimize.c (maybe_clone_body): Remove function_name_declared_p.
8605         * parse.y (VAR_FUNC_NAME): New token.
8606         (primary): Add VAR_FUNC_NAME.
8607         * pt.c (tsubst_decl): Adjust a DECL_PRETTY_FUNCTION_P's
8608         generation.
8609         (tsubst, FUNCTION_NAME case): Remove.
8610         (tsubst_copy, FUNCTION_NAME case): Remove.
8611         (tsubst_expr, DECL_STMT case): Be careful with a
8612         DECL_PRETTY_FUNCTION_P.
8613         (instantiate_decl): Remove function_name_declared_p.
8614         * semantics.c (begin_compound_statement): Don't call
8615         declare_function_name here.
8616         (setup_vtbl_ptr). Don't save & restore function_name_declared_p.
8617         (finish_translation_unit): Call finish_fname_decls.
8618         (expand_body): Remove function_name_declared_p.
8619         * typeck2.c (digest_init): Allow any ERROR_MARK.
8620
8621 2001-04-24  Nathan Sidwell  <nathan@codesourcery.com>
8622
8623         * pt.c (tsubst_decl): Use VOID_TYPE_P.
8624         * semantics.c: Fix some typos.
8625
8626 2001-04-23  Phil Edwards  <pme@sources.redhat.com>
8627
8628         * cp/decl2.c (flag_honor_std):  Always initialize to 1.
8629
8630 2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8631
8632         * xref.c (GNU_xref_file): Use concat in lieu of xmalloc/sprintf.
8633
8634 2001-04-23  Jason Merrill  <jason_merrill@redhat.com>
8635
8636         * except.c (build_throw): Wrap the initialization of the exception
8637         object in a MUST_NOT_THROW_EXPR.
8638         (do_free_exception): #if 0.
8639
8640 2001-04-20  Mark Mitchell  <mark@codesourcery.com>
8641
8642         * cp-tree.h (finish_enum): Change prototype.
8643         * decl.c (finish_enum): Reorganize.
8644         * parse.y (structsp): Adjust calls to finish_enum.
8645
8646 2001-04-20  Nathan Sidwell  <nathan@codesourcery.com>
8647
8648         * tree.c (cp_tree_equal): Adjust final switch formatting. Add
8649         't' case.
8650
8651 2001-04-20  Nathan Sidwell  <nathan@codesourcery.com>
8652
8653         * class.c (dfs_unshared_virtual_bases): Add ATTRIBUTE_UNUSED.
8654         (layout_empty_base): Return at end flag.
8655         (build_base_field): Likewise.
8656         (build_base_fields): Likewise.
8657         (layout_virtual_bases): Don't add 1 to eoc value.
8658         (end_of_class): Use full size for empty bases.
8659         (layout_class_type): Clear CLASSNEARLY_EMPTY_P if we appended
8660         empty bases. Don't add 1 to eoc value. Only add trailing padding
8661         if we're an empty class with no empty bases.
8662         (dump_class_hierarchy): Dump size and alignment.
8663
8664 2001-04-20  Jakub Jelinek  <jakub@redhat.com>
8665
8666         * call.c (maybe_handle_ref_bind): Copy ICS_USER_FLAG and
8667         ICS_BAD_FLAG.
8668
8669 2001-04-20  Jakub Jelinek  <jakub@redhat.com>
8670
8671         * search.c (lookup_field_r): If looking for type and non-TYPE_DECL
8672         is found, look first if name does not match the structure name.
8673
8674 2001-04-19  Mark Mitchell  <mark@codesourcery.com>
8675
8676         * cp-tree.h (DECL_LANGUAGE): Don't assume DECL_LANG_SPECIFIC is
8677         set.
8678         (SET_DECL_LANGUAGE): New macro.
8679         * decl.c (duplicate_decls): Use SET_DECL_LANGUAGE.
8680         (pushdecl): Likewise.
8681         (build_library_fn_1): Likewise.
8682         (build_cp_library_fn): Likewise.
8683         (grokfndecl): Likewise.
8684         (grokvardecl): Mark `extern "C"' variables as having C linkage.
8685         * decl2.c (grokclassfn): Use SET_DECL_LANGUAGE.
8686         * lex.c (retrofit_lang_decl): Likewise.
8687         * mangle.c (mangle_decl_string): Don't mangle the names of
8688         variables declared with C language linkage.
8689         * semantics.c (finish_member_declaration): Use SET_DECL_LANGUAGE.
8690
8691 2001-04-18  John David Anglin  <dave@hiauly1.hia.nrc.ca>
8692
8693         * semantics.c (simplify_aggr_init_exprs_r): Don't restore
8694         flag_access_control from uninitialized storage.
8695
8696 2001-04-15  Mark Mitchell  <mark@codesourcery.com>
8697
8698         * cp-tree.h (TYPE_PTRMEM_CLASS_TYPE): Improve documentation.
8699         * mangle.c (write_pointer_to_member_type): Fix mangling of
8700         pointers to cv-qualified member function types.
8701
8702         * init.c (build_delete): Create a SAVE_EXPR for the address if
8703         we're going to use it more than once.
8704
8705 2001-04-13  Mark Mitchell  <mark@codesourcery.com>
8706
8707         * cp-tree.h (DELTA2_FROM_PTRMEMFUNC): Remove.
8708         (expand_ptremfunc_cst): Change prototype.
8709         (delta2_from_ptrmemfunc): Remove.
8710         * expr.c (cplus_expand_constant): Adjust call to
8711         expand_ptrmemfunc_cst.
8712         * typeck.c (build_ptrmemfunc1): Simplify.
8713         (build_ptrmemfunc): Make sure that casting a PTRMEM_CST still
8714         results in a constant.
8715         (expand_ptrmemfunc_cst): Remove idx and delta2 parameters.
8716         (delta2_from_ptrmemfunc): Remove.
8717         (pfn_from_ptrmemfunc): Adjust call to expand_ptrmemfunc_cst.
8718
8719 2001-04-12  Jason Merrill  <jason_merrill@redhat.com>
8720
8721         * cp-tree.h (decl_namespace_list): New macro.
8722         (struct saved_scope): Add decl_ns_list.
8723         * decl.c (mark_saved_scope): Mark it.
8724         * decl2.c: Lose static decl_namespace_list.
8725         (init_decl2): Don't save it.
8726
8727 2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8728
8729         * cp-tree.h (warn_return_type, yylex): Delete redundant
8730         declarations.
8731
8732         * decl.c (current_class_depth, global_namespace): Likewise.
8733
8734         * decl2.c (current_class_depth, flag_gnu_xref): Likewise
8735
8736         * repo.c (flag_use_repository): Likewise.
8737
8738 2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8739
8740         * cp-tree.h (pedantic, convert, global_bindings_p, insert_block,
8741         set_block, pushdecl, getdecls, gettags, init_decl_processing,
8742         maybe_build_cleanup, copy_lang_decl, prep_stmt, lvalue_p,
8743         lvalue_or_else, print_lang_statistics, comp_target_types,
8744         unsigned_type, signed_type, signed_or_unsigned_type,
8745         build_function_call, mark_addressable, incomplete_type_error):
8746         Delete redundant declarations.
8747
8748 2001-04-11  Jason Merrill  <jason_merrill@redhat.com>
8749
8750         * cp-tree.h (TYPE_LINKAGE_IDENTIFIER): New macro.
8751         (TYPE_ANONYMOUS_P): New macro.
8752         (TAGGED_TYPE_P): New macro.
8753         * decl.c (check_tag_decl): Use TYPE_ANONYMOUS_P.
8754         (grokfndecl, grokvardecl, grokdeclarator): Likewise.
8755         * tree.c (no_linkage_helper): Likewise.
8756         * semantics.c (begin_class_definition): Likewise.
8757         * pt.c (convert_template_argument): Likewise.
8758         * lex.c (check_for_missing_semicolon): Likewise.
8759
8760 2001-04-12  Nathan Sidwell  <nathan@codesourcery.com>
8761
8762         * class.c (dfs_unshared_virtual_bases): New function.
8763         (mark_primary_bases): Call it.
8764         (check_bases): Ignore virtual bases when determining
8765         nearly-emptiness.
8766
8767 2001-04-12  Nathan Sidwell  <nathan@codesourcery.com>
8768
8769         * method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
8770
8771 2001-04-11  Mark Mitchell  <mark@codesourcery.com>
8772
8773         * optimize.c (maybe_clone_body): Copy DECL_NUM_STMTS from the
8774         cloned function to the clone.
8775
8776 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8777
8778         * Make-lang.in (cp/semantics.o): Depend on $(EXPR_H).
8779
8780         * semantics.c: Include expr.h.
8781
8782 2001-04-11  Nathan Sidwell  <nathan@codesourcery.com>
8783
8784         * method.c (implicitly_declare_fn): Commonize code for copy ctor
8785         and assignment op. Set TREE_USED for parameter.
8786
8787 2001-04-10  Mark Mitchell  <mark@codesourcery.com>
8788
8789         * class.c (find_final_overrider_data): Add `candidates'.
8790         (dfs_find_final_overrider): Don't issue error messages
8791         prematurely.
8792         (find_final_overrider): Issue error messages here.
8793         (build_base_field): Don't warn about amgibuous direct bases here.
8794         (warn_about_ambiguous_direct_bases): New function.
8795         (layout_class_type): Use it.
8796
8797 2001-04-10  Richard Henderson  <rth@redhat.com>
8798
8799         * typeck.c (build_array_ref): Push the array reference inside
8800         COMPOUND_EXPR and COND_EXPR.
8801
8802 2001-04-05  Mark Mitchell  <mark@codesourcery.com>
8803
8804         * cp-tree.h (DECL_THIS_INLINE): Rename to DECL_DECLARED_INLINE_P.
8805         * decl.c (duplicate_decls): Adjust accordingly.
8806         (maybe_commonize_var): Likewise.
8807         (grokfndecl): Likewise.
8808         (start_function): Likewise.
8809         (start_method): Likewise.
8810         * decl2.c (key_method): Likewise.
8811         (import_export_decl): Likewise.
8812         * method.c (implicitly_declare_fn): Likewise.
8813         * optimize.c (maybe_clone_body): Likewise.
8814
8815 2001-04-05  Benjamin Kosnik  <bkoz@redhat.com>
8816
8817         * lang-specs.h: Add __DEPRECATED.
8818
8819 Thu Apr  5 16:54:29 2001  J"orn Rennecke <amylaar@redhat.com>
8820
8821         * search.c (get_dynamic_cast_base_type): When building a new
8822         constant, set its type to ssizetype.
8823
8824 2001-04-04  Jakub Jelinek  <jakub@redhat.com>
8825
8826         * optimize.c (expand_call_inline): Only add newly inlined statements
8827         into inlined_stmts.
8828
8829 2001-04-03  Mark Mitchell  <mark@codesourcery.com>
8830
8831         * cp-tree.h (OPERATOR_ASSIGN_FORMAT): Remove.
8832         (OPERATOR_FORMAT): Likewise.
8833         (OPERATOR_TYPENAME_FORMAT): Likewise.
8834         * operators.def: Remove old name-mangling information.
8835         * decl.c (grok_op_properties): Adjust accordingly.
8836         * lex.c (init_operators): Likewise.
8837         * rtti.c (get_tinfo_decl): Issue error messages about types that
8838         have variable size.
8839
8840 2001-04-03  Mark Mitchell  <mark@codesourcery.com>
8841
8842         * decl2.c (import_export_decl): Don't call import_export_class
8843         when processing an inline member function.
8844         * semantics.c (expand_body): Call import_export_decl before
8845         emitting inline functions.
8846
8847 2001-03-28  Richard Henderson  <rth@redhat.com>
8848
8849         IA-64 ABI Exception Handling:
8850         * cp-tree.def (EH_SPEC_BLOCK): New.
8851         (MUST_NOT_THROW_EXPR): New.
8852         * cp-tree.h: Update changed function declarations.
8853         (CPTI_PUSH_EXCEPTION_IDENTIFIER): Remove.
8854         (CPTI_CALL_UNEXPECTED): New.
8855         (struct cp_language_function): Rename x_eh_spec_try_block
8856         to x_eh_spec_block.
8857         (EH_SPEC_STMTS, EH_SPEC_RAISES): New.
8858         * decl.c (current_binding_level): If no current function
8859         bindings, revert to scope_chain.
8860         (initialize_predefined_identifiers): Remove __cp_push_exception.
8861         (store_parm_decls): Use begin_eh_spec_block.
8862         (finish_function): Use finish_eh_spec_block.
8863         (mark_lang_function): Update for name changes.
8864         * decl2.c (finish_file): No mark_all_runtime_matches.
8865         * dump.c (cp_dump_tree): Handle new tree codes.
8866         * error.c (dump_expr) [BIND_EXPR]: Fix typo.
8867         * except.c (catch_language_init, catch_language): Remove.
8868         (init_exception_processing): Don't set language code.
8869         Initialize call_unexpected_node, protect_cleanup_actions,
8870         eh_personality_libfunc, lang_eh_runtime_type.
8871         (call_eh_info, push_eh_info, get_eh_info, get_eh_value): Remove.
8872         (get_eh_type, get_eh_caught, get_eh_handlers): Remove.
8873         (prepare_eh_type): Split out type canonicalizations ...
8874         (build_eh_type_type): ... from here.
8875         (build_eh_type_type_ref): Remove.
8876         (mark_all_runtime_matches): Remove.
8877         (build_exc_ptr): New.
8878         (do_begin_catch, do_end_catch): New.
8879         (do_pop_exception): Remove.
8880         (build_terminate_handler): Remove.
8881         (choose_personality_routine): Split out language choice from ...
8882         (initialize_handler_parm): ... here.
8883         Use MUST_NOT_THROW_EXPR.
8884         (expand_start_catch_block): Use do_begin_catch.  Simplify Java
8885         exception object handling.
8886         (expand_start_eh_spec, expand_end_eh_spec): Remove.
8887         (expand_exception_blocks, alloc_eh_object): Remove.
8888         (begin_eh_spec_block, finish_eh_spec_block): New.
8889         (do_allocate_exception, do_free_exception): New.
8890         (expand_throw): Merge into ...
8891         (build_throw): ... here.  Update for abi.
8892         * expr.c (cplus_expand_expr): No expand_internal_throw.
8893         Handle MUST_NOT_THROW_EXPR.
8894         * pt.c (tsubst_expr): Handle EH_SPEC_BLOCK.
8895         * semantics.c (*) Update for except.h name changes.
8896         (genrtl_try_block): No protect_with_terminate.
8897         (genrtl_eh_spec_block): New.
8898         (genrtl_handler): Don't emit the goto here.
8899         (cp_expand_stmt): Handle EH_SPEC_BLOCK.
8900         (genrtl_finish_function): Don't expand_exception_blocks.
8901         * tree.c (cp_statement_code_p): Handle EH_SPEC_BLOCK.
8902
8903 2001-03-28  Richard Henderson  <rth@redhat.com>
8904
8905         * decl.c (struct named_label_list): Rename eh_region to
8906         in_try_scope, add in_catch_scope.
8907         (struct binding_level): Rename eh_region to is_try_scope,
8908         add is_catch_scope.
8909         (note_level_for_try): Rename from note_level_for_eh.
8910         (note_level_for_catch): New.
8911         (poplevel): Copy both is_try_scope and is_catch_scope to
8912         the named_label_list struct.
8913         (check_previous_goto_1): Don't check for catch block via
8914         DECL_ARTIFICIAL; use in_try_scope instead.
8915         (check_goto): Likewise.
8916         * cp-tree.h (note_level_for_try, note_level_for_catch): Declare.
8917         * except.c (expand_start_catch_block): Call note_level_for_catch.
8918         * semantics.c (begin_compound_stmt): Update for note_level_for_try.
8919
8920 2001-03-27  Richard Henderson  <rth@redhat.com>
8921
8922         * except.c: Use USING_SJLJ_EXCEPTIONS instead of
8923         exceptions_via_longjmp.
8924
8925 2001-03-27  Phil Edwards  <pme@sources.redhat.com>
8926
8927         * pt.c (check_default_tmpl_args):  Make error messages clearer.
8928
8929 2001-03-26  Phil Edwards  <pme@sources.redhat.com>
8930
8931         * error.c:  Also undefine 'A' macro used for cp_printers definition.
8932
8933 2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8934
8935         * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
8936
8937 2001-03-26  Mike Yang <yang@research.att.com>
8938             Mark Mitchell  <mark@codesourcery.com>
8939
8940         * dump.c (dump_access): New function.
8941         (cp_dump_tree): Use it.  Dump basetype information for class
8942         types.
8943
8944 2001-03-26  Mark Mitchell  <mark@codesourcery.com>
8945
8946         * Makefile.in (optimize.o): Depend on params.h.
8947         (duplicate_decls): Copy DECL_NUM_STMTS, not DECL_FRAME_SIZE.
8948         (init_decl_processing): Set flag_no_inline when doing
8949         inlining-on-trees.
8950         * optimize.c: Include params.h.
8951         (struct inline_data): Improve documentation of FNS.  Add
8952         FIRST_INLINED_FN, INLINED_STMTS, and CLONING_P.
8953         (INSNS_PER_STMT): New macro.
8954         (remap_block): Use CLONING_P.
8955         (inlinable_function_p): Don't inline big functions.
8956         (expand_call_inline): Keep track of how much inlining we've done.
8957         (optimize_function): Set FIRST_INLINED_FN.
8958         (maybe_clone_body): Set CLONING_P.
8959         * semantics.c (simplify_aggr_init_exprs_r): Fix typing problems in
8960         tree nodes.
8961         (genrtl_finish_function): Clear DECL_DEFER_OUTPUT before calling
8962         rest_of_compilation.  Clear DECL_RTL for local variables
8963         afterwards.
8964         (clear_decl_rtl): New function.
8965
8966 2001-03-26  Nathan Sidwell  <nathan@codesourcery.com>
8967
8968         Implement DR 209
8969         * cp-tree.h (skip_type_access_control,
8970         reset_type_access_control): Prototype.
8971         * decl.c (grokdeclarator): Access of friends is not checked.
8972         * parse.y (component_decl_list): Reset type access control.
8973         * semantics.c (decl_type_access_control): Clear
8974         current_type_lookups.
8975         (save_type_access_control): Don't save if not deferring.
8976         (skip_type_access_control, reset_type_access_control): New
8977         functions.
8978         (begin_class_definition): Do type access control for basetypes.
8979         Start deferred access control.
8980         (finish_class_definition): Resume immediate access control if
8981         this is a local class.
8982
8983 2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8984
8985         * class.c (add_method): Use memcpy/memmove, not bcopy.
8986
8987         * decl.c (duplicate_decls): Likewise.
8988
8989 2001-03-23  Jakub Jelinek  <jakub@redhat.com>
8990
8991         * mangle.c (write_discriminator): Use `_0' for discriminator 1,
8992         not `_'.
8993
8994 2001-03-23  Jakub Jelinek  <jakub@redhat.com>
8995
8996         * decl.c (local_names): Define.
8997         (push_local_name): New.
8998         (grok_reference_init): Return init if initializing static reference
8999         variable with non-constant instead of emitting it.
9000         Move expand_static_init call to cp_finish_decl.
9001         (layout_var_decl): Call push_local_name.
9002         (maybe_commonize_var): Allow inlining functions even if they have
9003         static local variables, use comdat_linkage for them if flag_weak.
9004         (check_initializer): Call obscure_complex_init if
9005         grok_reference_init returned nonzero.
9006         (save_function_data): Clear x_local_names.
9007         (pop_cp_function_context): Free x_local_names.
9008         (mark_inlined_fns): Remove.
9009         (mark_lang_function): Mark x_local_names.
9010         (lang_mark_tree): Don't mark DECL_ACCESS for DECL_DISCRIMINATOR_P.
9011         Mark inlined_fns as tree, remove call to mark_inlined_fns.
9012         * class.c (alter_access): Ensure DECL_ACCESS is never set if
9013         DECL_DISCRIMINATOR_P.
9014         * cp-tree.h (cp_language_function): Add x_local_names.
9015         (lang_decl_flags): Add discriminator into u2.
9016         (lang_decl_inlined_fns): Remove.
9017         (lang_decl): inlined_fns is now a TREE_VEC.
9018         (DECL_DISCRIMINATOR_P, DECL_DISCRIMINATOR): Define.
9019         * optimize.c (inlinable_function_p): DECL_INLINED_FNS is now a
9020         TREE_VEC, not a custom structure.
9021         (optimize_function): Likewise.
9022         * mangle.c (discriminator_for_local_entity): Discriminate among
9023         VAR_DECL local entities.
9024         * search.c (dfs_access_in_type): If DECL_DISCRIMINATOR_P, DECL_ACCESS
9025         is not valid.
9026
9027 2001-03-22  Bryce McKinlay  <bryce@albatross.co.nz>
9028
9029         Add support for Java interface method calls.
9030         * cp-tree.h (struct lang_type): Add java_interface flag.
9031         (TYPE_JAVA_INTERFACE): New macro.
9032         * tree.c (cp_valid_lang_attribute): Handle "java_interface" attribute
9033         by setting TYPE_JAVA_INTERFACE.
9034         * call.c (java_iface_lookup_fn): New static.
9035         (build_over_call): If calling a method declared in a
9036         TYPE_JAVA_INTERFACE, call build_java_interface_fn_ref to generate the
9037         expression which resolves the function address.
9038         (build_java_interface_fn_ref): New function.
9039
9040 2001-03-22  Richard Henderson  <rth@redhat.com>
9041
9042         * Make-lang.in (cp/except.o): Don't depend on insn-flags.h.
9043         * except.c: Don't include it.
9044
9045 2001-03-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
9046             based on an idea from Joe Buck <jbuck@synopsys.com>
9047
9048         * parse.y (bad_decl, template_arg_list_ignore, arg_list_ignore):
9049         New nonterminals.
9050         (data_def, component_decl): Add reductions to bad_decl.
9051
9052 2001-03-22  Jakub Jelinek  <jakub@redhat.com>
9053
9054         * method.c (do_build_assign_ref): Don't use build_modify_expr for
9055         anonymous aggregates, since they don't have assignment operator
9056         method.
9057         * decl.c (fixup_anonymous_aggr): Disallow ctors, dtors and copy
9058         assignment operators for anonymous structure fields.
9059
9060 2001-03-21  Jason Merrill  <jason@redhat.com>
9061
9062         * pt.c (instantiate_decl): Abort if we see a member constant
9063         instantiation that doesn't already have its initializer.
9064         Downgrade explicit instantiation without definition to pedwarn.
9065
9066         * cp-tree.h (DECL_TINFO_FN_P, SET_DECL_TINFO_FN_P): Remove.
9067         * class.c (build_vtable_entry): Don't check DECL_TINFO_FN_P.
9068         (import_export_decl): Check tinfo_decl_p, not DECL_TINFO_FN_P.
9069
9070         * cp-tree.h (CLASSTYPE_VTABLE_NEEDS_WRITING): Remove.
9071         (pending_vtables): Remove.
9072         * decl2.c (pending_vtables): Remove.
9073         (import_export_vtable): Use CLASSTYPE_INTERFACE_ONLY, not
9074         CLASSTYPE_VTABLE_NEEDS_WRITING.
9075         (import_export_class): Likewise.
9076         (init_decl2): Don't mark pending_vtables.
9077         * lex.c (handle_pragma_vtable): Just sorry.
9078         * pt.c (instantiate_class_template): Don't mess with
9079         CLASSTYPE_VTABLE_NEEDS_WRITING.
9080         (mark_class_instantiated): Likewise.
9081         * ptree.c (print_lang_type): Don't print it.
9082         * semantics.c (begin_class_definition): Don't set it.
9083
9084         * pt.c (template_tail): Replace with last_pending_template.
9085         (maybe_templates, maybe_template_tail): Remove.
9086         (add_pending_template): Adjust.
9087         (instantiate_pending_templates): Adjust.
9088
9089         * cp-tree.h (struct saved_scope): Remove lang_stack field.
9090         (current_lang_stack): Remove.
9091         * decl.c (maybe_push_to_top_level): Don't initialize it.
9092         (duplicate_decls): Use current_lang_depth.
9093         (xref_basetypes): Likewise.
9094         * class.c (current_lang_depth): New fn.
9095         (push_lang_context): Use more varray functionality.
9096         (pop_lang_context): Likewise.
9097
9098         * error.c (GLOBAL_THING): Always use '__'.
9099
9100 2001-03-21  Mark Mitchell  <mark@codesourcery.com>
9101
9102         * class.c (build_clone): Clear DECL_ASSEMBLER_NAME.
9103
9104         * mangle.c (mangle_decl_string): Mangle the names of overloaded
9105         operators, even when they have `extern "C"' linkage.
9106
9107 2001-03-19  Mark Mitchell  <mark@codesourcery.com>
9108
9109         * class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
9110         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
9111         where it's not necessary.
9112         (add_method): Remove optimization involving comparison of
9113         DECL_ASSEMBLER_NAME.
9114         (build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
9115         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
9116         where it's not necessary.
9117         (check_methods): Likewise.
9118         (build_clone): Likewise.
9119         (built_vtt): Likewise.
9120         * cp-tree.h (DECL_NEEDED_P): Likewise.
9121         * decl.c (pushtag): Likewise.
9122         (duplicate_decls): Likewise.
9123         (pushdecl): Likewise.
9124         (builtin_function): Likewise.
9125         (build_library_fn_1): Set DECL_LANGUAGE for library functions.
9126         (build_cp_library_fn): Likewise.
9127         (maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
9128         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
9129         where it's not necessary.
9130         (make_rtl_for_nonlocal_decl): Likewise.
9131         (cp_finish_decl): Likewise.
9132         (grokfndecl): Likewise.
9133         (grokvardecl): Likewise.
9134         (grokdeclarator): Likewise.
9135         (start_function): Likewise.
9136         (cp_missing_return_ok_p): Likewise.
9137         * decl2.c (grokclassfn): Likewise.
9138         (check_classfn): Likewise.
9139         (finish_static_data_member_decl): Likewise.
9140         (grokfield): Likewise.
9141         * error.c (GLOBAL_IORD_P): Remove.
9142         (dump_global_iord): Improve output.
9143         (dump_decl): Avoid using DECL_ASSEMBLER_NAME.
9144         * except.c (nothrow_libfn_p): Summarily reject any function not in
9145         namespace-scope.
9146         * init.c (build_java_class_ref): Don't explicitly set
9147         DECL_ASSEMBLER_NAME after calling mangle_decl.
9148         * mangle.c (mangle_decl_string): Handle extern "C" functions.
9149         (mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
9150         * method.c (set_mangled_name_for_decl): Don't explicitly set
9151         DECL_ASSEMBLER_NAME after calling mangle_decl.
9152         (make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
9153         IDENTIFIER_GLOBAL_VALUE for the thunk.
9154         * pt.c (set_mangled_name_for_template_decl): Remove.
9155         (check_explicit_specialization): Don't use it.
9156         (looup_template_class): Don't set DECL_ASSEMBLER_NAME.
9157         (tsubst_friend_function): Likewise.
9158         (tsubst_decl): Likewise.
9159         (regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
9160         * rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
9161         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
9162         where it's not necessary.
9163         (tinfo_base_init): Likewise.
9164         (create_real_tinfo_var): Likewise.
9165         * search.c (looup_field_1): Likewise.
9166         * semantics.c (finish_named_return_value): Likewise.
9167         * tree.c (init_tree): Set lang_set_decl_assembler_name.
9168
9169 2001-03-15  Gabriel Dos Reis  <gdr@codesourcery.com>
9170
9171         Correct semantics restrictions checking in throw-expression.
9172         * except.c (is_admissible_throw_operand): New function.
9173         (build_throw): Use it.
9174
9175 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
9176
9177         * decl.c (cp_make_fnname_decl): Set DECL_IGNORED_P on __FUNCTION__
9178         and its ilk.
9179
9180 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
9181
9182         * class.c (build_clone): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
9183         * cp-tree.h (DECL_IN_MEMORY_P): Likewise.
9184         * decl.c (duplicate_decls): Likewise.
9185         (builtin_function): Likewise.
9186         (build_library_fn): Likewise.
9187         (build_cp_library_fn): Likewise.
9188         (check_initializer): Likewise.
9189         (cp_finish_decl): Likewise.
9190         * decl2.c (grokfield): Likewise.
9191         (grok_function_init): Remove #if 0'd code.
9192         (finish_anon_union): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
9193         * friend.c (do_friend): Likewise.
9194         * init.c (get_temp_regvar): Likewise.
9195         * method.c (make_thunk): Likewise.
9196         * pt.c (tsubst_friend_function): Likewise.
9197         (tsubst_decl): Likewise.
9198         (regenerate_decl_from_template): Likewise.
9199         * semantics.c (genrtl_named_return_value): Likewise.
9200         (expand_body): Likewise.
9201         (genrtl_finish_function): Likewise.
9202         * tree.c (cp_tree_equal): Likewise.
9203
9204 2001-03-12  Nathan Sidwell  <nathan@codesourcery.com>
9205
9206         * call.c (convert_like_real): Add extra semantics to INNER
9207         parameter. Don't convert to temporary if a user conversion
9208         gives us an lvalue that we're about to bind to a reference.
9209         Set INNER to indicate pending reference binding on recursive
9210         calls.
9211
9212 2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>
9213
9214         * cp/lex.c: Delete duplicate pending_lang_change.
9215
9216 2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>
9217
9218         * cp/lex.c (handle_pragma_interface, handle_pragma_implementation):
9219         Similarly.
9220         * cp/repo.c (get_base_filename, open_repo_file): Similarly.
9221         * cp/cp-tree.h: Remove file_name_nondirectory prototype.
9222
9223 2001-03-09  Zack Weinberg  <zackw@stanford.edu>
9224
9225         * Make-lang.in: Add dependencies on $(TM_P_H) as appropriate.
9226
9227 2001-03-08  Stan Shebs  <shebs@apple.com>
9228
9229         * cp-tree.h (set_identifier_local_value): Remove unused decl.
9230
9231 2001-03-06  Zack Weinberg  <zackw@stanford.edu>
9232
9233         * spew.c: Remove references to CPP_OSTRING.
9234
9235 2001-03-06  Andrew Haley  <aph@redhat.com>
9236
9237         * typeck.c (convert_arguments): Check that we have an fndecl.
9238
9239 2001-03-05  Andrew Haley  <aph@redhat.com>
9240
9241         * typeck.c (convert_arguments): Don't do ellipsis conversion for
9242         __built_in_constant_p.
9243
9244 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
9245
9246         * typeck.c (build_static_cast): Allow enum to enum conversions
9247         as per DR 128.
9248
9249 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
9250
9251         * class.c (check_field_decls): Pointers to member do not a
9252         non-pod struct make, as per DR 148.
9253
9254 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
9255
9256         * call.c (joust): cp_pedwarn when using gnu extension concerning
9257         worst conversion sequences.
9258
9259 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
9260
9261         * decl.c: Replace all uses of 'boolean' with 'bool'.
9262
9263 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
9264
9265         * lang-specs.h: Add zero initializer for cpp_spec field to
9266         all array elements that need one.  Don't put an #ifdef inside
9267         the initializer list; set a default for CPLUSPLUS_CPP_SPEC and
9268         use it.
9269
9270 2001-03-01  Nathan Sidwell  <nathan@codesourcery.com>
9271
9272         Implement using decls inside template functions.
9273         * decl2.c (validate_nonmember_using_decl): Don't special case
9274         fake_std_node in the global namespace. Don't reject early when
9275         processing a template.
9276         (do_local_using_decl): Add to statement tree. Don't do further
9277         processing when building a template.
9278         * pt.c (tsubst_expr, DECL_STMT case): Deal with USING_DECLs.
9279
9280 2001-03-01  Nathan Sidwell  <nathan@codesourcery.com>
9281
9282         * decl2.c (do_nonmember_using_decl): Don't complain if we find
9283         same function. Do complain about ambiguating extern "C"
9284         declarations.
9285
9286 2001-02-28  Nathan Sidwell  <nathan@codesourcery.com>
9287
9288         Remove floating point and complex type template constant parms.
9289         * pt.c (convert_nontype_argument): Remove REAL_TYPE and
9290         COMPLEX_TYPE extensions.
9291         (invalid_nontype_parm_type_p): Likewise.
9292
9293 2001-02-27  Jeffrey Oldham  <oldham@codesourcery.com>
9294
9295         * except.c (call_eh_info): Revert "match_function"'s type.
9296
9297 2001-02-27  Nathan Sidwell  <nathan@codesourcery.com>
9298
9299         Fix ctor vtable vcall offsets.
9300         * class.c (struct vtbl_init_data_s): Add rtti_binfo member.
9301         (build_rtt_vtbl_entries): Lose RTTI_BINFO parameter.
9302         (get_matching_base): Remove.
9303         (get_original_base): New function.
9304         (build_vtbl_initializer): Initialize vid.rtti_binfo.
9305         Use a virtual thunk for a ctor vtable with an index
9306         (add_vcall_offset_vtbl_entries_1): Check if binfo has lost a
9307         primary base within a constructor vtable. Only set
9308         BV_VCALL_INDEX when not a constructor vtable. Adjust vcall offset
9309         when primary base has been lost.
9310         * cp-tree.h (BINFO_VIRTUALS): Remove ambiguity from comment.
9311
9312 2001-02-26  Jeffrey Oldham  <oldham@codesourcery.com>
9313
9314         * call.c (joust): Ensure more_specialized()'s argument length
9315         parameter has correct value for constructors.
9316
9317 2001-02-26  Nathan Sidwell  <nathan@codesourcery.com>
9318
9319         * except.c (call_eh_info): Cleanup generation of cp_eh_info struct.
9320
9321         * decl.c (mark_inlined_fns): Prototype.
9322
9323 2001-02-22  Mark Mitchell  <mark@codesourcery.com>
9324
9325         * spew.c (yylex): Correct handling of friends.
9326
9327 2001-02-22  Mark Mitchell  <mark@codesourcery.com>
9328
9329         * mangle.c (write_encoding): Pass write_function_type the
9330         FUNCTION_DECL for the function being encoded.
9331         (write_function_type): Pass it along to write_bare_function_type.
9332         (write_bare_function_type): Pass it along to write_method_parms.
9333         (write_method_parms): Don't mangle the compiler-generated
9334         parameters to a constructor or destructor.
9335
9336 2001-02-22  Andreas Jaeger  <aj@suse.de>
9337
9338         * optimize.c: Include toplev.h for
9339         note_deferral_of_defined_inline_function prototype.
9340
9341 2001-02-22  Jakub Jelinek  <jakub@redhat.com>
9342
9343         * cp-tree.h (struct lang_decl_inlined_fns): New.
9344         (struct lang_decls): Add inlined_fns.
9345         (DECL_INLINED_FNS): New macro.
9346         * optimize.c (struct inline_data): Add inlined_fns.
9347         (declare_return_variable): Use VARRAY_ACTIVE_SIZE macro.
9348         (inlinable_function_p): Likewise, fix typo in comment,
9349         function is not inlinable if it already inlined function currently
9350         being optimized.
9351         (expand_call_inline): Add fn to inlined_fns if necessary.
9352         (optimize_function): Initialize inlined_fns.
9353         Save inlined_fns into DECL_INLINED_FNS after expanding inlines.
9354         * decl.c (mark_inlined_fns): New function.
9355         (lang_mark_tree): Call it.
9356
9357 2001-02-21  Jason Merrill  <jason@redhat.com>
9358
9359         * cp-tree.h (struct lang_decl_flags): Remove uninlinable flag.
9360         (DECL_UNINLINABLE): Move to middle-end.
9361
9362         * class.c (clone_function_decl): Set DECL_ABSTRACT on original fn.
9363         * decl.c (duplicate_decls): Preserve DECL_ABSTRACT.
9364         * class.c (build_clone): Set DECL_ABSTRACT_ORIGIN for the clone.
9365         * optimize.c (maybe_clone_body): Set DECL_ABSTRACT_ORIGIN for the
9366         parms and outer BLOCK.  note_deferral_of_defined_inline_function.
9367
9368         * method.c (implicitly_declare_fn): Don't set DECL_ARTIFICIAL on
9369         second parm of op=.
9370
9371 2001-02-19  Mark Mitchell  <mark@codesourcery.com>
9372
9373         * decl2.c (set_decl_namespace): Allow explicit instantiations in
9374         any namespace.
9375
9376 2001-02-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
9377
9378         * optimize.c (expand_call_inline): Don't walk subtrees of type
9379         nodes.
9380
9381 2001-02-18  Mark Mitchell  <mark@codesourcery.com>
9382
9383         * class.c (add_vcall_offset_vtbl_entries_1): Only add one entry
9384         for a destructor.
9385
9386 2001-02-18  Jason Merrill  <jason@redhat.com>
9387
9388         Do put the VTT parameter in DECL_ARGUMENTS.
9389         * cp-tree.h (struct cp_language_function): Add x_vtt_parm.
9390         (current_vtt_parm): New macro.
9391         (struct lang_decl_flags): Add has_vtt_parm_p, remove vtt_parm.
9392         (DECL_HAS_VTT_PARM_P): New macro.
9393         (DECL_VTT_PARM): Remove.
9394         (FUNCTION_FIRST_USER_PARMTYPE, FUNCTION_FIRST_USER_PARM): New macros.
9395         * decl.c (duplicate_decls): Only copy the operator code if
9396         appropriate.
9397         (start_function): Set current_vtt_parm.
9398         (lang_mark_tree): Don't mark vtt_parm.
9399         * decl2.c (maybe_retrofit_in_chrg): Do add the VTT parm to
9400         DECL_ARGUMENTS.  Set DECL_HAS_VTT_PARM_P.
9401         * class.c (build_clone): Maybe remove the VTT parm.
9402         * optimize.c (maybe_clone_body): Set up the VTT parm.
9403         * pt.c (copy_default_args_to_explicit_spec): Preserve the VTT parm.
9404         * call.c (build_over_call): Just allow the VTT arg.
9405         * method.c (make_thunk): Don't set DECL_VTT_PARM.
9406         (do_build_copy_constructor): Use FUNCTION_FIRST_USER_PARM.
9407         (synthesize_method): Use FUNCTION_FIRST_USER_PARMTYPE.
9408         * decl.c (grokdeclarator, copy_args_p, grok_ctor_properties): Likewise.
9409         * error.c (dump_function_decl): Likewise.
9410         * call.c (build_user_type_conversion_1, convert_like_real): Abort
9411         if we try to call a constructor with in-charge or VTT parms.
9412         * method.c (skip_artificial_parms_for): New fn.
9413         * call.c (add_function_candidate, build_over_call): Call it.
9414         * call.c (build_new_method_call): Use current_vtt_parm.
9415         * init.c (expand_virtual_init): Likewise.
9416         * class.c (same_signature_p): No longer static.
9417         * cp-tree.h: Declare it.
9418         * search.c (look_for_overrides_r): Use it.
9419
9420 2001-02-17  Mark Mitchell  <mark@codesourcery.com>
9421
9422         * cp-tree.h (new_abi_rtti_p): Remove.
9423         (name_mangling_version): Likewise.
9424         (flag_do_squangling): Likewise.
9425         * class.c (build_rtti_vtbl_entries): Remove old ABI support.
9426         * decl.c (grokfndecl): Likewise.
9427         * decl2.c (name_mangling_version): Remove.
9428         (flag_do_squangling): Likewise.
9429         (lang_f_options): Remove `squangle'.
9430         (unsupported_options): Add `squangle'.
9431         (cxx_decode_option): Issue a warning about uses of
9432         -fname-mangling-version.
9433         (finish_file): Remove old ABI support.
9434         * pt.c (check_explicit_specialization): Likewise.
9435         (tsubst_decl): Likewise.
9436         * rtti.c (init_rtti_processing): Likewise.
9437         (build_headof): Likewise.
9438         (get_tinfo_decl_dynamic): Likewise.
9439         (tinfo_from_decl): Likewise.
9440         (build_dynamic_cast_1): Likewise.
9441         (synthesize_tinfo_var): Likewise.
9442         * init.c (build_new): Allow enumeration types for the array-bounds
9443         in a direct-new-declarator.
9444
9445         * semantics.c (finish_typeof): Resolve OFFSET_REFs.
9446
9447         * pt.c (check_explicit_specialization): Copy TREE_PRIVATE and
9448         TREE_PROTECTED from the template being specialized.
9449
9450 2001-02-17  Jason Merrill  <jason@redhat.com>
9451
9452         * decl2.c (build_artificial_parm): Set TREE_READONLY.
9453
9454         * decl.c (bad_specifiers): Allow throw specs on things with
9455         pointer-to-function or -member-function type.
9456         * init.c (build_default_init): Don't use a CONSTRUCTOR to initialize
9457         a pmf.
9458
9459 2001-02-17  Mark Mitchell  <mark@codesourcery.com>
9460
9461         * call.c (check_dtor_name): Handle template names correctly.
9462
9463 2001-02-16  Jason Merrill  <jason@redhat.com>
9464
9465         * cp-tree.h (DECL_USE_VTT_PARM): Remove.
9466         * decl2.c (maybe_retrofit_in_chrg): Don't create it.
9467         * optimize.c (maybe_clone_body): Don't substitute it.
9468         * call.c (build_new_method_call): Check in_chrg instead.
9469         * init.c (expand_virtual_init): Likewise.
9470
9471 2001-02-16  Gabriel Dos Reis  <gdr@codesourcery.com>
9472
9473         * decl.c (check_tag_decl): Make sure a typedef for an anonymous
9474         class-type introduces at least a type-name.
9475
9476 2001-02-16  Jakub Jelinek  <jakub@redhat.com>
9477
9478         * call.c (convert_like_real): Create a temporary for non-lvalue.
9479
9480 2001-02-16  Jeffrey Oldham  <oldham@codesourcery.com>
9481
9482         * cp-tree.h: Fix typos in comments.
9483
9484 2001-02-16  Jason Merrill  <jason@redhat.com>
9485
9486         * optimize.c (remap_block): If we're compiling a clone, pass the
9487         new block to insert_block.
9488
9489 2001-02-16  Mark Mitchell  <mark@codesourcery.com>
9490
9491         * semantics.c (finish_asm_stmt): Robustify.
9492
9493 2001-02-15  Mark Mitchell  <mark@codesourcery.com>
9494
9495         * pt.c (push_template_decl_real): Don't remangle the name of a
9496         class template.
9497
9498 2001-02-15  Jim Meyering  <meyering@lucent.com>
9499
9500         * Make-lang.in (c++.install-common): Depend on installdirs.
9501         (c++.install-info): Likewise.
9502         (c++.install-man): Likewise.
9503
9504 2001-02-15  Mark Mitchell  <mark@codesourcery.com>
9505
9506         * typeck2.c (build_m_component_ref): Robustify.
9507
9508 2001-02-15  Alexandre Oliva  <aoliva@redhat.com>
9509
9510         * friend.c (do_friend): Don't take the nested [template] class
9511         into account when deciding whether to warn about the friend
9512         function not referring to a template function.
9513
9514 2001-02-14  Jakub Jelinek  <jakub@redhat.com>
9515
9516         * typeck.c (build_unary_op): Clarify error message.
9517
9518 2001-02-08  Aldy Hernandez  <aldyh@redhat.com>
9519
9520         * parse.y (component_constructor_declarator): allow optional
9521         parentheses around constructor class name.
9522
9523 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
9524
9525         * cp-tree.h (setup_vtbl_ptr): Move prototype to semantics.c
9526         section.
9527         * init.c (emit_base_init): Remove incorrect comment about
9528         virtual bases.
9529         * method.c (make_thunk): Fix comment alignment.
9530
9531 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
9532
9533         Kill remnants of this is variable.
9534         * cp-tree.h (flag_this_is_variable): Remove.
9535         * decl2.c (flag_this_is_variable): Remove.
9536         * class.c (fixed_type_or_null): Add cdtor parm. Adjust.
9537         (build_vbase_path): The path is non-static, even in a cdtor.
9538         (resolves_to_fixed_type_p): Add additional return value.
9539         * search.c (init_vbase_pointers): Adjust.
9540         * tree.c (lvalue_p_1): Adjust.
9541         * typeck.c (mark_addressable): Adjust.
9542
9543 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
9544
9545         * pt.c (unify): Don't check cv quals of array types.
9546
9547 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
9548
9549         * tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to
9550         check whether we already have the type.
9551
9552 2001-02-13  Mark Mitchell  <mark@codesourcery.com>
9553
9554         * cp-tree.h (CLASSTYPE_DESTRUCTORS): Fix typo in comment.
9555         * call.c (build_op_delete_call): Simplify to remove duplicate
9556         code.
9557         * class.c (clone_function_decl): Don't build the deleting variant
9558         of a non-virtual destructor.
9559         * decl.c (finish_destructor_body): Don't call delete if this is a
9560         non-virtual destructor.
9561         * init.c (build_delete): Explicitly call `operator delete' when
9562         deleting an object with a non-virtual destructor.
9563
9564 2001-02-13  Jason Merrill  <jason@redhat.com>
9565
9566         * lang-specs.h: Add more __EXCEPTIONS.
9567
9568 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
9569
9570         * typeck2.c (process_init_constructor): Check
9571         TREE_HAS_CONSTRUCTOR before issuing missing init warning.
9572
9573 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
9574
9575         * pt.c (maybe_adjust_types_for_deduction, DEDUCE_ORDER case):
9576         Remove spurious information in comment. Allow further
9577         adjustments of REFERENCE_TYPE args.
9578
9579 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
9580
9581         * errfn.c (cp_deprecated): Tweak diagnostic text.
9582         * parse.y (new_initializer): Deprecate initializer lists
9583         extension.
9584
9585 2001-02-12  Mark Mitchell  <mark@codesourcery.com>
9586
9587         Remove old ABI support.
9588
9589 2001-02-11  Mark Mitchell  <mark@codesourcery.com>
9590
9591         * decl2.c (flag_vtable_thunks): Always set it to 1.
9592         (flag_new_abi): Likewise.
9593         * lang-specs.h: Remove conditional on ENABLE_NEW_GXX_ABI.
9594
9595         * Makefile.in (g++spec.o): Fix typo.
9596
9597 2001-02-09  Jason Merrill  <jason@redhat.com>
9598
9599         * lang-specs.h: Restore definition of __EXCEPTIONS.
9600
9601 2001-02-08  Jason Merrill  <jason@redhat.com>
9602
9603         * search.c (shared_member_p): New function.
9604         (lookup_field_r): Use it.
9605         * cp-tree.h (SHARED_MEMBER_P): Remove.
9606
9607         * method.c (process_overload_item): Handle template-dependent array
9608         bounds.
9609         * pt.c (type_unification_real): If we end up with undeduced nontype
9610         parms, try again.
9611
9612         * decl.c (lookup_name_real): Tweak warning to refer to decls, not
9613         types.
9614
9615         * typeck2.c (friendly_abort): Don't say anything if we have
9616         earlier errors or sorries.
9617
9618         * decl.c (check_tag_decl): Notice attempts to redefine bool and
9619         wchar_t.  Ignore if in_system_header.
9620
9621         * decl.c (maybe_push_cleanup_level): New fn...
9622         (start_decl_1): ...split out from here.
9623         * cvt.c (build_up_reference): Use it.
9624         * cp-tree.h: Declare it.
9625
9626 2001-02-07  Mark Mitchell  <mark@codesourcery.com>
9627
9628         * lang-specs.h: Use CPLUSPLUS_CPP_SPEC for the preprocessor
9629         spec.
9630
9631 2001-02-06  Nathan Sidwell  <nathan@codesourcery.com>
9632
9633         * pt.c (lookup_template_class): Make sure it's a primary
9634         template or template_template_parm when called from the parser.
9635         (instantiate_template_class): Add assertion.
9636
9637 2001-02-05  Alexandre Oliva  <aoliva@redhat.com>
9638
9639         * method.c (build_mangled_name) [old abi]: Protect flush_repeats()
9640         from error_mark_node.
9641
9642 2001-02-05  Nathan Sidwell  <nathan@codesourcery.com>
9643
9644         Fix specification and implementation bugs in V3 ABI
9645         construction vtables.
9646         * cp-tree.h (flag_dump_class_layout): New flag.
9647         (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH_P): Remove.
9648         (BINFO_LOST_PRIMARY_P): New flag.
9649         (SET_BINFO_NEW_VTABLE_MARKED): Adjust asserts.
9650         (BINFO_PRIMARY_MARKED_P): Rename to ...
9651         (BINFO_PRIMARY_P): ... here.
9652         (binfo_via_virtual): New prototype.
9653         * decl2.c (flag_dump_class_layout): New flag.
9654         (cxx_decode_option): Set it. Adjust -fdump-translation-unit to
9655         use `=' as a file name separator.
9656         * init.c (dfs_initialize_vtbl_ptrs): Walk into virtual primary
9657         bases.
9658         (build_vtbl_address): If this is a virtual primary base, then
9659         get the vtbl of what it is ultimately primary for.
9660         * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Adjust
9661         for BINFO_PRIMARY_P.
9662         (dfs_skip_nonprimary_vbases_markedp): Likewise.
9663         (get_shared_vbase_if_not_primary): Likewise.
9664         (dfs_get_pure_virtuals): Likewise.
9665         (expand_upcast_fixups): Likewise.
9666         (fixup_virtual_upcast_offsets): Likewise.
9667         (dfs_find_vbase_instance): Likewise.
9668         (find_vbase_instance): Likewise.
9669         (binfo_from_vbase): Adjust comment to reflect reality.
9670         (binfo_via_virtual): New function.
9671         * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): New macros
9672         for binfo walking during VTT construction.
9673         (dfs_mark_primary_bases): Remove.
9674         (force_canonical_binfo_r): New function.
9675         (force_canonical_binfo): New function.
9676         (mark_primary_virtual_base): New function.
9677         (mark_primary_bases): Walk in inheritance graph order, use
9678         mark_primary_virtual_base.
9679         (determine_primary_base): Use some more intermediate variables.
9680         (dfs_find_final_overrider): Don't check for overriding along a
9681         virtual path.
9682         (dfs_modify_vtables): Walk into primary virtual bases too.
9683         (walk_subobject_offsets): Adjust for BINFO_PRIMARY_P.
9684         (build_base_fields): Likewise.
9685         (dfs_set_offset_for_unshared_vbases): Likewise.
9686         (layout_virtual_bases): Likewise.
9687         (end_of_class): Likewise.
9688         (finish_struct_1): Call dump_class_hierarchy, if requested.
9689         (dfs_get_primary_binfo): Use BINFO_TYPE for binfos.
9690         (dump_class_hierarchy_r): Add stream parameter. Emit more information.
9691         (dump_class_hierarchy): Add file parameter. Append to file, if
9692         required.
9693         (finish_vtbls): Adjust accumulate_vtbl_inits call.
9694         Use canonical base for virtual bases.
9695         (build_vtt): Add more comments. Adjust build_vtt_inits call.
9696         (build_vtt_inits): Remove VIRTUAL_VTTS_P parm.
9697         Only set BINFO_VPTR_INDEX on top level. Use VTT_TOP_LEVEL_P,
9698         VTT_MARKED_BINFO_P for binfo walking. Use canonical vbase for
9699         virtual VTTs.
9700         (dfs_build_secondary_vptr_vtt_inits): Extract VTT_TOP_LEVEL_P
9701         from DATA.  We want virtual primary bases and all bases via virtual.
9702         Only set BINFO_VPTR_INDEX for top level. Look up from a primary
9703         virtual base when not a construction vtable.
9704         (dfs_ctor_vtable_bases_queue_p): New DFS predicate.
9705         (build_ctor_vtbl_group): Adjust accumulate_vtbl_inits call.
9706         Use canonical bases when processing virtual bases.
9707         (accumulate_vtbl_inits): We're interested in any base via a
9708         virtual path.
9709         (dfs_accumulate_vtbl_inits): If this is a primary virtual base
9710         within a construction vtable, determine what is being overridden.
9711         (build_vtbl_initializer): Add more comments
9712         (add_vcall_offset_vtbl_entries_1): Adjust comment.
9713         (build_rtti_vtbl_entries): Check if the base has lost its
9714         primary.
9715
9716 2001-02-05  Mark Mitchell  <mark@codesourcery.com>
9717
9718         * Makefile.in (g++spec.o): Adjust use of DRIVER_DEFINES.
9719
9720 Sun Feb  4 15:52:44 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
9721
9722         * decl.c (pushdecl): Call abort instead of fatal.
9723         * except.c (decl_is_java_type): Call fatal_error instead of fatal.
9724         * init.c (build_new_1): Likewise.
9725         (build_java_class_ref): Call internal_error and fatal_error, not fatal.
9726         * decl.c (build_typename_type): hash_table_init now returns void.
9727         decl.c (init_decl_processing): Make an error non-fatal.
9728
9729 2001-02-04  Mark Mitchell  <mark@codesourcery.com>
9730
9731         * cp-tree.h (CLASSTYPE_INTERFACE_UNKNOWN): Fix formatting.
9732         Document.
9733         (CLASSTYPE_INTERFACE_KNOWN): Likewise.
9734         (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
9735         (SET_CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
9736         (SET_CLASSTYPE_INTERFACE_KNOWN): Likewise.
9737         * decl.c (maybe_commonize_var): Use the new name-mangling where
9738         appropriate.
9739         * decl2.c (comdat_linkage): Enhance comments.  Make all
9740         compiler-generated things static, if COMDAT is not available.
9741         (get_tinfo_decl): Do not make typeinfo objects that belong in the
9742         library COMDAT.
9743         (tinfo_base_init): Use the correct mangled name for typeinfo
9744         strings, and push them into the global scope.
9745         (typeinfo_in_lib_p): New function.
9746         (synthesize_tinfo_var): Use it.
9747         (create_real_tinfo_var): Likewise.
9748
9749 2001-02-03  Jakub Jelinek  <jakub@redhat.com>
9750
9751         * decl.c (push_class_binding): Use context_for_name_lookup instead
9752         of CP_DECL_CONTEXT.
9753         * search.c (context_for_name_lookup): Remove static.  Check for NULL
9754         context in the loop.
9755         * cp-tree.h (context_for_name_lookup): Add prototype.
9756
9757 2001-02-02  Jakub Jelinek  <jakub@redhat.com>
9758
9759         * cp-tree.h (build_expr_ptr_wrapper, can_free): Remove.
9760         * tree.c (build_expr_ptr_wrapper, can_free, permanent_obstack):
9761         Remove.
9762         * call.c (convert_class_to_reference, build_user_type_conversion_1,
9763         add_warning): Change build_expr_ptr_wrapper to build_ptr_wrapper.
9764
9765 2001-02-02  Mark Mitchell  <mark@codesourcery.com>
9766
9767         * Make-lang.in (g++spec.o): Add DRIVER_DEFINES to the list
9768         of macros used when compiling g++spec.c.
9769         * g++spec.c (lang_specific_driver): Link with the shared
9770         libgcc by default.
9771
9772 2001-01-29  Joseph S. Myers  <jsm28@cam.ac.uk>
9773
9774         * decl2.c (build_expr_from_tree), lex.c (make_pointer_declarator,
9775         make_reference_declarator, make_call_declarator), method.c
9776         (implicitly_declare_fn), parse.y (namespace_using_decl,
9777         notype_unqualified_id, expr_or_declarator, new_type_id,
9778         after_type_declarator, direct_after_type_declarator,
9779         notype_declarator, complex_notype_declarator,
9780         complex_direct_notype_declarator, qualified_id,
9781         notype_qualified_id, overqualified_id, direct_new_declarator,
9782         absdcl, direct_abstract_declarator, conversion_declarator), pt.c
9783         (tsubst), semantics.c (begin_constructor_declarator): Use build_nt
9784         instead of build_parse_node.
9785
9786 2001-01-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9787
9788         * cp-tree.h (cp_tree_index): Delete CPTI_MINUS_ONE.
9789         (minus_one_node): Moved to top level gcc directory.  Renamed
9790         to integer_minus_one_node.
9791
9792         * init.c (init_init_processing): Don't set minus_one_node.
9793         (build_vec_init): Use integer_minus_one_node.
9794
9795         * rtti.c (get_tinfo_decl_dynamic): Likewise.
9796
9797 2001-01-28  Jakub Jelinek  <jakub@redhat.com>
9798
9799         * optimize.c (copy_body_r): If MODIFY_EXPR has both arguments
9800         identical and they would be replaced with constant, remove
9801         MODIFY_EXPR from the tree.
9802
9803 2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9804
9805         * Make-lang.in: Remove all dependencies on defaults.h.
9806         * call.c: Don't include defaults.h.
9807         * decl.c: Likewise.
9808         * decl2.c: Likewise.
9809         * except.c: Likewise.
9810         * pt.c: Likewise.
9811         * rtti.c: Likewise.
9812         * tree.c: Likewise.
9813         * typeck.c: Likewise.
9814
9815 2001-01-25  Jakub Jelinek  <jakub@redhat.com>
9816
9817         * mangle.c (write_mangled_name, write_encoding): Mangle overloaded
9818         operators even in "C" linkage.
9819         * method.c (set_mangled_name_for_decl): Likewise.
9820         * decl.c (grokfndecl): Call set_mangled_name_for_decl even for
9821         overloaded operators in "C" linkage.
9822
9823 2001-01-24  Nathan Sidwell  <nathan@codesourcery.com>
9824
9825         * pt.c (tsubst_decl): Remove IN_DECL parameter.
9826         (tsubst_arg_types): Check parameter is not void.
9827         (tsubst): Adjust tsubst_decl call.
9828
9829 2001-01-24  Nathan Sidwell  <nathan@codesourcery.com>
9830
9831         * call.c (add_builtin_candidate): Quote std properly, from
9832         previous change.
9833
9834 2001-01-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
9835
9836         * pt.c (check_explicit_specialization): Clone constructors and
9837         destructors.
9838
9839 2001-01-23  Nathan Sidwell  <nathan@codesourcery.com>
9840
9841         * decl.c (grokdeclarator): Don't presume DECL_LANG_SPECIFIC
9842         indicates anything special about template depth. Make sure we
9843         only count the user visible template classes.
9844
9845 2001-01-23  Nathan Sidwell  <nathan@codesourcery.com>
9846
9847         * call.c (build_conv): Typo in comment.
9848         (add_builtin_candidate): Add more explanation.
9849         Remove extra test for ENUMERAL_TYPE in {PRE,POST}INCREMENT_EXPR.
9850         Allow ENUMERAL_TYPEs for relops and eqops. Add both candidates
9851         when we have enumeral types.
9852         (add_builtin_candidates): Add more explanation. Add ENUMERAL_TYPE
9853         candidates for relops and eqops.
9854         (joust): Simplify control flow. Allow a non-template user
9855         function to hide a builtin.
9856
9857 2001-01-22  Nathan Sidwell  <nathan@codesourcery.com>
9858
9859         * cp-tree.h (unification_kind_t): Add DEDUCE_ORDER.
9860         (more_specialized): Add deduction parameter.
9861         * call.c (joust): Adjust more_specialized call.
9862         * pt.c (UNIFY_ALLOW_OUTER_MORE_CV_QUAL,
9863         UNIFY_ALLOW_OUTER_LESS_CV_QUAL): New unify flags.
9864         (get_bindings_order): Remove.
9865         (get_bindings_real): Add DEDUCE parameter.
9866         (maybe_adjust_types_for_deduction): Return extra unify flags. Do
9867         REFERENCE_TYPE jig for DEDUCE_ORDER.
9868         (type_unification_real): Deal with DEDUCE_ORDER. Use result of
9869         maybe_adjust_types_for_deduction.
9870         (more_specialized): Add DEDUCE parameter. Call get_bindings_real
9871         directly.
9872         (try_one_overload): Use result of maybe_adjust_types_for_deduction.
9873         (check_cv_quals_for_unify): Use new unify qualifier flags.
9874         (unify): Clear new unify qualifier flags.
9875         (get_bindings_real): Add DEDUCE parameter.
9876         (get_bindings): Adjust call to get_bindings_real.
9877         (get_bindings_overload): Likewise.
9878         (most_specialized_instantiation): Adjust call to
9879         more_specialized.
9880
9881 2001-01-19  Jason Merrill  <jason@redhat.com>
9882
9883         * decl2.c (flag_vtable_thunks): Also depend on ENABLE_NEW_GXX_ABI.
9884
9885         * decl.c (init_decl_processing): Just force -fvtable-thunks on if
9886         -fnew-abi.
9887
9888 2001-01-19  Ute Pelkmann  <scope.muc@t-online.de>
9889
9890         * decl2.c (arg_assoc_class): Fix double iteration logic.
9891
9892 2001-01-19  Jason Merrill  <jason@redhat.com>
9893
9894         * init.c (build_delete): Always call convert_force to strip cv-quals.
9895
9896         * decl2.c (flag_new_abi): Depend on ENABLE_NEW_GXX_ABI.
9897         * lang-specs.h: Default ABI depends on ENABLE_NEW_GXX_ABI.
9898         * g++spec.c: Don't look at ENABLE_NEW_GXX_ABI.
9899
9900 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
9901
9902         * search.c (get_vbase_1): Count only virtual bases.
9903
9904 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
9905
9906         * class.c (duplicate_tag_error): Robustify flag clearing.
9907
9908 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
9909
9910         * cp-tree.h (lookup_template_class): Add complain parm.
9911         * decl.c (lookup_namespace_name): Adjust call to
9912         lookup_template_class.
9913         (make_typename_type): Likewise.
9914         * semantics.c (finish_template_type): Likewise.
9915         * pt.c (lookup_template_class): Add complain parm. Adjust.
9916         (tsubst_aggr_type): Pass COMPLAIN down to lookup_template_class.
9917         (tsubst): Likewise.
9918
9919 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
9920
9921         * pt.c (copy_default_args_to_explicit_spec): Preserve
9922         object's CV quals. Reorganize.
9923
9924 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9925
9926         * typeck.c (build_modify_expr): Say `initialization' for
9927         INIT_EXPRs.
9928         * init.c (build_default_init): Convert to enumeral type, if
9929         needed.
9930
9931 2001-01-18  Jakub Jelinek  <jakub@redhat.com>
9932
9933         * parse.y (nomods_initdcl0): Properly set things up for
9934         initdcl0_innards.
9935
9936 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9937
9938         * pt.c (UNIFY_ALLOW_OUTER_LEVEL): New unify flag.
9939         (type_unification_real): Set it.
9940         (unify): Use it.
9941
9942 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9943
9944         * decl.c (finish_destructor_body): Convert to vbase pointer here.
9945
9946 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9947
9948         * semantics.c (begin_class_definition): Check we're not inside a
9949         template parm list.
9950
9951 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
9952
9953         * tree.c (walk_tree, TREE_LIST): Don't walk the TREE_PURPOSE of
9954         BASELINK_P.
9955
9956 2001-01-16  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
9957
9958         * typeck.c (build_function_call_real): Call fold on the CALL_EXPR.
9959         * call.c (build_over_call): Add comment.
9960
9961 2001-01-16 Daniel Berlin <dberlin@redhat.com>
9962
9963         * cvt.c (ocp_convert): Handle vector type conversion
9964         * typeck2.c (digest_init): Handle vector type initializations
9965
9966 2001-01-16  Phil Edwards  <pme@sources.redhat.com>
9967
9968         * g++spec.c:  Don't add libraries needlessly if -fsyntax-only
9969           was given.
9970
9971 2001-01-15  Nathan Sidwell  <nathan@codesourcery.com>
9972
9973         * pt.c (check_nontype_parm): Rename to ...
9974         (invalid_nontype_parm_type_p): ... here.
9975         (process_template_parm): Adjust.
9976         (convert_template_argument): Adjust.
9977
9978 2001-01-15  Nathan Sidwell  <nathan@codesourcery.com>
9979
9980         * pt.c (check_nontype_parm): New function.
9981         (process_template_parm): Use it.
9982         (convert_template_argument): Use it.
9983         (convert_nontype_argument, RECORD_TYPE): Assert it's a ptr to
9984         member.
9985
9986 2001-01-14  Jeffrey Oldham  <oldham@codesourcery.com>
9987
9988         * tree.c: Add defaults.h
9989         (cp_valid_lang_attribute): Incorporate SUPPORTS_INIT_PRIORITY.
9990         * Make-lang.in (cp/tree.o): Add defaults.h.
9991
9992 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
9993
9994         * Make-lang.in (CXX_C_OBJS): Add c-format.o.
9995
9996 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
9997
9998         * g++.1: Change to be ".so man1/gcc.1".
9999
10000 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
10001
10002         * Make-lang.in (c++.info, c++.install-info): Build and install g++
10003         internals info.
10004         (c++.uninstall, c++.maintainer-clean): Remove g++ internals info.
10005         ($(srcdir)/cp/g++int.info): New target.
10006         * gxxint.texi: Add info directory entry.  Use @@ in email address.
10007         * .cvsignore: Update.
10008
10009 2001-01-12  Nathan Sidwell  <nathan@codesourcery.com>
10010
10011         * typeck.c (build_c_cast): Do template processing earlier.
10012         Always pedwarn on array casts.
10013
10014 2001-01-12  Nathan Sidwell  <nathan@codesourcery.com>
10015
10016         * friend.c (make_friend_class): Make sure a templated class is
10017         actually a template.
10018
10019 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
10020
10021         * decl2.c (get_guard): Set linkage from guarded decl.
10022
10023 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
10024
10025         * call.c (convert_default_arg): Check for unprocessed
10026         DEFAULT_ARG.
10027         * cp-tree.h (replace_defarg): Move to spew.c.
10028         (maybe_snarf_defarg, add_defarg_fn, do_pending_defargs): Move to
10029         spew.c, which is where they really are.
10030         (done_pending_defargs): Declare.
10031         (unprocessed_defarg_fn): Declare.
10032         * decl.c (replace_defarg): Move to spew.c
10033         * parse.y (structsp): Call done_pending_defargs.
10034         * spew.c (defarg_fns): Rearrange list structure.
10035         (defarg_fnsdone): New static variable.
10036         (defarg_depfns): New static variable.
10037         (init_spew): Adjust.
10038         (add_defarg_fn): Store the type in TREE_TYPE.
10039         (do_pending_defargs): Detect and deal with ordering constraints
10040         and circularity.
10041         (done_pending_defargs): New function.
10042         (unprocessed_defarg_fn): New function.
10043         (replace_defarg): Moved from decl.c. Robustify. Don't save
10044         if circularity detected.
10045
10046 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
10047
10048         * pt.c (unify): Check array has a domain, before checking
10049         whether it is variable sized.
10050
10051 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
10052
10053         * decl.c (grokparms): Unobfuscate and get correct diagnostic for
10054         parameters with pointers to arrays of unknown bound.
10055
10056 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
10057
10058         * parse.y (template_parm_header, template_spec_header): New
10059         reductions. Split out from ...
10060         (template_header): ... here. Use them.
10061         (template_template_parm): Use template_parm_header.
10062         * semantics.c (finish_template_template_parm): Add assert.
10063
10064 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
10065
10066         * mangle.c (write_builtin_type): Fix thinko.
10067
10068         * pt.c (copy_default_args_to_explicit_spec_1): New function.
10069         (copy_default_args_to_explicit_spec): Likewise.
10070         (check_explicit_specialization): Use it.
10071
10072         * class.c (finish_struct_1):  Remove last argument in call to
10073         make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
10074         * decl.c (builtin_function): Likewise.
10075         (build_cp_library_fn): Likewise.
10076         (check_initializer): Likewise.
10077         (make_rtl_for_nonlocal_decl): Likewise.
10078         (cp_finish_decl): Likewise.
10079         (start_function): Likewise.
10080         * decl2.c (finish_anon_union): Likewise.
10081         * friend.c (do_friend): Likewise.
10082         * init.c (build_java_class_ref): Likewise.
10083         * method.c (make_thunk): Likewise.
10084         * pt.c (tsubst_friend_function): Likewise.
10085         * semantics.c (expand_body): Likewise.
10086
10087 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
10088
10089         * cp-tree.h (DECL_CLONED_FUNCTION_P): Avoid wild reads by not
10090         looking at DECL_CLONED_FUNCTION for non-functions.
10091
10092 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
10093
10094         * error.c (dump_template_parameter): Use parm to determine how
10095         to print default value.
10096
10097 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
10098
10099         * class.c (duplicate_tag_error): Clear more flags.
10100
10101 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
10102
10103         * call.c (build_new_method_call): Use binfo_for_vbase.
10104
10105 2001-01-10  Joseph S. Myers  <jsm28@cam.ac.uk>
10106
10107         * cp-tree.h (flag_cond_mismatch): Don't declare.
10108         * decl2.c (flag_cond_mismatch): Don't define.
10109         (lang_f_options): Remove cond-mismatch.
10110         (unsupported_options): Add cond-mismatch.
10111
10112 2001-01-09  Nathan Sidwell  <nathan@codesourcery.com>
10113
10114         * class.c (handle_using_decl): Reject using of constructor name
10115         of sourcing class. Allow injecting of a method with same name as
10116         nested class. Fixup error messages.
10117
10118 2001-01-09  Joseph S. Myers  <jsm28@cam.ac.uk>
10119
10120         * decl2.c (lang_decode_option): Handle -Wformat=2.
10121
10122 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
10123
10124         * cp-tree.h (lang_decl_flags): Rename defined_in_class to
10125         initialized_in_class.
10126         (DECL_DEFINED_IN_CLASS_P): Rename to ...
10127         (DECL_INITIALIZED_IN_CLASS_P): ... here, to reflect true meaning.
10128         * decl.c (duplicate_decls): Preseve DECL_INITIALIZED_IN_CLASS_P.
10129         (cp_finish_decl): Adjust for DECL_INITIALIZED_IN_CLASS_P.
10130         * pt.c (check_default_tmpl_args): Adjust for
10131         DECL_INITIALIZED_IN_CLASS_P.
10132         (instantiate_class_template): Likewise.
10133         (instantiate_decl): Check DECL_INITIALIZED_IN_CLASS_P.
10134
10135         * class.c (finish_struct): Constify saved_filename.
10136
10137 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
10138
10139         * class.c (duplicate_tag_error): Adjust diagnostic.
10140         (finish_struct): Locally set location to start of struct.
10141         * decl.c (fixup_anonymous_aggr): Use cp_error_at.
10142
10143 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
10144
10145         * decl.c (struct binding_level): Adjust class_shadowed comments
10146         to reflect reality.
10147         (push_class_level_binding): Adjust comments to reflect reality.
10148         Set IDENTIFIER_CLASS_VALUE when replacing an existing binding.
10149         Don't set TREE_VALUE on the class_shadowed list.
10150
10151 2001-01-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10152
10153         * decl2.c (acceptable_java_type): Allow references too.
10154         * init.c (build_java_class_ref): When using the new ABI, search
10155         `class$' and have it mangled with `mangle_decl.'
10156         * mangle.c (write_java_integer_type_codes): New function.
10157         (write_builtin_type): Detect and mangle Java integer and real
10158         types.
10159
10160 2001-01-07  Mark Mitchell  <mark@codesourcery.com>
10161
10162         * decl2.c (grokfield): Don't accept `asm' specifiers for
10163         non-static data members.
10164
10165 2001-01-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10166
10167         * expr.c (cplus_expand_expr): Don't reset `target'.
10168
10169 2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>
10170
10171         * cp/decl2.c (cxx_post_options): Call cpp_post_options.
10172
10173 2001-01-05  Nathan Sidwell  <nathan@codesourcery.com>
10174
10175         * parse.y (template_datadef): Check for error_mark_node.
10176
10177 2001-01-05  Nathan Sidwell  <nathan@codesourcery.com>
10178
10179         * cp-tree.def (DEFAULT_ARG): Make `x' class.
10180
10181 2001-01-04  Joseph S. Myers  <jsm28@cam.ac.uk>
10182
10183         * decl.c (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Don't define.
10184         (record_builtin_type): Make non-static.
10185         (flag_short_double): Don't declare.
10186         (init_decl_processing): Remove the creation of many tree nodes now
10187         in c_common_nodes_and_builtins.
10188         (build_void_list_node): New function.
10189         * decl2.c (flag_short_double, flag_short_wchar): Don't define.
10190         * cp-tree.h (flag_short_wchar): Don't declare.
10191
10192 2001-01-04  Mark Mitchell  <mark@codesourcery.com>
10193
10194         * call.c (build_conv): Don't use build1 for USER_CONV.
10195         * pt.c (tsubst_copy): Or for PREINCREMENT_EXPR and similar nodes.
10196
10197 2001-01-03  Joseph S. Myers  <jsm28@cam.ac.uk>
10198
10199         * lex.c (lang_init): Call c_common_lang_init.
10200
10201 2001-01-03  Nathan Sidwell  <nathan@codesourcery.com>
10202
10203         * search.c (lookup_fnfields_here): Remove.
10204         (look_for_overrides_r): Use lookup_fnfields_1.
10205         Ignore functions from using declarations.
10206
10207 2001-01-03  Nathan Sidwell  <nathan@codesourcery.com>
10208
10209         Implement exceptions specifiers for implicit member functions.
10210         * cp-tree.h (merge_exceptions_specifiers): Declare new function.
10211         * method.c (synthesize_exception_spec): New function.
10212         (locate_dtor, locate_ctor, locate_copy): New functions.
10213         (implicitly_declare_fn): Generate the exception spec too.
10214         * search.c (check_final_overrider): Check artificial functions
10215         too.
10216         * typeck2.c (merge_exception_specifiers): New function.
10217
10218 2001-01-03  Jason Merrill  <jason@redhat.com>
10219
10220         * init.c (build_default_init): New fn.
10221         (perform_member_init): Split out from here.
10222         (build_new_1): Use it.  Simplify initialization logic.
10223         (build_vec_init): Take an array, rather than a pointer and maxindex.
10224         Speed up simple initializations.  Don't clean up if we're assigning.
10225         * cp-tree.h: Adjust.
10226         * decl2.c (do_static_initialization): Remove TREE_VEC case.
10227         * parse.y (new_initializer): Return void_zero_node for ().
10228         * typeck.c (build_modify_expr): Handle getting a CONSTRUCTOR.
10229         * typeck2.c (digest_init): Only complain about user-written
10230         CONSTRUCTORs.
10231
10232 2000-12-22  Mike Stump  <mrs@wrs.com>
10233
10234         * decl2.c: (max_tinst_depth): Increase to 50.
10235
10236 2001-01-02  Mark Mitchell  <mark@codesourcery.com>
10237
10238         * class.c (invalidate_class_lookup_cache): Zero the
10239         previous_class_values.
10240         * cp-tree.h (TMPL_PARMS_DEPTH): Use TREE_INT_CST_LOW, not
10241         TREE_INT_CST_HIGH.
10242         (CLASSTYPE_TEMPLATE_LEVEL): Likewise.
10243         * decl.c (free_bindings): New variable.
10244         (push_binding): Don't create a new binding if we have one on the
10245         free list.
10246         (pop_binding): Put old bindings on the free list.
10247         (init_decl_processing): Use size_int, not build_int_2.
10248         Register free_bindings as a GC root.
10249         (cp_make_fname_decl): Use size_int, not build_int_2.
10250         (push_inline_template_parms_recursive): Likewise.
10251         (end_template_parm_list): Likewise.
10252         (for_each_template_parm): Do not use walk_tree_without_duplicates.
10253         (tsubst_template_parms): Use size_int, not build_int_2.
10254         (tsubst): Likewise.
10255         * rtti.c (get_vmi_pseudo_type_info): Likewise.
10256
10257 2001-01-02  Richard Henderson  <rth@redhat.com>
10258
10259         * parse.y (asm): Set ASM_INPUT_P.
10260
10261 2001-01-02  Jason Merrill  <jason@redhat.com>
10262
10263         * tree.c (cp_valid_lang_attribute): Don't set CLASSTYPE_COM_INTERFACE
10264         for v3 ABI.
10265
10266         * typeck.c (cp_truthvalue_conversion): New fn.
10267         * cvt.c (ocp_convert): Use it.
10268
10269         * cp-tree.h: Lose c-common.c decls.
10270
10271         * typeck.c (build_unary_op): Restore old &a.f diagnostic code.
10272         * cvt.c (convert_to_void): Use type_unknown_p.
10273
10274         * typeck.c (strip_all_pointer_quals): Also strip quals from
10275         pointer-to-member types.
10276
10277         * Make-lang.in (cp/TAGS): Use --no-globals.  Ignore parse.c, and treat
10278         parse.y as C.
10279
10280         * call.c (build_new_method_call): Do evaluate the object parameter
10281         when accessing a static member.
10282         * typeck.c (build_component_ref): Likewise.
10283
10284 2001-01-02  Andreas Jaeger  <aj@suse.de>
10285
10286         * decl.c (cp_missing_noreturn_ok_p): New.
10287         (init_decl_processing): Set lang_missing_noreturn_ok_p.
10288
10289 2000-12-29  Jakub Jelinek  <jakub@redhat.com>
10290
10291         * decl.c (init_decl_processing): Fix sign of wchar_type_node.
10292
10293 2000-12-29  Mark Mitchell  <mark@codesourcery.com>
10294
10295         * class.c (pushclass): Remove #if 0'd code.
10296         * cp-tree.h (overload_template_name): Remove.
10297         * decl.c (store_bindings): Simplify.
10298         (pop_from_top_level): Likewise.
10299         * pt.c (overload_template_name): Remove.
10300         (instantiate_decl): Don't call push_to_top_level if it's not
10301         needed.
10302
10303 2000-12-28  Mark Mitchell  <mark@codesourcery.com>
10304
10305         * pt.c (register_local_specialization): Don't return a value.
10306         (lookup_template_class): Use move-to-front heuristic when looking
10307         up template instantiations.
10308         (instantiate_decl): Only push_to_top_level when we're actually
10309         going to instantiate the template.
10310
10311 2000-12-29  Hans-Peter Nilsson  <hp@bitrange.com>
10312
10313         * search.c (binfo_for_vtable): Return least derived class, not
10314         most.  Handle secondary vtables.
10315
10316 2000-12-22  Jason Merrill  <jason@redhat.com>
10317
10318         * pt.c (more_specialized): Don't optimize len==0.
10319         (fn_type_unification): If we're adding the return type, increase len.
10320
10321         * typeck.c (build_binary_op): Fix pmf comparison logic.
10322
10323         * call.c (joust): Use DECL_NONSTATIC_MEMBER_FUNCTION_P, not
10324         DECL_STATIC_FUNCTION_P.
10325
10326         * semantics.c (genrtl_finish_function): Don't try to jump to
10327         return_label unless it exists.
10328
10329         In partial ordering for a call, ignore parms for which we don't have
10330         a real argument.
10331         * call.c (joust): Pass len to more_specialized.
10332         (add_template_candidate_real): Strip 'this', pass len.
10333         * pt.c (more_specialized): Pass len down.  Lose explicit_args parm.
10334         (get_bindings_order): New fn.  Pass len down.
10335         (get_bindings_real): Strip 'this', pass len.
10336         (fn_type_unification): Likewise.
10337         (type_unification_real): Succeed after checking 'len' args.
10338         (most_specialized_instantiation): Lose explicit_args parm.
10339         * class.c (resolve_address_of_overloaded_function): Strip 'this',
10340         pass len.
10341
10342 2000-12-21  Jason Merrill  <jason@redhat.com>
10343
10344         * pt.c (tsubst_decl): A FUNCTION_DECL has DECL_RESULT, not
10345         DECL_TEMPLATE_RESULT.
10346
10347         * search.c (lookup_field_r): Call lookup_fnfields_1, not
10348         lookup_fnfields_here.
10349
10350         * parse.y (typename_sub2): Return the TYPE_DECL, not the type.
10351
10352         * call.c (build_object_call): Also allow conversions that return
10353         reference to pointer to function.
10354         (add_conv_candidate): Handle totype being ref to ptr to fn.
10355         (build_field_call): Also allow members of type reference to function.
10356         Lose support for calling pointer to METHOD_TYPE fields.
10357
10358         * error.c (dump_expr): Handle *_CAST_EXPR.
10359
10360         * typeck2.c (build_scoped_ref): Always convert to the naming class.
10361
10362         * tree.c (break_out_cleanups): Lose.
10363         * cp-tree.h: Remove prototype.
10364         * typeck.c (build_component_ref): Don't break_out_cleanups.
10365         (build_compound_expr): Likewise.
10366         * semantics.c (finish_expr_stmt): Likewise.
10367
10368 2000-12-20  Richard Henderson  <rth@redhat.com>
10369
10370         * cp-tree.h: Update declarations.
10371         * decl.c (finish_case_label): Return the new stmt node.
10372         * semantics.c (finish_goto_stmt): Likewise.
10373         (finish_expr_stmt, finish_return_stmt): Likewise.
10374         (finish_break_stmt, finish_continue_stmt): Likewise.
10375         (finish_asm_stmt): Likewise.
10376         * parse.y (already_scoped_stmt): Set STMT_LINENO.
10377         (compstmt, implicitly_scoped_stmt, stmt): Likewise.
10378         (simple_if, simple_stmt): Return the new stmt node.
10379         (save_lineno): New.
10380
10381 2000-12-18  Joseph S. Myers  <jsm28@cam.ac.uk>
10382
10383         * cp-tree.h: Don't declare warn_long_long.
10384
10385 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
10386
10387         * tree.c (no_linkage_helper): Use CLASS_TYPE_P instead of
10388         IS_AGGR_TYPE.
10389
10390 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
10391
10392         * pt.c (unify): Handle when both ARG and PARM are
10393         BOUND_TEMPLATE_TEMPLATE_PARM.
10394
10395 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
10396
10397         * pt.c (reduce_template_parm_level): Set DECL_ARTIFICIAL and
10398         DECL_TEMPLATE_PARM_P.
10399
10400 2000-12-15  Jason Merrill  <jason@redhat.com>
10401
10402         * init.c (build_new_1): Reorganize.  Now with 100% fewer SAVE_EXPRs!
10403
10404         * init.c (build_new_1): Don't strip quals from type.
10405
10406         * decl.c (pushdecl): Don't check for linkage on a non-decl.
10407
10408         * call.c (build_op_delete_call): See through ARRAY_TYPEs.
10409
10410         * call.c (build_new_function_call): Lose space before paren in
10411         error message.
10412         (build_new_method_call): Likewise.
10413
10414         * typeck2.c (build_m_component_ref): Propagate quals from datum.
10415
10416 2000-12-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
10417
10418         * pt.c (check_explicit_specialization): Propagate default
10419         function arguments to explicit specializations.
10420
10421 2000-12-13  DJ Delorie  <dj@redhat.com>
10422
10423         * typeck.c (build_binary_op): Do signed/unsigned warnings for >?
10424         and <? operators.
10425
10426 2000-12-08  Jason Merrill  <jason@redhat.com>
10427
10428         * error.c (dump_function_name): Don't let the user see __comp_ctor.
10429
10430         Clean up copy-initialization in overloading code.
10431         * call.c (build_user_type_conversion_1): Die if we are asked to
10432         convert to the same or a base type.
10433         (implicit_conversion): Avoid doing so.  Lose reference binding code.
10434         (convert_like_real): Treat BASE_CONV and RVALUE_CONV as implicit
10435         direct-initialization.  Also do direct-init part of copy-init.
10436         (build_user_type_conversion): Don't provide context to convert_like.
10437         * cvt.c (ocp_convert): build_user_type_conversion will now provide
10438         the constructor call for copy-init.
10439
10440         * pt.c (tsubst_decl): Call clone_function_decl here if this is an
10441         instantiation of a member template.
10442         (do_decl_instantiation): Not here.
10443
10444 2000-12-07  Nathan Sidwell  <nathan@codesourcery.com>
10445
10446         * class.c (check_field_decls): Don't special case anonymous
10447         fields in error messages.
10448         (note_name_declared_in_class): Use %D on diagnostic.
10449
10450         * tree.c (pod_type_p): Use strip_array_types.
10451         (cp_valid_lang_attribute): Likewise.
10452         * typeck.c (cp_type_quals): Strip arrays separately, to avoid
10453         multiple evaluations.
10454         (cp_has_mutable_p): Use strip_array_types.
10455
10456 2000-12-07  Nathan Sidwell  <nathan@codesourcery.com>
10457
10458         * cp-tree.h (sufficient_parms_p): Declare new function.
10459         * call.c (sufficient_parms_p): New function, broken out of ...
10460         (add_function_candidate): ... here. Use it.
10461         (add_conv_candidate): Use it.
10462         * decl.c (grok_ctor_properties): Use it.
10463
10464 2000-12-07  Jakub Jelinek  <jakub@redhat.com>
10465
10466         * optimize.c (copy_body_r): Set STMT_IS_FULL_EXPR_P on EXPR_STMT.
10467
10468 2000-12-07  Joseph S. Myers  <jsm28@cam.ac.uk>
10469
10470         * decl2.c (lang_decode_option): Handle -Wformat-security.
10471
10472 2000-12-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
10473
10474         * pt.c (verify_class_unification): New function.
10475         (get_class_bindings): Use it.
10476         (try_class_unification): Tidy.
10477         (unify): Handle when argument of a template-id is not
10478         template parameter dependent.
10479         (template_args_equal): Handle when TREE_CODE's do not match.
10480
10481 2000-12-06  Alexandre Oliva  <aoliva@redhat.com>
10482
10483         * lang-specs.h (c++): When invoking the stand-alone preprocessor
10484         for -save-temps, pass all relevant -Defines to it, and then don't
10485         pass them to cc1plus.
10486
10487 2000-12-05  Will Cohen  <wcohen@redhat.com>
10488
10489         * decl.c (finish_case_label): Cleared
10490         more_cleanups_ok in surrounding function scopes.
10491         (define_label): Likewise.
10492
10493 2000-12-05  Nathan Sidwell  <nathan@codesourcery.com>
10494
10495         * cp-tree.h (IDENTIFIER_VIRTUAL_P): Document.
10496         (get_matching_virtual): Remove.
10497         (look_for_overrides): Declare new function.
10498         * decl.c (grokfndecl): Don't set IDENTIFIER_VIRTUAL_P or
10499         DECL_VINDEX here.
10500         * class.c (check_for_override): Move base class iteration code
10501         to look_for_overrides.
10502         * search.c (next_baselink): Remove.
10503         (get_virtuals_named_this): Remove.
10504         (get_virtual_destructor): Remove.
10505         (tree_has_any_destructors_p): Remove.
10506         (struct gvnt_info): Remove.
10507         (check_final_overrider): Remove `virtual' from error messages.
10508         (get_matching_virtuals): Remove. Move functionality to ...
10509         (look_for_overrides): ... here, and ...
10510         (look_for_overrides_r): ... here. Set DECL_VIRTUAL_P, if found
10511         to be overriding.
10512
10513 2000-12-05  Nathan Sidwell  <nathan@codesourcery.com>
10514
10515         * typeck.c (get_delta_difference): If via a virtual base,
10516         return zero.
10517         * cvt.c (cp_convert_to_pointer): If via a virtual base, do no
10518         adjustment.
10519
10520 2000-12-04  Richard Henderson  <rth@redhat.com>
10521
10522         * error.c (dump_tree): Use output_add_string not OB_PUTS.
10523
10524 2000-12-04  Jason Merrill  <jason@redhat.com>
10525
10526         * mangle.c (write_type): Mangle VECTOR_TYPE with "U8__vector".
10527         (write_builtin_type): Pass intSI_type_node and the like through
10528         type_for_mode.
10529         * method.c (process_overload_item): Mangle VECTOR_TYPEs with 'o'.
10530         Pass intSI_type_node and the like through type_for_mode.
10531         * decl2.c (arg_assoc_type): Handle VECTOR_TYPE like COMPLEX_TYPE.
10532         * pt.c (tsubst, unify): Likewise.
10533         * tree.c (walk_tree): Likewise.
10534         * error.c (dump_type): Likewise.
10535         (dump_type_prefix, dump_type_suffix): Don't bother with VECTOR_TYPE.
10536
10537         * Make-lang.in: Tweak top comment for emacs.
10538         (cp/TAGS): Restore.
10539
10540         * except.c (expand_throw): Use push_throw_library_fn for _Jv_Throw.
10541
10542         * class.c (clone_function_decl): Robustify.
10543
10544 2000-12-04  Michael Matz  <matzmich@cs.tu-berlin.de>
10545
10546         * decl.c (store_bindings): Only search in the non modified
10547         old_bindings for duplicates.
10548
10549 2000-12-04  Nathan Sidwell  <nathan@codesourcery.com>
10550
10551         * error.c (dump_function_decl): Use DECL_VIRTUAL_P, not
10552         TYPE_POLYMORPHIC_P.
10553
10554         * typeck.c (build_static_cast): Remove unused variable.
10555
10556 2000-12-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
10557
10558         * pt.c: Fix typo in comment.
10559
10560 2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>
10561
10562         * decl2.c (warn_format): Remove definition.
10563         (lang_decode_option): Handle -Wformat-nonliteral,
10564         -Wno-format-extra-args and -Wno-format-y2k.  Use set_Wformat.
10565
10566 2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>
10567
10568         * decl.c (WINT_TYPE, INTMAX_TYPE, UINTMAX_TYPE): Don't define.
10569         (init_decl_processing): Don't create string_type_node,
10570         const_string_type_node, wint_type_node, intmax_type_node,
10571         uintmax_type_node, default_function_type, ptrdiff_type_node and
10572         unsigned_ptrdiff_type_node.  Adjust position of call to
10573         c_common_nodes_and_builtins.
10574         (identifier_global_value): New function.
10575
10576 2000-12-01  Nathan Sidwell  <nathan@codesourcery.com>
10577
10578         * call.c (standard_conversion): Reject pointer to member
10579         conversions from ambiguous, inaccessible or virtual bases.
10580         * typeck.c (build_static_cast): Don't check pointers to members
10581         specially.
10582
10583 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
10584
10585         * method.c (do_build_copy_constructor): Preserve cv
10586         qualifications when accessing source object members.
10587         (do_build_assign_ref): Likewise. Remove separate diagnostics for
10588         unnamed fields.
10589
10590 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
10591
10592         * method.c (do_build_assign_ref): Construct appropriately
10593         CV-qualified base reference. Don't allow const casts in base
10594         conversion.
10595
10596 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
10597
10598         * call.c (build_over_call): Use VOID_TYPE_P. Don't die on
10599         incomplete return type.
10600
10601 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
10602
10603         * parse.y (base_class.1): Produce a _TYPE not a _DECL.
10604         * semantics.c (finish_base_specifier): Accept a _TYPE not a
10605         _DECL.
10606
10607 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
10608
10609         * spew.c (yyerror): Cope if yylval.ttype is NULL.
10610
10611 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
10612
10613         * decl.c (grokdeclarator): Diagnose undefined template contexts.
10614
10615 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
10616
10617         * decl.c (grokdeclarator): Do type access control on friend
10618         class.
10619
10620 2000-11-27  Nathan Sidwell  <nathan@codesourcery.com>
10621
10622         * decl.c (grokfndecl): Undo COMPONENT_REF damage caused by
10623         bison parser ickiness.
10624         * pt.c (tsubst_friend_function): Enter namespace scope when
10625         tsubsting the function name.
10626         * cp-tree.h (DECL_TI_TEMPLATE): Update comment to reflect reality.
10627
10628 2000-11-27  Nathan Sidwell  <nathan@codesourcery.com>
10629
10630         * cp-tree.h (binfo_from_vbase): Return the virtual base's binfo.
10631         * cvt.c (cp_convert_to_pointer): Add force parameter.
10632         Allow conversions via virtual base if forced.
10633         (convert_to_pointer_force): Adjust call to cp_convert_to_pointer.
10634         (ocp_convert): Likewise.
10635         * search.c (binfo_from_vbase): Return the virtual base's binfo.
10636         * typeck.c (get_delta_difference): Adjust handling of virtual
10637         bases.
10638
10639 2000-11-26  Mark Mitchell  <mark@codesourcery.com>
10640
10641         * tree.c (struct list_hash): Remove.
10642         (list_hash_table): Make it be an htab.
10643         (struct list_proxy): New type.
10644         (list_hash_eq): New function.
10645         (list_hash_pieces): Renamed from ...
10646         (list_hash): ... this.
10647         (list_hash_lookup): Remove.
10648         (list_hash_add): Remove.
10649         (hash_tree_cons): Use the generic hashtable.
10650         (mark_list_hash): Remove.
10651         (init_tree): Create the hashtable.
10652
10653 2000-11-25  Joseph S. Myers  <jsm28@cam.ac.uk>
10654
10655         * method.c (build_mangled_C9x_name): Rename to
10656         build_mangled_C99_name.  Change C9X references in comments to
10657         refer to C99.
10658
10659 2000-11-24  Nathan Sidwell  <nathan@codesourcery.com>
10660
10661         * parse.y (unary_expr): Move VA_ARG from here ...
10662         (primary): ... to here.
10663
10664 2000-11-24  Nathan Sidwell  <nathan@codesourcery.com>
10665
10666         * semantics.c (finish_id_expr): If type is error_mark, return
10667         error_mark.
10668
10669 2000-11-23  Nathan Sidwell  <nathan@codesourcery.com>
10670
10671         * pt.c (lookup_template_class): Simplify loop exit constructs.
10672         Cope when there is no partial instantiation of a template
10673         template member.
10674
10675 Thu Nov 23 02:16:47 2000  J"orn Rennecke <amylaar@redhat.com>
10676
10677         * Make-lang.in (g++spec.o, cxxmain.o): Depend on $(CONFIG_H).
10678
10679 2000-11-22  Mark Mitchell  <mark@codesourcery.com>
10680
10681         * mangle.c (mangle_conv_op_name_for_type): Don't use `__op'
10682         prefix.
10683
10684         * pt.c (do_decl_instantiate): Explicitly clone constructors and
10685         destructors that haven't already been cloned.
10686
10687 2000-11-20  Richard Henderson  <rth@redhat.com>
10688
10689         * parse.y (yyparse_1): Rename the parser entry point.
10690
10691 2000-11-20  Alex Samuel  <samuel@codesourcery.com>
10692
10693         * mangle.c (write_name): Use <unscoped-name> for names directly in
10694         function scope.
10695         (write_unscoped_name): Accept names directly in function scope.
10696
10697 2000-11-20  Nathan Sidwell  <nathan@codesourcery.com>
10698
10699         * lex.c (rid_to_yy, RID_EXPORT): Make unique keyword.
10700         * parse.y (extdef): Add EXPORT reduction.
10701         * spew.c (yylex): Don't skip export here.
10702
10703 2000-11-19  Mark Mitchell  <mark@codesourcery.com>
10704
10705         * decl.c (init_decl_processing): Correct name of pure virtual
10706         function under the new ABI.
10707         * rtti.c (throw_bad_cast): Likewise, for bad cast function.
10708         (throw_bad_typeid): Likewise for bad typeid function.
10709
10710 2000-11-18  Mark Mitchell  <mark@codesourcery.com>
10711
10712         * decl.c (grokparms): Don't even function types of `void' type,
10713         either.
10714         * mangle.c (write_type): Don't crash when confronted with the
10715         error_mark_node.
10716
10717         * decl.c (grokparms): Don't create parameters of `void' type.
10718
10719 2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
10720
10721         * lex.c (mark_impl_file_chain): Delete.
10722         (init_parse): Remove call to ggc_add_string_root.  No need to
10723         ggc_strdup a string constant.  Do not add impl_file_chain to GC
10724         roots.
10725         (handle_pragma_implementation): No need to ggc_strdup main_filename.
10726
10727 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
10728
10729         * pt.c (tsubst_expr, DECL_STMT): Instantiate decl's type.
10730
10731 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
10732
10733         * cp-tree.h (PARMLIST_ELLIPSIS_P): New macro.
10734         * decl.c (grokdeclarator): Don't reject void parms here.
10735         (require_complete_types_for_parms): Simplify, use
10736         complete_type_or_else.
10737         (grokparms): Remove bitrot. Remove funcdef parm.
10738         Deal with ellipsis parm lists here.
10739         * semantics.c (finish_parmlist): Don't append void_list_node
10740         here. Set PARMLIST_ELLIPSIS_P.
10741
10742 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
10743
10744         * typeck2.c (incomplete_type_error): Reorganize to avoid
10745         excessive diagnostics.
10746
10747 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
10748
10749         * lex.c (struct impl_files, internal_filename): Constify a char *.
10750
10751 2000-11-16  Mark Mitchell  <mark@codesourcery.com>
10752
10753         * mangle.c (write_special_name_constructor): Don't generate
10754         assembler junk when confronted with an old-style constructor.
10755         (write_special_name_destructor): Likewise.
10756         (mangle_decl_string): Do it here instead.
10757
10758 2000-11-16  Nathan Sidwell  <nathan@codesourcery.com>
10759
10760         * call.c (op_error): Make error messages clearer.
10761
10762 2000-11-15  Mark Mitchell  <mark@codesourcery.com>
10763
10764         * decl.c (wrapup_globals_for_namespace): Don't mark things
10765         TREE_ASM_WRITTEN when they're not.
10766
10767 2000-11-15  Jason Merrill  <jason@redhat.com>
10768
10769         * typeck2.c (friendly_abort): Uncount the error before handing
10770         off to fancy_abort.
10771
10772 2000-11-15  Nathan Sidwell  <nathan@codesourcery.com>
10773
10774         * typeck.c (lookup_anon_field): Cope with qv qualifiers.
10775
10776 2000-11-14  Mark Mitchell  <mark@codesourcery.com>
10777
10778         * class.c (build_vtbl_initializer): Fix typo in comment.
10779         * typeck.c (expr_sizeof): Don't crash on errors.
10780
10781 2000-11-14  Jim Wilson  <wilson@redhat.com>
10782
10783         * lang-specs.h: Add %2 after %(cc1_options).
10784
10785 2000-11-14  Richard Henderson  <rth@redhat.com>
10786
10787         * typeck.c (c_sizeof): Be strict about casting result value
10788         back to c_size_type_node.
10789         (expr_sizeof, c_sizeof_nowarn, c_alignof): Likewise.
10790
10791 2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>
10792
10793         * typeck.c (build_unary_op): Use boolean_increment from
10794         c-common.c, moving the relevant code there.
10795
10796 2000-11-11  Jason Merrill  <jason@redhat.com>
10797
10798         * typeck.c (mark_addressable): Don't call put_var_into_stack.
10799
10800         * decl.c (maybe_commonize_var): Set DECL_UNINLINABLE for statics
10801         in inlines.
10802
10803 2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10804
10805         * decl.c (grokdeclarator, save_function_data): Use memcpy, not bcopy.
10806         * lex.c (copy_lang_decl): Likewise.
10807
10808 2000-11-09  Mark Mitchell  <mark@codesourcery.com>
10809
10810         * dump.c (cp_dump_tree): Don't dump function bodies here.
10811
10812         * Make-lang.in (CXX_C_OBJS): Add c-dump.o.
10813         (dump.o): Update dependency list.
10814         * cp-tree.h (DECL_MAYBE_TEMPLATE): Remove.
10815         (flag_dump_translation_unit): Likewise.
10816         (CP_TYPE_QUALS): Adjust definition.
10817         (DECL_C_BIT_FIELD): Remove.
10818         (SET_DECL_C_BIT_FIELD): Likewise.
10819         (CLEAR_DECL_C_BIT_FIELD): Likewise.
10820         (add_maybe_template): Likewise.
10821         (strip_array_types): Likewise.
10822         (dump_node_to_file): Likewise.
10823         (cp_dump_tree): New function.
10824         * decl.c (init_decl_processing): Set lang_dump_tree.
10825         * decl2.c (flag_dump_translation_unit): Remove.
10826         * dump.c: Move most of it to ../c-dump.c.
10827         (cp_dump_tree): New function.
10828         * pt.c (add_maybe_template): Remove.
10829         * typeck.c (strip_array_types): Likewise.
10830
10831 2000-11-07  Eric Christopher  <echristo@redhat.com>
10832
10833         * decl.c (init_decl_processing): Change definition of
10834         __wchar_t to wchar_t.  Remove artificial declaration of
10835         wchar_t.
10836         * lex.c: Change instances of __wchar_t to wchar_t.
10837
10838 2000-11-09  Nathan Sidwell  <nathan@codesourcery.com>
10839
10840         * lex.c (do_identifier): Don't lookup_name for operators.
10841         * parse.y (operator): Save looking_for_typename.
10842         (unoperator): Restore it.
10843         * spew.c (frob_opname): Use nth_token for lookahead.
10844
10845 2000-11-08  Nathan Sidwell  <nathan@codesourcery.com>
10846
10847         * decl.c (grok_op_properties): Always use coerce_new_type and
10848         coerce_delete_type.
10849         * decl2.c (coerce_new_type): Use c_size_type_node. Preserve
10850         exception specification. Tidy up.
10851         (coerce_delete_type): Preserve exception specification. Tidy up.
10852
10853 2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>
10854
10855         * class.c (duplicate_tag_error, build_vtbl_initializer), decl.c
10856         (push_binding_level), error.c (cp_tree_printer), pt.c
10857         (process_partial_specialization, tsubst_template_arg_vector),
10858         search.c (lookup_member): Use memset () instead of bzero ().
10859
10860 2000-11-07  Nathan Sidwell  <nathan@codesourcery.com>
10861
10862         * decl.c (build_ptrmemfunc_type): Allow error_mark_node.
10863
10864 2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>
10865
10866         * Make-lang.in (c++.distdir): Remove.
10867
10868 2000-11-04  Mark Mitchell  <mark@codesourcery.com>
10869
10870         * decl2.c (do_nonmember_using_decl): Allow `extern "C"'
10871         declarations from different namespaces to be combined.
10872
10873 2000-11-03  Zack Weinberg  <zack@wolery.stanford.edu>
10874
10875         * decl.c: Include tm_p.h.
10876
10877 2000-11-03  Joseph S. Myers  <jsm28@cam.ac.uk>
10878
10879         * tree.c (cp_tree_equal): Use memcmp () instead of bcmp ().
10880
10881 2000-11-02  Joseph S. Myers  <jsm28@cam.ac.uk>
10882
10883         * dump.c (dequeue_and_dump), lex.c (interface_strcmp), method.c
10884         (build_overload_value), repo.c (open_repo_file), xref.c
10885         (open_xref_file): Use strchr () and strrchr () instead of index ()
10886         and rindex ().
10887
10888 2000-11-01  Bernd Schmidt  <bernds@redhat.co.uk>
10889
10890         * call.c (build_over_call): Call fold on the CALL_EXPR.
10891
10892 2000-11-01  Gabriel Dos Reis  <gdr@codesourcery.com>
10893
10894         * error.c (dump_template_decl): Separate template hearders with
10895         space not comma.
10896
10897 2000-10-31  Gabriel Dos Reis  <gdr@codesourcery.com>
10898
10899         * error.c: Move TFF_ macros into cp-tree.h.  Throughout, replace
10900         TS_* flags with corresponding TFF_*.  Adjust prototypes of
10901         functions (which used to take a tree_string_flags) to take an int.
10902
10903         * cp-tree.h (enum tree_string_flags): Remove
10904         (TFF_PLAIN_IDENTIFIER, TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE,
10905         TFF_CHASE_NAMESPACE_ALIAS, TFF_CHASE_TYPEDEF, TFF_DECL_SPECIFIERS,
10906         TFF_CLASS_KEY_OR_ENUM, TFF_RETURN_TYPE,
10907         TFF_FUNCTION_DEFAULT_ARGUMENTS, TFF_EXCEPTION_SPECIFICATION,
10908         TFF_TEMPLATE_HEADER, TFF_TEMPLATE_DEFAULT_ARGUMENTS,
10909         TFF_TEMPLATE_NAME, TFF_EXPR_IN_PARENS, TFF_SCOPE): New macros.
10910         (type_as_string, decl_as_string, expr_as_string,
10911         context_as_string): Adjust prototype.
10912
10913         * class.c (dump_class_hierarchy_r): Use TFF_PLAIN_IDENTIFIER
10914         instead of TS_PLAIN.
10915
10916         * pt.c (mangle_class_name_for_template): Use TFF_CHASE_TYPEDEF
10917         instead of TF_CHASE_TYPEDEFS. Use TFF_PLAIN_IDENTIFIER instead of
10918         plain `0'.
10919
10920 2000-10-30  Mark Mitchell  <mark@codesourcery.com>
10921
10922         * cp-tree.h (DECL_EXTERNAL_LINKAGE_P): New macro.
10923         (linkage_kind): New enumeration.
10924         (decl_linkage): New function.
10925         * decl2.c (comdat_linkage): Extend comment.
10926         * error.c (dump_function_decl): Print the arguments used to
10927         instantiate a template, even when not printing the type of the
10928         function.
10929         * pt.c (convert_nontype_argument): Use DECL_EXTERNAL_LINKAGE_P,
10930         not TREE_PUBLIC, to test for external linkage.
10931         * tree.c (decl_linkage): New function.
10932
10933 2000-10-28  Mark Mitchell  <mark@codesourcery.com>
10934
10935         * pt.c (instantiate_decl): Always instantiate static data members
10936         initialized in-class.
10937
10938 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
10939
10940         * Make-lang.in: Move all build rules here from Makefile.in,
10941         adapt to new context.  Wrap all rules that change the current
10942         directory in parentheses.  Expunge all references to $(P).
10943         When one command depends on another and they're run all at
10944         once, use && to separate them, not ;.  Add OUTPUT_OPTION to
10945         all object-file generation rules.  Delete obsolete variables.
10946
10947         * Makefile.in: Delete.
10948         * config-lang.in: Delete outputs= line.
10949
10950 2000-10-26  Gabriel Dos Reis  <gdr@codesourcery.com>
10951
10952         * error.c (dump_function_decl): Print no space between
10953         `ptr-operator' the `type-specifier' of the return type.
10954         (dump_type_prefix): Make sure we put space at the appropriate
10955         place.
10956
10957 2000-10-23  Jason Merrill  <jason@redhat.com>
10958
10959         * call.c (equal_functions): Also call decls_match for extern "C" fns.
10960
10961 2000-10-22  Jason Merrill  <jason@redhat.com>
10962
10963         * call.c (build_conditional_expr): Use ocp_convert to force
10964         rvalue conversion.
10965
10966 2000-10-22  Mark Mitchell  <mark@codesourcery.com>
10967
10968         * call.c (standard_conversion): Use RVALUE_CONVs for all
10969         expressions that satisfy lvalue_p, not just those that satisfy
10970         real_lvalue_p.
10971
10972         * optimize.c (copy_body_r): Don't treat CALL_EXPRs specially.
10973
10974         * typeck.c (c_sizeof): Return an expression of `size_t' type,
10975         not one with TYPE_IS_SIZETYPE set.
10976         (dubious_conversion_warnings): Remove special-case code.
10977
10978 2000-10-21  Geoffrey Keating  <geoffk@cygnus.com>
10979
10980         * decl2.c (arg_assoc_type): Handle VECTOR_TYPE.
10981         * error.c (dump_type): Handle VECTOR_TYPE like POINTER_TYPE.
10982         (dump_type_prefix): Print vector-of-int as 'int vector'.
10983         (dump_type_suffix): Handle VECTOR_TYPE like POINTER_TYPE.
10984         * tree.c (walk_tree): Handle VECTOR_TYPE.
10985
10986         * decl.c (init_decl_processing): Call MD_INIT_BUILTINS.
10987
10988 2000-10-21  Jason Merrill  <jason@redhat.com>
10989
10990         * parse.y (operator): Set got_object from got_scope.
10991         Set looking_for_typename.
10992         * decl.c (lookup_name_real): Clear val after setting from_obj.
10993         Reorganize diagnostic.
10994
10995 2000-10-20  Jason Merrill  <jason@redhat.com>
10996
10997         * tree.c (walk_tree): Don't walk into default args.
10998
10999         * error.c (dump_expr): Use host_integerp.
11000
11001 2000-10-20  David Edelsohn  <edelsohn@gnu.org>
11002
11003         * typeck2.c (abstract_virtuals_error): Use "because" instead of
11004         "since" in error message.
11005
11006 Fri Oct 20 13:54:59 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11007
11008         * typeck.c (dubious_conversion_warning): Suppress if TYPE_IS_SIZETYPE.
11009
11010 2000-10-20  Jeffrey Oldham  <oldham@codesourcery.com>
11011
11012         * decl.c (revert_static_member_fn): Fixed typo.
11013
11014 2000-10-19  Mark Mitchell  <mark@codesourcery.com>
11015
11016         * class.c (subobject_offset_fn): New type.
11017         (dfs_record_base_offsets): Remove.
11018         (record_base_offsets): Likewise.
11019         (dfs_search_base_offsets): Likewise.
11020         (record_subobject_offset): New function.
11021         (check_subobject_offset): Likewise.
11022         (walk_subobject_offsets): Likewise.
11023         (record_subobject_offsets): Likewise.
11024         (layout_conflict_p): Reimplement.
11025         (layout_nonempty_base_or_field): Correct handling of type
11026         conflicts during layout.
11027         (layout_empty_base): Likewise.
11028         (build_base_field): Adjust to handle new representation of empty
11029         base offset table.
11030         (build_base_fields): Likewise.
11031         (layout_virtual_bases): Likewise.
11032         (splay_tree_compare_integer_csts): New function.
11033         (layout_class_type): Use a splay_tree, rather than a varray, to
11034         represent the offsets of empty bases.
11035
11036         * cp-tree.h (DECL_ANTICIPATED): Don't require a FUNCTION_DECL.
11037         * decl.c (select_decl): Don't return declarations that are
11038         DECL_ANTICIPATED.
11039
11040 2000-10-18  Mark Mitchell  <mark@codesourcery.com>
11041
11042         * cp-tree.h (cp_tree_index): Add CPTI_FAKE_STD.
11043         (fake_std_node): New macro.
11044         * decl.c (in_std): Rename to ...
11045         (in_fake_std): ... this.
11046         (flag_no_builtin): Remove.
11047         (flag_no_nonansi_builtin): Likewise.
11048         (walk_namespaces_r): Use fake_std_node.
11049         (push_namespace): Use std_identifier.
11050         (pop_namespace): Use in_fake_std.
11051         (lookup_name_real): Use fake_std_node.
11052         (init_decl_processing): When -fhonor-std, create the `std'
11053         namespace.  Don't create a dummy fake_std_node in that case.
11054         Adjust call to c_common_nodes_and_builtins.  Use std_identifier.
11055         (builtin_function): Put builtins whose names don't begin
11056         with `_' in the std namespace.
11057         * decl2.c (flag_no_builtin): Remove.
11058         (flag_no_nonansi_builtin): Likewise.
11059         (set_decl_namespace): Use fake_std_node.
11060         (validate_nonmember_using_decl): Likewise.
11061         (do_using_directive): Likewise.
11062         (handle_class_head): Likewise.
11063         * dump.c (dequeue_and_dump): Likewise.
11064         * except.c (init_exception_processing): Use std_identifier.
11065         * init.c (build_member_call): Use fake_std_node.
11066         * rtti.c (init_rtti_processing): Use std_identifier.
11067
11068 2000-10-17  Mark Mitchell  <mark@codesourcery.com>
11069
11070         * cp-tree.h (back_end_hook): Remove declaration.
11071         * decl2.c (back_end_hook): Remove definition.
11072
11073         * dump.c (dequeue_and_dump): Dump TREE_USED.
11074
11075 Tue Oct 17 20:19:06 2000  Brad Lucier <lucier@math.purdue.edu>
11076
11077         * spew.c (snarf_defarg): Cast 2nd arg to obstack_blank to (int).
11078
11079 2000-10-17  Joseph S. Myers  <jsm28@cam.ac.uk>
11080
11081         * decl.c (WINT_TYPE): Define.
11082         (init_decl_processing): Create types unsigned_ptrdiff_type_node,
11083         c_size_type_node, signed_size_type_node and wint_type_node.
11084
11085 2000-10-17  Joseph S. Myers  <jsm28@cam.ac.uk>
11086
11087         * decl2.c (warn_missing_format_attribute): New variable.
11088         (lang_decode_option): Decode -Wmissing-format-attribute.
11089
11090 2000-10-16  Mark Mitchell  <mark@codesourcery.com>
11091
11092         * typeck.c (qualify_type): Remove.
11093         (composite_pointer_type): Fix handling of conversions to `cv void*'.
11094
11095 2000-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11096
11097         * Makefile.in (parse.c, parse.h): Fix think-o in last patch.
11098
11099 2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11100
11101         * Makefile.in (parse.c, parse.h): Create atomically.
11102
11103 2000-10-12  Mark Mitchell  <mark@codesourcery.com>
11104
11105         * class.c (current_obstack): Remove.
11106         * decl.c (ggc_p): Remove.
11107         (start_decl): Don't use decl_tree_cons.
11108         (grokdeclarator): Don't use build_decl_list.
11109         (start_function): Don't use decl_tree_cons.
11110         (finish_function): Don't mess with obstacks.
11111         * decl2.c (grok_x_components): Don't use build_decl_list.
11112         * lex.c (make_call_declarator): Don't call decl_tree_cons.
11113         (implicitly_declare_fn): Don't call build_decl_list.
11114         * parse.y (frob_specs): Don't call build_decl_list or
11115         decl_tree_cons.
11116         (expr_or_declarator_intern): Don't call decl_tree_cons.
11117         (primary): Don't call build_decl_list.
11118         (fcast_or_absdcl): Likewise.
11119         (typed_declspecs): Don't call decl_tree_cons.
11120         (reserved_declspecs): Don't call build_decl_list.
11121         (declmods): Likewise.
11122         (reserved_typespecquals): Likewise.
11123         (aggr): Likewise.
11124         (new_type_id): Likewise.
11125         (cv_qualifiers): Likewise.
11126         (after_type_declarator_intern): Likewise.
11127         (notype_declarator_intern): Likewise.
11128         (absdcl_intern): Likewise.
11129         (named_parm): Likewise.
11130         * pt.c (most_specialized_class): Likewise.
11131         * repo.c (temporary_obstack): Make it a structure, not a pointer.
11132         (init_repo): Initialize it.
11133         * search.c (current_obstack): Remove.
11134         * typeck2.c (add_exception_specifier): Don't call build_decl_list.
11135
11136 2000-10-09  Richard Henderson  <rth@cygnus.com>
11137
11138         * Make-lang.in (CXX_EXTRA_HEADERS): Remove.
11139         (c++ language support bits for libgcc): Remove.
11140         (c++.clean): Remove cplib2.txt cleanup.
11141         * config-lang.in (headers, lib2funcs): Remove.
11142
11143         * exception.cc, new.cc, new1.cc, new2.cc: Remove files.
11144         * tinfo.cc, tinfo.h, tinfo2.cc, vec.cc: Remove files.
11145         * inc/cxxabi.h, inc/exception, inc/new: Remove files.
11146         * inc/new.h, inc/typeinfo: Remove files.
11147
11148 2000-10-08  Joseph S. Myers  <jsm28@cam.ac.uk>
11149
11150         * decl.c (INTMAX_TYPE, UINTMAX_TYPE): Define if not already
11151         defined.
11152         (init_decl_processing): Initialize intmax_type_node and
11153         uintmax_type_node.
11154
11155 2000-10-06  Richard Henderson  <rth@cygnus.com>
11156
11157         * cp-tree.h (struct cp_language_function): Remove x_result_rtx.
11158         (original_result_rtx): Remove.
11159         * decl.c (save_function_data): Don't clear x_result_rtx.
11160         (mark_lang_function): Don't mark it either.
11161         * expr.c (fixup_result_decl): Remove.
11162         * semantics.c (genrtl_named_return_value): Frob the return decl
11163         before calling emit_local_var.
11164         (genrtl_finish_function): Don't call fixup_result_decl.
11165         Always emit the jump to return_label.
11166
11167 2000-10-06  Nathan Sidwell  <nathan@codesourcery.com>
11168
11169         * pt.c (lookup_template_class): Set current access for enum.
11170         (tsubst_enum): Set file & line for enum decl.
11171
11172         * spew.c (yylex): Remove unused variable.
11173
11174 2000-10-05  Richard Henderson  <rth@cygnus.com>
11175
11176         * semantics.c (genrtl_finish_function): Don't init or check
11177         can_reach_end; remove noreturn and return value checks.
11178
11179 2000-10-05  Tom Tromey  <tromey@cygnus.com>
11180
11181         * init.c (build_java_class_ref): Use `build_static_name' with a
11182         suffix, not a prefix, to build the class object's name.
11183
11184 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
11185
11186         * cp-tree.h (access_kind): Fix comment typo.
11187         * decl2.c (grokfield): Fix diagnostic typo.
11188         * semantics.c (finish_template_type): Fix comment typo.
11189         (finish_qualified_object_call_expr): Likewise.
11190
11191 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
11192
11193         * pt.c (tsubst_expr, DECL_STMT case): Don't process if
11194         tsubsting fails.
11195
11196 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
11197
11198         * spew.c (frob_id): New static function.
11199         (frob_opname): Use it.
11200         (yylex): Use it.
11201
11202 2000-10-01  Mark Mitchell  <mark@codesourcery.com>
11203
11204         * decl.c (lang_mark_false_label_stack): Remove.
11205         * lex.c (cp_mang_lang_type): Use ggc_alloc_cleared.
11206
11207 2000-09-30  Joseph S. Myers  <jsm28@cam.ac.uk>
11208
11209         * gxxint.texi: Use @email for formatting email addresses.
11210
11211 2000-09-29  Gabriel Dos Reis  <gdr@codesourcery.com>
11212
11213         * error.c: Remove direct obstack manipulation.  Replace with
11214         output_buffer-based formatting.  Adjust calls to removed macros.
11215         (obstack_chunk_alloc, obstack_chunk_free): Remove.
11216         (OB_INIT, OB_PUTC, OB_PUTC2, OB_PUTS, OB_PUTID, OB_PUTCP,
11217         OB_FINISH, OB_PUTI, OB_END_TEMPLATE): Likewise.
11218
11219 2000-09-24  Mark Mitchell  <mark@codesourcery.com>
11220
11221         * ir.texi: Move to ../c-tree.texi.
11222
11223 2000-09-20  Jason Merrill  <jason@redhat.com>
11224
11225         * decl2.c (get_guard): Check DECL_FUNCTION_SCOPE_P.
11226
11227 2000-09-21  Andreas Jaeger  <aj@suse.de>
11228
11229         * errfn.c: Move declaration of cp_printer and cp_printers to ...
11230         * cp-tree.h: ... here.
11231
11232         * error.c: Remove declaration of cp_printer.
11233
11234 2000-09-20  Mark Mitchell  <mark@codesourcery.com>
11235
11236         * tree.c (mark_local_for_remap_r): Handle CASE_LABELs.
11237
11238 2000-09-20  Hans-Peter Nilsson  <hp@axis.com>
11239
11240         * except.c: Delete #if 0:d EXCEPTION_SECTION_ASM_OP-default and
11241         users.
11242
11243 2000-09-18  Mark Mitchell  <mark@codesourcery.com>
11244
11245         * decl.c (start_function): Robustify.
11246
11247 2000-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11248
11249         * cp-tree.h (check_function_format): Accept a `status' parameter.
11250
11251         * call.c, typeck.c: Updates calls to `check_function_format'.
11252
11253 2000-09-17  Geoffrey Keating  <geoffk@cygnus.com>
11254
11255         * decl2.c (handle_class_head): Always push some scope even
11256         in the error case.
11257
11258 2000-09-16  Mark Mitchell  <mark@codesourcery.com>
11259
11260         * cp-tree.h (struct cp_language_function): Remove
11261         x_scope_stmt_stack and name_declared.
11262         (current_scope_stmt_stack): Remove.
11263         (function_name_declared_p): New macro.
11264         (struct lang_decl_flags): Use c_lang_decl as a base class.
11265         (context): Remove.
11266         (struct lang_decl): Replace saved_tree with context.
11267         (DECL_FRIEND_CONTEXT): Adjust accordingly.
11268         (SET_DECL_FRIEND_CONTEXT): Likewise.
11269         (DECL_VIRTUAL_CONTEXT): Likewise.
11270         (DECL_SAVED_TREE): Remove.
11271         (C_DECLARED_LABEL_FLAG): Likewise.
11272         (cplus_expand_expr_stmt): Don't declare.
11273         (add_decl_stmt): Likewise.
11274         (add_scope_stmt): Likewise.
11275         * decl.c (mark_stmt_tree): Remove.
11276         (case_compare): Likewise.
11277         (finish_case_label): Use c_add_case_label.
11278         (init_decl_processing): Set more language-specific hooks.
11279         (build_enumerator): Fix typo in comment.
11280         (cplus_expand_expr_stmt): Remove.
11281         (mark_lang_function): Use mark_c_language_function.
11282         (lang_mark_tree): Use c_mark_lang_decl.
11283         * decl2.c: Change order of inclusion.
11284         * except.c: Likewise.
11285         * expr.c (cplus_expand_expr): Remove handling of STMT_EXPR.  Fall
11286         back on c_expand_expr.
11287         * friend.c: Include expr.h.
11288         * init.c: Change order of inclusion.
11289         * Makefile.in: Update dependencies.
11290         * lex.h (free_lang_decl_chain): Remove.
11291         * optimize.c (maybe_clone_body): Use function_name_declared_p.
11292         * pt.c (build_template_decl): Don't copy DECL_VIRTUAL_CONTEXT if
11293         it doesn't exist.
11294         (instantiate_decl): Use function_name_declared_p.
11295         * semantics.c (lang_expand_expr_stmt): Remove.
11296         (set_current_function_name_declared): Likewise.
11297         (current_function_name_declared): Likewise.
11298         (begin_compound_stmt): Use function_name_declared_p.
11299         (add_decl_stmt): Remove.
11300         (setup_vtbl_ptr): Use function_name_declared_p.
11301         (add_scope_stmt): Remove.
11302         (current_scope_stmt_stack): New function.
11303         (cp_expand_stmt): Don't handle SCOPE_STMTs.
11304         (expand_body): Use function_name_declared_p.
11305         * tree.c (cp_statement_code_p): Don't include SCOPE_STMT.
11306         * typeck.c: Change order of includes.
11307         (convert_sequence): Remove.
11308
11309 2000-09-14  Joseph S. Myers  <jsm28@cam.ac.uk>
11310
11311         * lex.c (reswords): Add _Complex.
11312
11313 Thu Sep 14 12:10:45 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11314
11315         * Make-lang.in (cplib2.txt): Depend on cp/Makefile.
11316
11317 2000-09-13  J. David Anglin  <dave@hiauly1.hia.nrc.ca>
11318
11319         * init.c (begin_init_stmts): Don't use // comments.
11320
11321 2000-09-12  Jason Merrill  <jason@redhat.com>
11322
11323         * decl.c (maybe_deduce_size_from_array_init): Set do_default for
11324         all non-extern arrays.
11325
11326         * decl.c (grokdeclarator): Complain about 'friend T' for implicit
11327         typenames, too.  Downgrade complaint to pedwarn.
11328         (xref_tag): Warn about surprising behavior of 'friend struct T'.
11329         * decl2.c (handle_class_head): Generate a TYPENAME_TYPE for
11330         'class This::Inherited'.
11331
11332 2000-09-12  Mark Mitchell  <mark@codesourcery.com>
11333
11334         * decl.c (finish_case_label): Given the LABEL_DECL a
11335         DECL_CONTEXT.
11336
11337 2000-09-12  Gabriel Dos Reis  <gdr@codesourcery.com>
11338
11339         * error.c (TFF_PLAIN_IDENTIFIER, TFF_NAMESPACE_SCOPE,
11340         TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS, TFF_CHASE_TYPDEF,
11341         TFF_DECL_SPECIFIERS, TFF_CLASS_KEY_OR_ENUM, TFF_RETURN_TYPE,
11342         TFF_FUNCTION_DEFAULT_ARGUMENTS, TFF_EXCEPTION_SPECIFICATION,
11343         TFF_TEMPLATE_HEADER, TFF_TEMPLATE_DEFAULT_ARGUMENTS, TFF_SCOPE):
11344         New macros.
11345         (sorry_for_unsupported_tree, print_scope_operator,
11346         print_left_paren, print_right_paren, print_left_bracket,
11347         print_right_bracket, print_whitespace): Likewise.
11348         (aggr_variety): Rename to class_key_or_enum.
11349         (print_type): Rename to print_type_id.
11350         (print_type_specifier_seq, print_simple_type_specifier,
11351         print_elaborated_type_specifier,
11352         print_rest_of_abstract_declarator,
11353         print_parameter_declaration_clause, print_exception_specification,
11354         print_nested_name_specifier, print_template_id,
11355         typedef_original_name,  print_template_argument_list_start,
11356         print_template_argument_list_end): New functions.
11357
11358 2000-09-11  Gabriel Dos Reis  <gdr@codesourcery.com>
11359
11360         * ir.texi: Add more documentation.
11361
11362 2000-09-11  Mark Mitchell  <mark@codesourcery.com>
11363
11364         * cp-tree.h (struct saved_scope): Remove x_function_parms.
11365         (current_function_parms): Don't define.
11366         (struct cp_language_function): Remove parms_stored.
11367         (current_function_just_assigned_this): Don't define.
11368         (current_function_parms_stored): Likewise.
11369         (static_ctors): Declare.
11370         (static_dtors): Likewise.
11371         (SF_EXPAND): Don't define.
11372         (expand_start_early_try_stmts): Remove declaration.
11373         (store_parm_decls): Likewise.
11374         * decl.c (static_ctors): Don't declare.
11375         (static_dtors): Likewise.
11376         (struct binding_level): Remove this_block.
11377         (poplevel): Remove dead code.
11378         (set_block): Likewise.
11379         (mark_binding_level): Don't mark this_block.
11380         (mark_saved_scope): Don't mark x_function_parms.
11381         (init_decl_processing): Don't add current_function_parms as a GC
11382         root.
11383         (check_function_type): Change prototype.
11384         (start_function): Remove RTL-generation code.
11385         (expand_start_early_try_stmts): Remove.
11386         (store_parm_decls): Give it internal linkage.  Remove
11387         RTL-generation code.
11388         (finish_function): Remove RTL-generation code.
11389         * decl2.c (static_ctors): Fix formatting.
11390         (static_dtors): Likewise.
11391         * method.c (use_thunk): Don't call store_parm_decls.
11392         (synthesize_method): Likewise.
11393         * optimize.c (maybe_clone_body): Likewise.
11394         * parse.y (fn.def2): Likewise.
11395         (.set_base_init): Likewise.
11396         (nodecls): Likewise.
11397         * pt.c (instantiate_decl): Likewise.
11398         * rtti.c (synthesize_tinfo_fn): Likewise.
11399         * semantics.c (genrtl_try_block): Simplify.
11400         (expand_body): Use genrtl_start_function and
11401         genrtl_finish_function.
11402         (genrtl_start_function): New function.
11403         (genrtl_finish_function): Likewise.
11404
11405 2000-09-11  Nathan Sidwell  <nathan@codesourcery.com>
11406
11407         * error.c (cp_tree_printer, case 'P'): Append break.
11408
11409 2000-09-11  Nathan Sidwell  <nathan@codesourcery.com>
11410
11411         * cp-tree.h (frob_opname): Declare.
11412         * parse.y (saved_scopes): New static variable.
11413         (cp_parse_init): Adjust.
11414         (do_id): If lastiddecl is NULL, do do_identifier.
11415         (operator): Save scope information.
11416         (unoperator): New reduction. Restore scope information.
11417         (operator_name): Append unoperator. Call frob_opname.
11418         * spew.c (frob_opname): Define.
11419
11420 2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>
11421
11422         * decl.c, rtti.c: Include defaults.h if not already included.
11423         Don't define the *_TYPE_SIZE macros.
11424
11425 2000-09-09  Mark Mitchell  <mark@codesourcery.com>
11426
11427         * cp-tree.h (push_switch): Change prototype.
11428         (check_cp_case_value): Remove declaration.
11429         (decl_constant_value): Likewise.
11430         * decl.c (struct cp_switch): Add switch_stmt and cases.
11431         (case_compare): New function.
11432         (push_switch): Set switch_stmt.  Initialize cases.
11433         (pop_switch): Clean up cases.
11434         (define_case_label): Rename to ...
11435         (finish_case_label): ... this.  Do semantic analysis for case
11436         labels here.
11437         (start_function): Correct comment.
11438         * decl2.c (check_cp_case_value): Remove.
11439         * expr.c (do_case): Remove.
11440         * pt.c (tsubst_expr): Adjust call to finish_case_label.
11441         * semantics.c (genrtl_do_poplevel): Remove declaration.
11442         (RECHAIN_STMTS): Remove.
11443         (finish_break_stmt): Use build_break_stmt.
11444         (finish_continue_stmt): Use build_continue_stmt.
11445         (finish_switch_cond): Adjust condition here, rater than in
11446         c_expand_start_case.
11447         (finish_case_label): Remove.
11448         * typeck.c (c_expand_return): Remove.
11449         (c_expand_start_case): Likewise.
11450
11451 2000-09-07  Gabriel Dos Reis  <gdr@codesourcery.com>
11452
11453         * ir.texi: Document type nodes.
11454
11455 2000-09-06  Mark Mitchell  <mark@codesourcery.com>
11456
11457         * cp-tree.h (init_cp_semantics): Declare.
11458         (genrtl_try_block): Don't declare.
11459         (genrtl_handler): Likewise.
11460         (genrtl_catch_block): Likewise.
11461         (genrtl_ctor_stmt): Likewise.
11462         (genrtl_subobject): Likewise.
11463         (genrtl_do_poplevel): Likewise.
11464         (genrtl_named_return_value): Likewise.
11465         * lex.c (init_parse): Call init_cp_semantics.
11466         * semantics.c (genrtl_try_block): Give it internal linkage.
11467         (genrtl_handler): Likewise.
11468         (genrtl_catch_block): Likewise.
11469         (genrtl_ctor_stmt): Likewise.
11470         (genrtl_subobject): Likewise.
11471         (genrtl_do_poplevel): Likewise.
11472         (genrtl_named_return_value): Likewise.
11473         (lang_expand_stmt): Rename to ...
11474         (cp_expand_stmt): ... this.  Only handle C++-specific nodes.
11475         (init_cp_semantics): Define.
11476
11477         * decl.c (initialize_local_var): Remove RTL-generating code.
11478         * semantics.c (genrtl_try_block): Fix formatting.
11479
11480         Move statement-tree facilities from C++ to C front-end.
11481         * cp-tree.h (cp_tree_index): Remove CPTI_VOID_ZERO.
11482         (void_zero_node): Remove.
11483         (stmt_tree): Likewise.
11484         (scope_chain): Adjust.
11485         (language_function): Rename to cp_language_function.
11486         (cp_function_chain): Adjust.
11487         (current_stmt_tree): Remove.
11488         (last_tree): Likewise.
11489         (last_expr_type): Likewise.
11490         (struct lang_decl): Adjust.
11491         (STMT_IS_FULL_EXPR_P): Remove.
11492         (add_tree): Remove.
11493         (begin_stmt_tree): Likewise.
11494         (finish_stmt_tree): Likewise.
11495         (walk_tree_fn): Likewise.
11496         (walk_stmt_tree): Likewise.
11497         * class.c (finish_struct): Replace use of add_tree with add_stmt.
11498         * decl.c (mark_stmt_tree): Adjust type.
11499         (init_decl_processing): Don't build void_zero_node.
11500         (initialize_local_var): Adjust usage of current_stmt_tree.
11501         (finish_enum): Use add_stmt, not add_tree.
11502         (save_function_data): Adjust use of language_function.
11503         (finish_constructor_body): Use add_stmt, not add_tree.
11504         (finish_destructor_body): Likewise.
11505         (push_cp_function_context): Adjust use of language_function.
11506         (pop_cp_function_context): Likewise.
11507         (mark_lang_function): Likewise.
11508         (mark_cp_function_context): Likewise.
11509         * init.c (build_aggr_init): Adjust use of current_stmt_tree.
11510         (build_vec_init): Likewise.
11511         * semantics.c (SET_LAST_STMT): Remove.
11512         (RECHAIN_STMTS): Don't use it.
11513         (stmts_are_full_exprs_p): Adjust use of current_stmt_tree.
11514         (current_stmt_tree): Define.
11515         (add_tree): Remove.
11516         (finish_goto_stmt): Use add_stmt, not add_tree.
11517         (finish_expr_stmt): Likewise.
11518         (begin_if_stmt): Likewise.
11519         (finish_then_clause): Likewise.
11520         (begin_while_stmt): Likewise.
11521         (begin_do_stmt): Likewise.
11522         (finish_return_stmt): Likewise.
11523         (begin_for_stmt): Likewise.
11524         (finish_break_stmt): Likewise.
11525         (finish_continue_stmt): Likewise.
11526         (begin_switch_stmt): Likewise.
11527         (finish_case_label): Likewise.
11528         (begin_try_block): Likewise.
11529         (begin_function_try_block): Likewise.
11530         (begin_handler): Likewise.
11531         (begin_catch_block): Likewise.
11532         (begin_compound_stmt): Likewise.
11533         (begin_asm_stmt): Likewise.
11534         (finish_asm_stmt): Likewise.
11535         (finish_label_stmt): Likewise.
11536         (add_decl_stmt): Likewise.
11537         (finish_subobject): Likewise.
11538         (finish_decl_cleanup): Likewise.
11539         (finish_named_return_value): Likewise.
11540         (setup_vtbl_ptr): Likewise.
11541         (add_scope_stmt): Likewise.
11542         (finish_stmt_expr): Likewise.
11543         (prune_unused_decls): Remove.
11544         (begin_stmt_tree): Likewise.
11545         (finish_stmt_tree): Likewise.
11546         (prep_stmt): Adjust use of current_stmt_tree.
11547         (lang_expand_stmt): Likewise.
11548         * tree.c (statement_code_p): Remove.
11549         (cp_statement_code_p): New function.
11550         (walk_stmt_tree): Remove.
11551         (init_tree): Set lang_statement_code_p.
11552
11553 2000-09-06  Zack Weinberg  <zack@wolery.cumb.org>
11554
11555         Integrated preprocessor.
11556
11557         * Make-lang.in, Makefile.in: Remove all references to input.c,
11558         gxx.gperf, and hash.h.  Add ../c-lex.o to C_OBJS.
11559         * gxx.gperf, hash.h, input.c: Delete.
11560         * lang-specs.h: Pass -lang-c++ to cc1plus so cpplib is
11561         initialized properly.
11562
11563         * class.c (fixup_pending_inline): Take a tree, not a
11564         struct pending_inline *.  All callers changed.
11565         (init_class_processing): Set RID_PUBLIC, RID_PRIVATE,
11566         RID_PROTECTED entries in ridpointers[] array here.
11567         * decl.c (duplicate_decls): Do not refer to struct
11568         pending_inline.
11569         (record_builtin_type, init_decl_processing): Use RID_MAX not
11570         CP_RID_MAX.
11571         (grokdeclarator): Use C_IS_RESERVED_WORD.
11572         * decl2.c (lang_decode_option): Ignore -lang-c++ for sake of
11573         cpplib.
11574         (grok_x_components): Do not inspect pending_inlines chain.
11575
11576         * cp-tree.h (struct lang_identifier): Add rid_code entry.
11577         (C_IS_RESERVED_WORD, C_RID_CODE, C_RID_YYCODE): New.
11578         (flag_no_gnu_keywords, flag_operator_names, rid_to_yy): Declare.
11579         (DEFARG_LENGTH, struct pending_inline, TIME_IDENTIFIER_TIME,
11580         TIME_IDENTIFIER_FILEINFO): Kill.
11581         Update prototypes.
11582         * lex.h: Expunge cp_rid.  Rewrite RIDBIT macros to use just a
11583         single 32-bit word.
11584         * parse.y: Call do_pending_inlines unconditionally.
11585         reinit_parse_for_method is now snarf_method.  fn.defpen is no
11586         longer necessary.  Remove unnecessary <itype> annotation on
11587         SCOPE.  Do not refer to end_of_file or struct pending_inline.
11588         * semantics.c (begin_inline_definitions): Call
11589         do_pending_inlines unconditionally.
11590
11591         * lex.c: Remove all code now shared with C front end.
11592         Initialize cpplib properly if USE_CPPLIB.  Put reserved words
11593         into the get_identifier table.  Rewrite pragma handling to
11594         work with the registry.  Move code to save tokens for later
11595         processing to spew.c.
11596
11597         * spew.c: Rewrite everything in terms of token streams instead
11598         of text.  Move routines here from lex.c / input.c as
11599         appropriate.  GC-mark trees hanging off the pending inlines
11600         chain.
11601
11602 2000-09-06  Mark Mitchell  <mark@codesourcery.com>
11603
11604         * NEWS: Mention that the named return value extension has been
11605         deprecated.
11606         * cp-tree.h (original_result_rtx): Define.
11607         (TREE_REFERENCE_EXPR): Remove.
11608         (DECL_VPARENT): Likewise.
11609         (pushdecl_nonclass_level): Likewise.
11610         (store_return_init): Likewise.
11611         (reinit_lang_specific): Likewise.
11612         (genrtl_named_return_value): Change prototype.
11613         * decl.c (original_result_rtx): Remove.
11614         (cp_finish_decl): Don't build DECL_STMTs for RESULT_DECLs.
11615         Do not generate RTL for local variables here.
11616         (store_return_init): Remove.
11617         * semantics.c (genrtl_named_return_value): Simplify.  Fold in
11618         store_return_init.
11619         (finish_named_return_value): Adjust accordingly.  Warn that this
11620         extension is deprecated.
11621         (lang_expand_stmt): Adjust call to genrtl_named_return_value.
11622
11623 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
11624
11625         * pt.c (type_unification_real): Replace switch with if.
11626         (unify): Tsubst non-type parms before comparing.
11627
11628 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
11629
11630         * error.c (dump_typename): New function, broken out of ...
11631         (dump_type): ... here. Use it.
11632         * typeck.c (same_type_p): Use cp_tree_equal for TYPENAME_TYPE.
11633
11634 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
11635
11636         * init.c (build_offset_ref): Deal with namespace scoped
11637         TEMPLATE_ID_EXPRs.
11638
11639 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
11640
11641         * class.c (resolve_address_of_overloaded_function): Add
11642         explanation message.
11643         * decl.c (define_case_label): Reformat explanation.
11644         * decl2.c (finish_static_data_member_decl): Likewise.
11645         (grokfield): Likewise.
11646         * friend.c (do_friend): Likewise.
11647
11648 2000-09-05  Zack Weinberg  <zack@wolery.cumb.org>
11649
11650         * tree.c (walk_tree): Expose tail recursion.
11651         (walk_stmt_tree): New function.
11652         * cp-tree.h: Prototype walk_stmt_tree.
11653         * semantics.c (prune_unused_decls): Operate on SCOPE_STMTs not
11654         the BLOCKs directly.  If a BLOCK has no variables after
11655         pruning, discard it.
11656         (finish_stmt_tree): Use walk_stmt_tree.  No need to save and
11657         restore the line number.
11658
11659 2000-09-05  Mark Mitchell  <mark@codesourcery.com>
11660
11661         * Makefile.in (CXX_TREE_H): Add dependency on HTAB_H.
11662         (pt.o): Remove dependency on HTAB_H.
11663         * cp-tree.h: Include hashtab.h.
11664         (walk_tree): Change prototype.
11665         (walk_tree_without_duplicates): New function.
11666         * decl.c (check_default_argument): Use it.
11667         * optimize.c (remap_decl): Adjust calls to walk_tree.
11668         (copy_body): Likewise.
11669         (expand_calls_inline): Likewise.
11670         (calls_setjmp_p): Use walk_tree_without_duplicates.
11671         * pt.c: Don't include hashtab.h.
11672         (for_each_template_parm): Use walk_tree_without_duplicates.
11673         * semantics.c (finish-stmt_tree): Likewise.
11674         (expand_body): Likewise.
11675         * tree.c (walk_tree): Add additional parameter.
11676         (walk_tree_without_duplicates): New function.
11677         (count_trees): Use it.
11678         (verify_stmt_tree): Adjust call to walk_tree.
11679         (find_tree): Use walk_tree_without_duplicates.
11680         (no_linkage_check): Likewise.
11681         (break_out_target_exprs): Adjust call to walk_tree.
11682         (cp_unsave): Likewise.
11683
11684 2000-09-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
11685
11686         * cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code.
11687         (TEMPLATE_TEMPLATE_PARM): Adjust comment.
11688         * cp-tree.h (TYPE_BINFO): Adjust comment.
11689         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
11690         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
11691         (IS_AGGR_TYPE): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
11692         (TYPE_TEMPLATE_INFO): Likewise.
11693         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Likewise.
11694         * class.c (push_nested_class): Likewise.
11695         * decl.c (lookup_name_real): Likewise.
11696         (grokdeclarator): Likewise.
11697         (grok_op_properties): Likewise.
11698         (xref_tag): Likewise.
11699         (xref_basetypes): Likewise.
11700         * decl2.c (constructor_name_full): Likewise.
11701         (arg_assoc_template_arg): Add TEMPLATE_TEMPLATE_PARM case.
11702         (arg_assoc_type): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
11703         * error.c (dump_type): Split TEMPLATE_TEMPLATE_PARM case.
11704         (dump_type_prefix): Add BOUND_TEMPLATE_TEMPLATE_PARM.
11705         (dump_type_suffix): Likewise.
11706         * init.c (is_aggr_type): Use BOUND_TEMPLATE_TEMPLATE_PARM
11707         instead.
11708         (get_aggr_from_typedef): Likewise.
11709         * mangle.c (write_type): Split TEMPLATE_TEMPLATE_PARM case.
11710         (write_expression): Add BOUND_TEMPLATE_TEMPLATE_PARM.
11711         (write_template_parm): Likewise.
11712         (write_template_template_parm): Check tree code instead of
11713         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
11714         * method.c (build_overload_nested_name): Add
11715         BOUND_TEMPLATE_TEMPLATE_PARM.
11716         (process_overload_item): Split TEMPLATE_TEMPLATE_PARM case.
11717         * parse.y (bad_parm): Add BOUND_TEMPLATE_TEMPLATE_PARM.
11718         * pt.c (convert_template_argument): Check tree code instead of
11719         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
11720         (for_each_template_parm_r): Split TEMPLATE_TEMPLATE_PARM case.
11721         (for_each_template_parm): Adjust comment.
11722         (tsubst): Add BOUND_TEMPLATE_TEMPLATE_PARM.  Reorganize.
11723         (tsubst_copy): Add BOUND_TEMPLATE_TEMPLATE_PARM.
11724         (unify): Add BOUND_TEMPLATE_TEMPLATE_PARM.  Reorganize.  Use
11725         template_args_equal to compare template template parameter cases.
11726         * ptree.c (print_lang_type): Add BOUND_TEMPLATE_TEMPLATE_PARM.
11727         * search.c (lookup_field_1): Use BOUND_TEMPLATE_TEMPLATE_PARM
11728         instead.
11729         * tree.c (copy_template_template_parm): Decide whether to create
11730         a TEMPLATE_TEMPLATE_PARM or BOUND_TEMPLATE_TEMPLATE_PARM node.
11731         (walk_tree): Add BOUND_TEMPLATE_TEMPLATE_PARM.
11732         (copy_tree_r): Likewise.
11733         * typeck.c (comptypes): Likewise.  Check tree code instead of
11734         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
11735
11736 2000-09-04  Mark Elbrecht  <snowball3@bigfoot.com>
11737
11738         * decl.c (finish_function): Move the code for handling functions
11739         marked with the constructor and destructor attributes inside the
11740         expand_p block.
11741
11742 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
11743
11744         * init.c (resolve_offset_ref): Deal with TEMPLATE_ID_EXPR.
11745
11746 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
11747
11748         * pt.c (lookup_template_class): Remove abort.
11749         * tree.c (get_type_decl): Allow error_mark_node.
11750
11751 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
11752
11753         * decl2.c (arg_assoc): Deal with COMPONENT_REFs inside
11754         TEMPLATE_ID_EXPRs.
11755
11756 2000-09-03  Mark Mitchell  <mark@codesourcery.com>
11757
11758         * operators.def (ALIGNOF_EXPR, MAX_EXPR, MIN_EXPR): Change
11759         new ABI mangling.
11760
11761 2000-09-01  Nathan Sidwell  <nathan@codesourcery.com>
11762
11763         * parse.y (named_class_head): Check for TYPENAME_TYPE. Simplify
11764         union tag mismatch error reporting.
11765
11766 2000-09-01  Nathan Sidwell  <nathan@codesourcery.com>
11767
11768         * call.c (build_scoped_method_call): Check it is not a namespace.
11769
11770 2000-08-30  Jason Merrill  <jason@redhat.com>
11771
11772         * cp-tree.h (LOCAL_CLASS_P): Use decl_function_context.
11773
11774         * tree.c (bot_manip): Check TREE_CONSTANT rather than
11775         !TREE_SIDE_EFFECTS.  Call break_out_target_exprs and
11776         build_target_expr_with_type for the non-AGGR_INIT_EXPR case.
11777
11778         * decl.c (start_function): Always call make_function_rtl.
11779
11780 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
11781
11782         * semantics.c (prune_unused_decls): New function.
11783         (finish_stmt_tree): Call it via walk_tree.
11784
11785 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
11786
11787         * class.c (build_secondary_vtable): Constify a char *.
11788         * decl.c (init_decl_processing): Initialize function_id_node,
11789         pretty_function_id_node, and func_id_node.
11790         * input.c (struct input_source): Constify 'str'.
11791         (feed_input): Constify first argument.
11792         * mangle.c (write_identifier): Constify argument.
11793         * pt.c (mangle_class_name_for_template): Constify argument.
11794
11795 2000-08-29  Mark Mitchell  <mark@codesourcery.com>
11796
11797         * typeck.c (mark_addressable): Remove code that pokes around in
11798         RTL.
11799
11800 2000-08-28  Jason Merrill  <jason@redhat.com>
11801
11802         * lex.c (file_name_nondirectory): Move to toplev.c.
11803
11804         * cp-tree.h (LOCAL_CLASS_P): New macro.
11805         * class.c (finish_struct_1): Use it.
11806
11807 2000-08-27  Alex Samuel  <samuel@codesourcery.com>
11808
11809         * mangle.c (CLASSTYPE_TEMPLATE_ID_P): Remove unexplained voodoo.
11810         (write_encoding): Pass another argument to write_name.
11811         (write_name): Add ignore_local_scope parameter.  Fix handling of
11812         local names.
11813         (write_nested_name): Use write_unqualified_name.
11814         (write_prefix): Likewise.  Skip out on FUNCTION_DECLs.
11815         (write_template_prefix): Use write_unqualified_name.
11816         (write_component): Remove.
11817         (write_local_name): Add parameter.  Use direct local entity to
11818         discriminator calculation.
11819         (write_class_enum_type): Pass another argument to write_name.
11820         (write_template_template_arg): Likewise.
11821         (make_guard_variable): Likewise.
11822
11823 2000-08-27  Jason Merrill  <jason@redhat.com>
11824
11825         * decl.c (pushdecl): Matching decls for local externs are found in
11826         the current level.  Propagate linkage information from previous
11827         declarations.
11828
11829 2000-08-26  Gabriel Dos Reis  <gdr@codesourcery.com>
11830
11831         * ir.texi (Expressions): Fix typo.
11832
11833 2000-08-25  Greg McGary  <greg@mcgary.org>
11834
11835         * tree.c (init_tree): Use ARRAY_SIZE.
11836
11837 2000-08-25  Gabriel Dos Reis  <gdr@codesourcery.com>
11838
11839         * error.c (cp_tree_printer): Rework.
11840
11841 2000-08-25  Mark Mitchell  <mark@codesourcery.com>
11842
11843         * Make-lang.in (CXX_LIB2FUNCS): Remove cp-demangle.o and
11844         dyn-string.o.
11845         (CXX_LIB2SRCS): Remove cp-demangle.c and dyn-string.c.
11846         (cp-demangle.o): Remove target.
11847         (dyn-string.o): Likewise.
11848
11849         * decl.c (grokfndecl): Require that `main' return an `int'.
11850         * mangle.c (write_encoding): Don't mangle return types for
11851         conversion functions.
11852
11853 2000-08-25  Gabriel Dos Reis  <gdr@codesourcery.com>
11854
11855         * error.c (tree_formatting_info): New data type.
11856         (tree_being_formatted): New macro.
11857         (tree_formatting_flags): Likewise.
11858         (put_whitespace): Likewise.
11859         (print_tree_identifier): Likewise.
11860         (print_identifier): Likewise.
11861         (cp_tree_printer, print_function_argument_list, print_declaration,
11862         print_expression, print_function_declaration,
11863         print_function_parameter, print_type, print_cv_qualifier): New
11864         functions.
11865         (init_error): Initialize lang_printer.
11866
11867 2000-08-24  Jason Merrill  <jason@redhat.com>
11868
11869         * typeck.c (build_ptrmemfunc): Just reinterpret if there's no
11870         adjustment necessary.
11871
11872 2000-08-24  Greg McGary  <greg@mcgary.org>
11873
11874         * cp-tree.h (MAIN_NAME_P): Remove macro.
11875
11876 2000-08-24  Gabriel Dos Reis  <gdr@codesourcery.com>
11877
11878         * error.c (print_instantiation_context): Don't forget to flush the
11879         buffer.
11880
11881 2000-08-23  Jason Merrill  <jason@redhat.com>
11882
11883         * typeck.c (build_ptrmemfunc): Save the input pmf.
11884
11885         * method.c (process_modifiers): Use same_type_p.
11886
11887 2000-08-23  Mark Mitchell  <mark@codesourcery.com>
11888
11889         * cp-tree.h (DECL_CLONED_FUNCTION_P): Check DECL_LANG_SPECIFIC.
11890         * mangle.c (write_function_type): Change prototype.
11891         (write_encoding): Don't mangle return types for
11892         constructors or destructors.
11893         (write_type): Adjust call to write_function_type.
11894         * pt.c (instantiate_template): Instantiate alternate entry points
11895         when instantiating the main function.
11896
11897 2000-08-23  Gabriel Dos Reis  <gdr@codesourcery.com>
11898
11899         * error.c (cp_print_error_function): Don't use embedded '\n' in
11900         output_printf.
11901
11902 2000-08-23  Gabriel Dos Reis  <gdr@codesourcery.com>
11903
11904         * decl.c (init_decl_processing): Remove bogus initialization.
11905         * error.c (lang_print_error_function): Restore here.
11906         (init_error): Initialize print_error_function.
11907
11908 2000-08-22  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
11909
11910         * decl2.c (arg_assoc): Revert my 2000-08-11 change.
11911
11912 2000-08-22  Gabriel Dos Reis  <gdr@codesourcery.com>
11913
11914         * Makefile.in (error.o): Depends on diagnostic.h
11915
11916         * cp-tree.h (problematic_instantiation_changed,
11917         record_last_problematic_instantiation, current_instantiation,
11918         print_instantiation_context): Declare.
11919         (maybe_print_template_context): Remove.
11920
11921         * decl.c (init_decl_processing): Set print_error_function to NULL.
11922         (lang_print_error_function): Remove, since we're using a new
11923         machinery.
11924
11925         * error.c: #include diagnostic.h
11926         (function_category): New function.
11927         (cp_diagnostic_starter): Likewise.
11928         (cp_diagnostic_finalizer): Likewise.
11929         (cp_print_error_function): Likewise.
11930         (maybe_print_instantiation_context): Likewise.
11931         (print_instantiation_full_context): Likewise.
11932         (print_instantiation_partial_context): Likewise.
11933         (print_instantiation_context): Define.
11934         (init_error): Initialize diagnostic pager and finalizer.
11935
11936         * pt.c (problematic_instantiation_changed): Define.
11937         (record_last_problematic_instantiation): Likewise.
11938         (current_instantiation): Likewise.
11939         (maybe_print_template_context): Remove.
11940         (print_template_context): Likewise.
11941         (current_tinst_level): Make static to reflect Brendan Kehoe's
11942         change of 1995-04-13.
11943         (push_tinst_level): Call print_instantiation_context.
11944
11945 2000-08-21  Nix  <nix@esperi.demon.co.uk>
11946
11947         * lang-specs.h: Do not process -o or run the assembler if
11948         -fsyntax-only.
11949
11950 2000-08-21  Joseph S. Myers  <jsm28@cam.ac.uk>
11951
11952         * decl.c (flag_hosted, flag_noniso_default_format_attributes): New
11953         variables.
11954         * decl2.c (lang_decode_option): Disable gettext attributes for
11955         -ansi.
11956
11957 2000-08-21  Gabriel Dos Reis  <gdr@codesourcery.com>
11958
11959         * lex.c (lang_init_options): Default diagnostic message maximum
11960         length to 80, when line-wrapping.
11961
11962 2000-08-20  Mark Mitchell  <mark@codesourcery.com>
11963
11964         * class.c (build_vtbl_initializer): Clear the entire
11965         vtbl_init_data.  Start keeping track of the functions for which we
11966         have created vcall offsets here.
11967         (dfs_build_vcall_offset_vtbl_entries): Remove.
11968         (build_vcall_offset_vtbl_entries): Reimplement.
11969         (add_vcall_offset_vtbl_entries_r): New function.
11970         (add_vcall_offset_vtbl_entries_1): Likewise.  Tweak logic for
11971         computing when vcall offsets are necessary.
11972
11973 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
11974
11975         * decl.c (member_function_or_else): Use cp_error ... %T.
11976         (grokdeclarator): Likewise.
11977         (start_method): Likewise.
11978         * friend.c (make_friend_class): Use cp_pedwarn ... %T.
11979
11980 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
11981
11982         * decl2.c (grokfield): Set CLASSTYPE_GOT_SEMICOLON on class
11983         TYPE_DECLs.
11984
11985 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
11986
11987         * cp-tree.h (PTRMEM_OK_P): New macro.
11988         (itf_ptrmem_ok): New enumeration value.
11989         * class.c (resolve_address_of_overloaded_function): Add PTRMEM
11990         argument. Diagnose implicit pointer to member.
11991         (instantiate_type): Don't diagnose implicit pointer to member
11992         here. Pass itf_ptrmem_ok if ok. Adjust calls to
11993         resolve_address_of_overloaded_function.
11994         * init.c (build_offset_ref): Set PTRMEM_OK_P.
11995         (resolve_offset_ref): Don't diagnose implicit pointer to member here.
11996         * semantics.c (finish_parenthesized_expr): Clear OFFSET_REFs here.
11997         * typeck.c (build_x_unary_op): Calculate PTRMEM_OK_P.
11998         (build_unary_op): Deal with single non-static member in
11999         microsoft-land.
12000
12001 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
12002
12003         * decl2.c (arg_assoc_type): Cope with TYPENAME_TYPE.
12004
12005 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
12006
12007         * cp-tree.h (enum_name_string): Remove prototype.
12008         (report_case_error): Remove prototype.
12009         * cp/typeck2.c (enum_name_string): Remove.
12010         (report_case_error): Remove.
12011         * error.c (dump_expr): Deal with enum values directly.
12012         Correctly negate integer constant.
12013
12014 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
12015
12016         * inc/cxxabi.h (__cxa_vec_new2, __cxa_vec_new3): Declare.
12017         (__cxa_vec_delete2, __cxa_vec_delete3): Declare.
12018         * vec.cc (__cxa_vec_new2, __cxa_vec_new3): Implement.
12019         (__cxa_vec_delete2, __cxa_vec_delete3): Implement.
12020         (__cxa_vec_new): Use __cxa_vec_new2.
12021         (__cxa_vec_delete): Use __cxa_vec_delete2.
12022
12023 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
12024
12025         * vec.cc (__cxa_vec_new): Set "C" linkage.
12026         (__cxa_vec_ctor): Likewise.
12027         (__cxa_vec_cctor): Likewise.
12028         (__cxa_vec_dtor): Likewise.
12029         (__cxa_vec_delete): Likewise.
12030         * inc/cxxabi.h (__cxa_vec_new): Set "C" linkage.
12031         (__cxa_vec_ctor): Likewise.
12032         (__cxa_vec_cctor): Likewise.
12033         (__cxa_vec_dtor): Likewise.
12034         (__cxa_vec_delete): Likewise.
12035
12036 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
12037
12038         * class.c (instantiate_type): Reinstate local variable
12039         deleted in previous change.
12040
12041         * cvt.c (cp_convert_to_pointer): Pass itf_complain, not
12042         itf_no_attributes.
12043
12044 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
12045
12046         * cp-tree.h (instantiate_type_flags): New enumeration.
12047         (instantiate_type): Change parameter.
12048         * class.c (instantiate_type): Adjust prototype. Adjust.
12049         * call.c (standard_conversion): Adjust instantiate_type call.
12050         (reference_binding): Likewise.
12051         (build_op_delete_call): Likewise.
12052         (convert_like_real): Likewise.
12053         * cvt.c (cp_convert_to_pointer): Likewise.
12054         (convert_to_reference): Likewise.
12055         * pt.c (convert_nontype_argument): Likewise.
12056         * typeck.c (build_binary_op): Likewise.
12057         (build_ptrmemfunc): Likewise.
12058         (convert_for_assignment): Likewise.
12059
12060 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
12061
12062         * cp-tree.h (CPTR_AGGR_TAG): New global tree node.
12063         (current_aggr): Define.
12064         * decl.c (grokdeclarator): Make sure a friend class is an
12065         elaborated type specifier.
12066         * parse.y (current_aggr): Remove static definition.
12067         (cp_parse_init): Adjust.
12068         (structsp): Clear and restore current_aggr.
12069         (component_decl_list): Clear current_aggr.
12070
12071         * error.c (dump_type, case TYPENAME_TYPE): Don't emit the
12072         aggregate tag on the typename's context.
12073
12074         * pt.c (tsubst_friend_class): Return error_mark_node, if
12075         parms becomes NULL.
12076         (instantiate_class_template): Ignore error_mark_node friend types.
12077
12078 2000-08-14  Nathan Sidwell  <nathan@codesourcery.com>
12079
12080         * cvt.c (warn_ref_binding): New static function, broken out of ...
12081         (convert_to_reference): ... here. Use it.
12082
12083 2000-08-11  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
12084
12085         * parse.y (template_arg): Add rule for template qualified with
12086         global scope.
12087
12088 2000-08-11  Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
12089
12090         * decl2.c (add_function): Reorganize.
12091         (arg_assoc): Do not consider function template decls.
12092
12093 2000-08-11  Jason Merrill  <jason@redhat.com>
12094
12095         * decl.c (lookup_name_real): Don't forget the TYPENAME_TYPE we're
12096         looking inside.
12097
12098 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
12099
12100         * cp-tree.h (resolve_scope_to_name): Remove unused prototype.
12101         (lookup_nested_tag): Likewise.
12102
12103         * decl2.c (grokfield): Fix comment to reflect many types of _DECLs
12104         can be produced.
12105
12106 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
12107
12108         * parse.y (named_complex_class_head_sans_basetype): Remove
12109         always true if.
12110
12111 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
12112
12113         * decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Build
12114         explicit TEMPLATE_ID_EXPR args.
12115         (build_expr_from_tree, case CALL_EXPR): Likewise.
12116
12117 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
12118
12119         * decl.c (check_tag_decl): Diagnose typename's which don't
12120         declare anything.
12121
12122 2000-08-10  Nathan Sidwell  <nathan@codesourcery.com>
12123
12124         * init.c (build_aggr_init): Reject bogus array initializers
12125         early.
12126
12127 2000-08-09  Nathan Sidwell  <nathan@codesourcery.com>
12128
12129         * rtti.c (build_dynamic_cast_1): Set "C" linkage for new abi
12130         runtime.
12131         * cp/tinfo.cc (__dynamic_cast): Likewise.
12132         * cp/inc/cxxabi.h (__dynamic_cast): Likewise.
12133
12134 2000-08-09  Nathan Sidwell  <nathan@codesourcery.com>
12135
12136         * cvt.c (convert_to_pointer_force): Fix error message when
12137         attempting to cast from ambiguous base.
12138
12139 2000-08-08  Jason Merrill  <jason@redhat.com>
12140
12141         * pt.c (tsubst_aggr_type): Bail if creating the argvec fails.
12142         (tsubst_template_arg_vector): Likewise.
12143
12144         * decl2.c (build_anon_union_vars): Choose the largest field; don't
12145         assume that one will be as large as the union.
12146
12147 2000-08-07  Kazu Hirata  <kazu@hxi.com>
12148
12149         * cp-tree.h (CLASSTYPE_HAS_PRIMARY_BASE_P): Fix a comment typo.
12150         * decl.c (pop_labels): Likewise.
12151
12152 2000-08-04  Jeffrey Oldham  <oldham@codesourcery.com>
12153
12154         * inc/cxxabi.h (__pbase_type_info): Changed member names to match
12155         specifications.
12156         (__pointer_to_member_type_info): Likewise.
12157         (__base_class_info): Likewise.
12158         (__class_type_info): Likewise.
12159         (__si_class_type_info): Likewise.
12160         (__vmi_class_type_info): Likewise.
12161         * tinfo.cc (__si_class_type_info::__do_find_public_src):
12162         Changed member names to match specifications.
12163         (__vmi_class_type_info::__do_find_public_src): Likewise.
12164         (__si_class_type_info::__do_dyncast): Likewise.
12165         (__vmi_class_type_info::__do_dyncast): Likewise.
12166         (__si_class_type_info::__do_upcast): Likewise.
12167         (__vmi_class_type_info::__do_upcast): Likewise.
12168         * tinfo2.cc (__pbase_type_info::__do_catch): Likewise.
12169         (__pbase_type_info::__pointer_catch): Likewise.
12170         (__pointer_type_info::__pointer_catch): Likewise.
12171         (__pointer_to_member_type_info::__pointer_catch): Likewise.
12172
12173 2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>
12174
12175         * Make-lang.in (cc1plus): Depend on $(BACKEND), not stamp-objlist.
12176         * Makefile.in: Add C_OBJS, BACKEND; delete OBJS, OBJDEPS.
12177         (cc1plus): Link with $(BACKEND) and $(C_OBJS).
12178
12179 2000-08-04  Mark Mitchell  <mark@codesourcery.com>
12180
12181         * cp-tree.h (add_method): Change prototype.
12182         * class.c (add_method): Remove FIELDS parameter.  Add ERROR_P.
12183         Don't double the size of the method vector in the error case.
12184         (handle_using_decl): Adjust call to add_method.
12185         (add_implicitly_declared_members): Likewise.
12186         (clone_function_decl): Likewise.
12187         * decl2.c (check_classfn): Likewise.
12188         * semantics.c (finish_member_declaration): Likewise.
12189
12190 2000-08-04  Joseph S. Myers  <jsm28@cam.ac.uk>
12191
12192         * decl.c (flag_isoc94): New variable.
12193
12194 2000-08-02  Jason Merrill  <jason@redhat.com>
12195
12196         * pt.c (do_type_instantiation): Add complain parm; don't complain
12197         if called recursively.
12198         * cp-tree.h, parse.y: Adjust.
12199
12200 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
12201
12202         * decl2.c: Silently ignore -Wstrict-prototypes; warn about
12203         -Wno-strict-prototypes.
12204
12205         * g++spec.c: Adjust type of second argument to
12206         lang_specific_driver, and update code as necessary.
12207
12208         * cp-tree.h: Don't prototype min_precision here.
12209         (my_friendly_assert): Cast expression to void.
12210         * semantics.c (do_poplevel): Initialize scope_stmts.
12211
12212 2000-08-02  Mark Mitchell  <mark@codesourcery.com>
12213
12214         * cp-tree.h (DECL_NEEDED_P): Tweak.
12215
12216 2000-07-28  Jason Merrill  <jason@redhat.com>
12217
12218         * lang-specs.h: Use %i in rule for .ii files.
12219
12220 2000-07-31  Zack Weinberg  <zack@wolery.cumb.org>
12221
12222         * lang-specs.h: Rename cpp to cpp0 and/or tradcpp to tradcpp0.
12223
12224 2000-07-30  Mark Mitchell  <mark@codesourcery.com>
12225
12226         Allow indirect primary bases.
12227         * cp-tree.h (struct lang_type): Remove vfield_parent.  Add
12228         primary_base.
12229         (CLASSTYPE_VFIELD_PARENT): Remove.
12230         (CLASSTYPE_PRIMARY_BINFO): Reimplement.
12231         (BINFO_PRIMARY_BINFO): Remove.
12232         (CLASSTYPE_HAS_PRIMARY_BASE_P): Reimplement.
12233         (BINFO_VBASE_PRIMARY_P): Likewise.
12234         (BINFO_PRIMARY_BASE_OF): New macro.
12235         (BINFO_INDIRECT_PRIMARY_P): Likewise.
12236         (get_primary_binfo): New function.
12237         * decl.c (lang_mark_tree): Make lang_type::primary_base.
12238         * class.c (vcall_offset_data_s): Rename to ...
12239         (vtbl_init_data_s): ... this.  Rename primary_p to primary_vtbl_p,
12240         and add ctor_vtbl_p.
12241         (get_derived_offset): Use get_primary_binfo.
12242         (dfs_mark_primary_bases): Adjust handling of virtual primary
12243         bases.
12244         (mark_primary_bases): Likewise.
12245         (set_primary_base): Take a binfo, not an integer, as a
12246         representation of the primary base.
12247         (indirect_primary_base_p): Remove.
12248         (determine_primary_base): Adjust for indirect primary bases.
12249         (dfs_find_final_overrider): Fix typo in coment.
12250         (update_vtable_entry_for_fn): Use get_primary_binfo.
12251         (layout_nonempty_base_or_field): Tweak.
12252         (build_base_fields): Adjust for new primary base semantics.
12253         (dfs_propagate_binfo_offsets): Remove.
12254         (propagate_binfo_offsets): Rewrite.
12255         (dfs_set_offset_for_shared_vbases): Remove.
12256         (layout_virtual_bases): Don't use it.
12257         (layout_class_type): Set CLASSTYPE_SIZE correctly under the new
12258         ABI.
12259         (finish_struct_1): Set CLASSTYPE_PRIMARY_BINFO, not
12260         CLASSTYPE_VFIELD_PARENT.
12261         (dfs_get_primary_binfo): New function.
12262         (get_primary_binfo): Likewise.
12263         (dump_class_hierarchy_r): Tweak printing of primary bases.
12264         (build_vtbl_initializer): Fix typo in comments.  Use
12265         vtbl_init_data.
12266         (build_vcall_and_vbase_vtbl_entries): Likewise.
12267         (build_vbaes_offset_vtbl_entries): Likewise.
12268         (dfs_build_vcall_offset_vtbl_entries): Adjust setting of
12269         BV_VCALL_INDEX to handle indirect primary bases.
12270         (build_vcall_offset_vtbl_entries): Use vtbl_init_data.
12271         (build_rtti_vtbl_entries): Likewise.
12272         * search.c (get_shared_vbase_if_not_primary): Tweak.
12273         (find_vbase_instance): Likewise.
12274         (binfo_for_vtable): Simplify.
12275         * tree.c (unshare_base_binfos): Clear BINFO_PRIMARY_BASE_OF.
12276         (make_binfo): Make it have 11 entries.
12277
12278 2000-07-30  Alex Samuel  <samuel@codesourcery.com>
12279
12280         * mangle.c (DECL_TEMPLATE_ID_P): Remove.
12281         (CLASSTYEP_TEMPLATE_ID_P): Check template info, and context when
12282         ascertaining primaryness.
12283         (G): Remove template_args.
12284         (decl_is_template_id): New function.
12285         (write_encoding): Use decl_is_template_id.
12286         (write_name): Likewise.  Handle type_decls.  Get main variant of
12287         type decls.
12288         (write_nested_name): Likewise.
12289         (write_prefix): Likewise.
12290         (write_template_prefix): Likewise.
12291         (write_special_name_constructor): Remove defunct production from
12292         comment.
12293         (write_bare_function_type): Remove comment about absent parameter.
12294         (write_template_template_arg): Add missing grammar production to
12295         comment.
12296
12297 2000-07-27  Jason Merrill  <jason@redhat.com>
12298
12299         * decl.c (duplicate_decls): If common_type produces a non-typedef
12300         type for a typedef, just use the old type.
12301
12302 2000-07-27  Mark Mitchell  <mark@codesourcery.com>
12303
12304         * cp-tree.h (function_depth): Declare.
12305         (verify_stmt_tree): Likewise.
12306         (find_tree): Likewise.
12307         * decl.c (function_depth): Give it external linkage.
12308         * optimize.c (optimize_function): Increment and decrement it.
12309         * tree.c (verify_stmt_tree_r): New function.
12310         (verify_stmt_tree): Likewise.
12311         (find_tree_r): Likewise.
12312         (find_tree): Likewise.
12313
12314 2000-07-27  Jason Merrill  <jason@redhat.com>
12315
12316         * pt.c (for_each_template_parm_r, case RECORD_TYPE): Use
12317         TYPE_PTRMEMFUNC_P.
12318         * cp-tree.h (TYPE_TEMPLATE_INFO): Check for TYPE_LANG_SPECIFIC.
12319
12320 2000-07-26  Mark Mitchell  <mark@codesourcery.com>
12321
12322         * decl.c (start_cleanup_fn): Mark the function as `inline'.
12323         * decl2.c (get_guard): Call cp_finish_decl, not
12324         rest_of_decl_compilation, for local guards.
12325         * lex.c (do_identifier): Remove unused variable.
12326
12327 Wed Jul 26 15:05:51 CEST 2000   Marc Espie <espie@cvs.openbsd.org>
12328
12329         * parse.y:  Add missing ';'.
12330
12331 2000-07-26  Mark Mitchell  <mark@codesourcery.com>
12332
12333         * parse.y (empty_parms): Use `()', not `(...)', when in the scope
12334         of `extern "C++"'.
12335
12336 2000-07-25  Nathan Sidwell  <nathan@codesourcery.com>
12337
12338         Kill strict_prototype. Backwards compatibility only for
12339         non NO_IMPLICIT_EXTERN_C systems.
12340         * cp-tree.h (flag_strict_prototype): Remove.
12341         (strict_prototype): Remove.
12342         (strict_prototypes_lang_c, strict_prototypes_lang_cplusplus): Remove.
12343         * decl.c (maybe_push_to_top_level): Adjust.
12344         (pop_from_top_level): Adjust.
12345         (decls_match): Only allow sloppy parm matching for ancient
12346         system headers.
12347         (init_decl_processing): Adjust.
12348         (grokdeclarator): Adjust.
12349         * decl2.c (flag_strict_prototype): Remove.
12350         (strict_prototype): Remove.
12351         (strict_prototypes_lang_c, strict_prototypes_lang_cplusplus): Remove.
12352         (lang_f_options): Remove "strict-prototype".
12353         (unsupported-options): Add "strict-prototype".
12354         * lex.c (do_identifier): Adjust.
12355         (do_scoped_id): Adjust.
12356         * parse.y (empty_parms): Adjust.
12357         * class.c (push_lang_context): Adjust.
12358         (pop_lang_context): Adjust.
12359         * typeck.c (comp_target_parms): Adjust.
12360
12361 2000-07-25  Nathan Sidwell  <nathan@codesourcery.com>
12362
12363         * decl.c (poplevel): Deal with anonymous variables at for scope.
12364         (maybe_inject_for_scope_var): Likewise.
12365
12366 2000-07-25  Zack Weinberg  <zack@wolery.cumb.org>
12367
12368         * decl.c: Remove all signal handling code, now done in toplev.c.
12369
12370 2000-07-23  Mark Mitchell  <mark@codesourcery.com>
12371
12372         * decl.c (make_rtl_for_nonlocal_decl): Rework.
12373
12374         * pt.c (lookup_template_class): Ensure that TYPE_CONTEXT is set
12375         correctly.
12376
12377 2000-07-20  Zack Weinberg  <zack@wolery.cumb.org>
12378
12379         * cp-tree.h: Use __FUNCTION__ not __PRETTY_FUNCTION__.
12380         Define my_friendly_assert and my_friendly_abort as macros
12381         which may call friendly_abort.  Prototype friendly abort, not
12382         my_friendly_abort or my_friendly_assert.
12383         * decl.c (signal_catch): Report the signal caught in the error
12384         message.  Call fatal directly.
12385         * typeck2.c (ack, my_friendly_assert): Delete.
12386         (my_friendly_abort): Rename to friendly_abort.  Expect file,
12387         line, and function parameters.  Report the abort code, then
12388         call fancy_abort.  Do not mask an abort if errors have
12389         already occurred.
12390
12391 2000-07-18  Nathan Sidwell  <nathan@codesourcery.com>
12392
12393         * typeck.c (comp_target_parms): Remove obsolete parameter.
12394         (comp_target_types): Adjust.
12395
12396 2000-07-17  Jason Merrill  <jason@redhat.com>
12397
12398         * typeck.c (mark_addressable): Never set TREE_USED.
12399         * call.c (build_call): Don't abort on calls to library functions
12400         that have been declared normally.
12401
12402         * typeck.c (build_binary_op): Fix grammar in warning.
12403
12404         * exception.cc (__eh_free): Fix prototype.
12405
12406         * decl2.c (finish_decl_parsing): Handle TEMPLATE_ID_EXPR.
12407
12408         * decl.c (pushdecl): Handle seeing an OVERLOAD in
12409         IDENTIFIER_NAMESPACE_VALUE.
12410
12411 2000-07-16  Mark Mitchell  <mark@codesourcery.com>
12412
12413         * cp-tree.h (THUNK_VCALL_OFFSET): Update documentation.
12414         * method.c (use_thunk): Correct handling of vcall offsets.
12415
12416 2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>
12417
12418         * .cvsignore: parse.h and parse.c have no cp- prefix.
12419
12420 2000-07-13  Mark Mitchell  <mark@codesourcery.com>
12421
12422         * .cvsignore: New file.
12423
12424 2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>
12425
12426         * lang-specs.h: Use the new named specs.  Remove unnecessary braces.
12427
12428 2000-07-12  Mark Mitchell  <mark@codesourcery.com>
12429
12430         * Makefile.in ($(PARSE_H)): Depend directly on parse.y.
12431         * parse.c: Remove.
12432         * parse.h: Likewise.
12433
12434 2000-07-11  Mark Mitchell  <mark@codesourcery.com>
12435
12436         * class.c (layout_class_type): Add pointers to virtual bases after
12437         base classes under the old ABI.
12438
12439 2000-07-10  Benjamin Chelf  <chelf@codesourcery.com>
12440
12441         * semantics.c (finish_for_stmt): Remove call to emit_line_note.
12442         (finish_continue_stmt): Likewise.
12443         (begin_for_stmt): Remove call to note_level_for_for.
12444         (finish_goto_stmt): Change call from build_min_nt
12445         to build_stmt.
12446         (finish_expr_stmt): Likewise.
12447         (begin_if_stmt): Likewise.
12448         (begin_while_stmt): Likewise.
12449         (finish_while_stmt): Likewise.
12450         (finish_return_stmt): Likewise.
12451         (begin_for_stmt): Likewise.
12452         (finish_for_stmt): Likewise.
12453         (finish_break_stmt): Likewise.
12454         (begin_switch_stmt): Likewise.
12455         (finish_case_label): Likewise.
12456         (genrtl_try_block): Likewise.
12457         (begin_try_block): Likewise.
12458         (begin_handler): Likewise.
12459         (begin_compound_stmt): Likewise.
12460         (finish_asm_stmt): Likewise.
12461         (finish_label_stmt): Likewise.
12462         (add_decl_stmt): Likewise.
12463         (finish_subobject): Likewise.
12464         (finish_decl_cleanup): Likewise.
12465         (finish_named_return_value): Likewise.
12466         (setup_vtbl_ptr): Likewise.
12467         (add_scope_stmt): Likewise.
12468         * decl.c (finish_constructor_body): Likewise.
12469         (finish_destructor_body): Likewise.
12470         * optimize.c (copy_body_r): Likewise.
12471         (initialize_inlined_parameters): Likewise.
12472         (declare_return_variable): Likewise.
12473         (expand_call_inline): Likewise.
12474
12475 2000-07-10  Jakub Jelinek  <jakub@redhat.com>
12476
12477         * semantics.c (expand_body): Sync interface information
12478         at the end of function body expansion.
12479
12480 2000-07-09  Jason Merrill  <jason@redhat.com>
12481
12482         * init.c (build_new_1): Bail early if the call to new fails.
12483
12484         * decl.c (compute_array_index_type): Check specifically for
12485         an INTEGER_CST, not just TREE_CONSTANT.
12486
12487         * decl.c (duplicate_decls): Don't call duplicate_decls on
12488         the DECL_TEMPLATE_RESULT.
12489         (decls_match): Return 0 if the DECL_TEMPLATE_RESULTs have different
12490         codes.
12491
12492         * error.c (dump_template_bindings): Don't crash if we had an
12493         invalid argument list.
12494
12495         * typeck.c (c_expand_start_case): Do narrowing here.
12496         * semantics.c (finish_switch_cond): Not here.
12497
12498 2000-07-09  Hidvegi Zoli  <hzoli@austin.ibm.com>
12499
12500         * parse.y (asm_clobbers): Do string concatenation.
12501
12502 2000-07-09  Mark Mitchell  <mark@codesourcery.com>
12503
12504         * decl.c (pushtag): Don't put local classes in template functions
12505         on the local_classes list.
12506
12507 2000-07-04  Scott Snyder  <snyder@fnal.gov>
12508
12509         * decl2.c (get_guard): Add missing return for old ABI local
12510         variable case.
12511
12512 2000-07-09  Mark Mitchell  <mark@codesourcery.com>
12513
12514         * cp-tree.h (char_type_p): New function.
12515         * decl.c (init_decl_processing): Don't initialize
12516         signed_wchar_type_node or unsigned_wchar_type_node.
12517         (complete_array_type): Handle brace-enclosed string-constants.
12518         * rtti.c (emit_support_tinfos): Remove #if 0'd code.
12519         * tree.c (char_type_p): New function.
12520         * typeck2.c (digest_init): Use char_type_p.
12521
12522 2000-07-06  Nathan Sidwell  <nathan@codesourcery.com>
12523
12524         * pt.c (tsubst): Don't layout type, if it's error_mark.
12525
12526 2000-07-06  Nathan Sidwell  <nathan@codesourcery.com>
12527
12528         * pt.c (instantiate_pending_templates): Reset template level.
12529
12530 2000-07-05  Jason Merrill  <jason@redhat.com>
12531
12532         * call.c (joust): Don't complain about `operator char *()' beating
12533         `operator const char *() const'.
12534
12535 2000-07-04  scott snyder  <snyder@fnal.gov>
12536             Jason Merrill  <jason@redhat.com>
12537
12538         * repo.c (repo_get_id): Handle the case where a class with virtual
12539         bases has a null TYPE_BINFO_VTABLE.
12540
12541 2000-07-04  Kevin Buhr  <buhr@stat.wisc.edu>
12542             Jason Merrill  <jason@redhat.com>
12543
12544         * parse.y (member_init): Just pass in the type.
12545         * init.c (expand_member_init): Handle getting a type.
12546
12547 2000-07-04  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
12548             Jason Merrill  <jason@redhat.com>
12549
12550         * decl.c (finish_function): Warn if a function has no return
12551         statement.
12552         Suggested by Andrew Koenig.
12553         * typeck.c (check_return_expr): Do set current_function_returns_value
12554         if we got an error_mark_node.
12555
12556 2000-07-03  Nathan Sidwell  <nathan@codesourcery.com>
12557
12558         * decl2.c (push_decl_namespace): Push the original namespace.
12559
12560 2000-07-03  Nathan Sidwell  <nathan@codesourcery.com>
12561
12562         * pt.c (instantiate_class_template): Set CLASSTYPE_VBASECLASSES.
12563         * semantics.c (begin_class_definition): Clear it.
12564
12565 2000-07-02  Benjamin Chelf  <chelf@codesourcery.com>
12566
12567         * cp-tree.h (genrtl_goto_stmt): Remove declaration.
12568         (genrtl_expr_stmt): Likewise.
12569         (genrtl_decl_stmt): Likewise.
12570         (genrtl_if_stmt): Likewise.
12571         (genrtl_while_stmt): Likewise.
12572         (genrtl_do_stmt): Likewise.
12573         (genrtl_return_stmt): Likewise.
12574         (genrtl_for_stmt): Likewise.
12575         (genrtl_break_stmt): Likewise.
12576         (genrtl_continue_stmt): Likewise.
12577         (genrtl_scope_stmt): Likewise.
12578         (genrtl_switch_stmt): Likewise.
12579         (genrtl_case_label): Likewise.
12580         (genrtl_begin_compound_stmt): Likewise.
12581         (genrtl_finish_compound_stmt): Likewise.
12582         (genrtl_compound_stmt): Likewise.
12583         (genrtl_asm_stmt): Likewise.
12584
12585         * init.c (begin_init_stmts): Remove call to
12586         genrtl_begin_compound_stmt.
12587         (finish_init_stmts): Remove call to genrtl_finish_compound_stmt.
12588
12589         * semantics.c (lang_expand_stmt): Changed call to
12590         genrtl_compound_stmt to ignore return value.
12591
12592 2000-07-02  Mark Mitchell  <mark@codesourcery.com>
12593
12594         * mangle.c (canonicalize_for_substitution): Return the canonical
12595         variant of a type.
12596
12597         * decl.c (duplicate_decls): Preserve DECL_ORIGINAL_TYPE for a
12598         TYPE_DECL.
12599         * typeck.c (commonparms): Remove obstack manipulations.
12600
12601 2000-07-01  Benjamin Chelf  <chelf@codesourcery.com>
12602
12603         * Make-lang.in (cc1plus$(exeext)): Added c-semantics.o.
12604
12605         * Makefile.in (OBJS): Added ../c-semantics.o.
12606         (OBJDEPS): Likewise.
12607
12608         * cp-tree.h (TREE_LANG_FLAG_?): Moved common documentation to
12609         ../c-common.h.
12610         (struct stmt_tree): Added comment.
12611         (current_function_name_declared): Removed.
12612         (stmts_are_full_exprs_p): Likewise.
12613         (genrtl_do_pushlevel): Likewise.
12614         (genrtl_clear_out_block): Likewise.
12615         (COMPOUND_STMT_NO_SCOPE): Moved to ../c-common.h.
12616         (DECL_ANON_UNION_ELEMS): Likewise.
12617         (emit_local_var): Likewise.
12618         (make_rtl_for_local_static): Likewise.
12619         (do_case): Likewise.
12620         (expand_stmt): Likewise.
12621         (genrtl_decl_cleanup): Likewise.
12622         (c_expand_asm_operands): Likewise.
12623         (c_expand_return): Likewise.
12624         (c_expand_start_case): Likewise.
12625
12626         * decl.c (make_rtl_for_local_static): Moved to c-semantics.c.
12627         (emit_local_var): Likewise.
12628         (initialize_local_var): Change reference to
12629         stmts_are_full_exprs_p to call to stmts_are_full_exprs_p().
12630         Change reference to stmts_are_full_exprs_p to
12631         current_stmt_tree->stmts_are_full_exprs_p.
12632         (push_cp_function_context): Likewise.
12633
12634         * expect.c (expand_throw): Change reference to
12635         stmts_are_full_exprs_p.
12636
12637         * init.c (build_aggr_init): Change reference to
12638         stmts_are_full_exprs_p.
12639         (build_vec_init): Likewise.
12640
12641         * optimize.c (maybe_clone_body): Change reference to
12642         current_function_name_declared to
12643         cp_function_chain->name_declared.
12644
12645         * pt.c (instantiate_decl): Change reference to
12646         current_function_name_declared to
12647         cp_function_chain->name_declared.
12648
12649         * semantics.c (expand_cond): Moved declaration to c-common.h.
12650         (genrtl_do_pushlevel): Moved to c-semantics.c.
12651         (genrtl_clear_out_block): Likewise.
12652         (genrtl_goto_stmt): Likewise.
12653         (genrtl_expr_stmt): Likewise.
12654         (genrtl_decl_stmt): Likewise.
12655         (gerntl_if_stmt): Likewise.
12656         (genrtl_while_stmt): Likewise.
12657         (genrtl_do_stmt): Likewise.
12658         (genrtl_return_stmt): Likewise.
12659         (genrtl_for_stmt): Likewise.
12660         (genrtl_break_stmt): Likewise.
12661         (genrtl_continue_stmt): Likewise.
12662         (genrtl_scope_stmt): Likewise.
12663         (genrtl_switch_stmt): Likewise.
12664         (genrtl_case_label): Likewise.
12665         (genrtl_begin_compound_stmt): Likewise.
12666         (genrtl_finish_compound_stmt): Likewise.
12667         (genrtl_compound_stmt): Likewise.
12668         (genrtl_asm_stmt): Likewise.
12669         (genrtl_decl_cleanup): Likewise.
12670         (expand_cond): Likewise.
12671         (expand_stmt): Renamed to ...
12672         (lang_expand_stmt): ... this.
12673         (lang_expand_expr_stmt): Initialize.
12674         (set_current_function_name_declared): Likewise.
12675         (stmts_are_full_exprs_p): Likewise.
12676         (current_function_name_declared): Likewise.
12677         (anon_aggr_type_p): Likewise.
12678         (do_poplevel): Change reference to
12679         stmts_are_full_exprs_p to call to stmts_are_full_exprs_p().
12680         Change reference to stmts_are_full_exprs_p to
12681         current_stmt_tree->stmts_are_full_exprs_p.
12682         (add_tree): Likewise.
12683         (finish_expr_stmt): Likewise.
12684         (prep_stmt): Likewise.
12685         (lang_expand_stmt): Likewise.
12686         (begin_compound_stmt): Change reference to
12687         current_function_name_declared to
12688         cp_function_chain->name_declared and call to
12689         current_function_name_declared().
12690         (setup_vtbl_ptr): Likewise.
12691         (genrtl_do_poplevel): Removed.
12692
12693 2000-06-30  Jason Merrill  <jason@redhat.com>
12694
12695         * init.c (init_init_processing): Go back to aligning like
12696         double_type_node for old ABI.
12697         (get_cookie_size): Make cookie larger if we get a type that needs
12698         more alignment.
12699         (build_vec_delete): Call it.
12700
12701         * typeck.c (qualify_type_recursive): New fn.
12702         (composite_pointer_type): Use it.
12703         (build_binary_op): Use composite_pointer_type.
12704
12705 2000-06-24  Carlos O'Ryan  <coryan@cs.wustl.edu>
12706             Jason Merrill  <jason@redhat.com>
12707
12708         * typeck.c (check_return_expr): Don't complain about returning
12709         NULL from operator new if -fcheck-new.
12710         * cp-tree.h: Declare flag_check_new here.
12711         * init.c: Not here.
12712
12713 2000-06-28  Alex Samuel  <samuel@codesourcery.com>
12714
12715         * mangle.c (find_substitution): Use same_type_p.
12716         (write_encoding): Don't check for substitutions.
12717
12718 2000-06-30  Nathan Sidwell  <nathan@codesourcery.com>
12719
12720         * parse.y (expr_no_comma_rangle): New non-terminal.
12721         (template_parm): Use it for default parameter case.
12722         (template_arg): Use it.
12723         (expr_no_commas): Remove commented out undefined extensions.
12724         * Makefile.in (CONFLICTS): Adjust to 33 s/r & 48 r/r.
12725         * parse.h, parse.c: Rebuilt.
12726
12727 2000-06-30  Mark Mitchell  <mark@codesourcery.com>
12728
12729         * semantics.c (genrtl_asm_stmt): Don't decay input operands here.
12730         (finish_asm_stmt): Do it here, instead.
12731
12732         * cp-tree.h (ridpointers): Don't declare.
12733         * decl.c (record_builtin_type): Use CP_RID_MAX instead of RID_MAX.
12734         (record_builtin_java_type): Likewise.
12735         (init_decl_processing): Likewise.
12736         * lex.c: Move inclusion of lex.h.
12737         (ridpointers): Don't define.
12738         (init_parse): Initialize ripdointers.  Use CP_RID_MAX instead of
12739         RID_MAX.
12740         * lex.h (enum rid): Rename to ...
12741         (enum cp_rid): ... this.
12742         (ridpointers): Don't declare.
12743         * parse.y: Move inclusion of lex.h.
12744         * parse.c: Regenerated.
12745         * spew.c: Move inclusion of lex.h.
12746
12747         * cp-tree.h (struct language_function): Remove temp_name_counter.
12748         (temp_name_counter): Remove.
12749         (get_temp_name): Change prototype.
12750         (get_guard): New function.
12751         (get_guard_cond): Likewise.
12752         (set_guard): Likewise.
12753         * cvt.c (build_up_reference): Adjust call to get_temp_name.
12754         * decl.c (expand_static_init): Use get_guard and friends to
12755         implement guard variables.
12756         * decl2.c (get_temp_name): Assume that the variables created are
12757         always static.
12758         (get_sentry): Rename to ...
12759         (get_guard): ... this.  Implement new ABI guard variables.
12760         (get_guard_bits): New function.
12761         (get_guard_cond): Likewise.
12762         (set_guard): Likewise.
12763         (start_static_initialization_or_destruction): Use them.
12764         (do_static_initialization): Replace sentry with guard throughout.
12765         (do_static_destruction): Likewise.
12766         * init.c (create_temporary_var): Add comment.
12767
12768 2000-06-28  Alex Samuel  <samuel@codesourcery.com>
12769
12770         * mangle.c (find_substitution): Use same_type_p.
12771         (write_encoding): Don't check for substitutions.
12772
12773 2000-06-30  Nathan Sidwell  <nathan@codesourcery.com>
12774
12775         * parse.y (expr_no_comma_rangle): New non-terminal.
12776         (template_parm): Use it for default parameter case.
12777         (template_arg): Use it.
12778         (expr_no_commas): Remove commented out undefined extensions.
12779         * Makefile.in (CONFLICTS): Adjust to 33 s/r & 48 r/r.
12780         * parse.h, parse.c: Rebuilt.
12781
12782 2000-06-29  Mark Mitchell  <mark@codesourcery.com>
12783
12784         * cp-tree.h (flag_const_strings): Remove.
12785         (warn_parentheses): Likewise.
12786         (warn_format): Likewise.
12787         (common_type): Likewise.
12788         (default_conversion): Likewise.
12789         (build_binary_op): Likewise.
12790         (cp_build_binary_op): New macro.
12791         * call.c (build_new_op): Use cp_build_binary_op instead of
12792         build_binary_op.
12793         * class.c (build_vtable_entry_ref): Likewise.
12794         * decl.c (expand_static_init): Likewise.
12795         (compute_array_index_type): Likewise.
12796         (build_enumerator): Likewise.
12797         * decl2.c (delete_sanity): Likewise.
12798         (start_static_initialization_or_destruction): Likewise.
12799         * error.c (dump_type_suffix): Likewise.
12800         * init.c (resolve_offset_ref): Likewise.
12801         (build_new): Likewise.
12802         (build_new_1): Likewise.
12803         (build_vec_delete_1): Likewise.
12804         (build_vec_init): Likewise.
12805         (build_delete): Likewise.
12806         * rtti.c (synthesize_tinfo_fn): Likewise.
12807         (synthesize_tinfo_var): Likewise.
12808         * search.c (expand_upcast_fixups): Likewise.
12809         (fixup_all_virtual_upcast_offsets): Likewise.
12810         * typeck.c (build_array_ref): Likewise.
12811         (get_member_function_from_ptrfunc): Likewise.
12812         (build_binary_op): Add parameter.
12813         (pointer_int_sum): Use cp_build_binary_op.
12814         (pointer_diff): Likewise.
12815         (build_modify_expr): Likewise.
12816         (get_delta_difference): Likewise.
12817         (build_ptrmemfunc): Likewise.
12818
12819 2000-06-29  Nathan Sidwell  <nathan@codesourcery.com>
12820
12821         * cp-tree.h (SET_DECL_ARTIFICIAL): Remove.
12822         * decl.c (create_implicit_typedef): Adjust.
12823         * decl2.c (build_artificial_parm): Adjust.
12824         * method.c (implicitly_declare_fn): Adjust.
12825         * pt.c (push_inline_template_parms_recursive): Adjust.
12826         (process_template_parm): Adjust.
12827         (overloaded_template_name): Adjust.
12828         * semantics.c (finish_template_template_parm): Adjust.
12829
12830 2000-06-28  Mark Mitchell  <mark@codesourcery.com>
12831
12832         * cp-tree.h (CLEAR_BINFO_NEW_VTABLE_MARKED): Remove.
12833         * class.c (update_vtable_entry_for_fn): Correct logic for deciding
12834         where to emit thunks.
12835         (build_vtt): Adjust call to build_vtt_inits.
12836         (build_vtt_inits): Add parameter to indicate whether or not
12837         sub-VTTs for virtual bases should be included.  Adjust handling of
12838         construction vtables.
12839         (get_matching_base): New function.
12840         (dfs_build_vtt_inits): Rename to ...
12841         (dfs_build_secondary_vptr_vtt_inits): Adjust handling of
12842         construction vtables.
12843         (dfs_fixup_binfo_vtbls): Likewise.
12844         (build_ctor_vtbl_groups): Build construction vtables for virtual
12845         bases, too.
12846         (accumulate_vtbl_inits): Tweak logic for deciding whether or not
12847         to build construction vtbls.
12848         (dfs_accumulate_vtbl_inits): Adjust handling of
12849         construction vtables.
12850
12851         * pt.c (tsubst, case TEMPLATE_TEMPLATE_PARM): Handle cv-qualified
12852         types correctly.
12853
12854 2000-06-27  Mark Mitchell  <mark@codesourcery.com>
12855
12856         * decl.c (grokfndecl): Set DECL_CONTEXT for static functions too.
12857
12858 2000-06-26  Nathan Sidwell  <nathan@codesourcery.com>
12859
12860         * search.c (hides): Remove.
12861         (is_subobject_of_p): Add most_derived parameter. Use
12862         CANONICAL_BINFO.
12863         (lookup_field_queue_p): Adjust.
12864         (lookup_field_r): Adjust.
12865
12866 2000-06-26  Nathan Sidwell  <nathan@codesourcery.com>
12867
12868         * decl2.c (handle_class_head): Bash typedefs to the type's main
12869         decl.
12870
12871 2000-06-25  Mark Mitchell  <mark@codesourcery.com>
12872
12873         * cp-tree.h (genrtl_begin_stmt_expr): Rename to ...
12874         (begin_global_stmt_expr): ... this.
12875         (genrtl_finish_stmt_expr): Rename to ...
12876         (finish_global_stmt_expr): ... this.
12877         * init.c (begin_init_stmts): Adjust calls.
12878         (finish_init_stmts): Likewise.
12879         * semantics.c (genrtl_begin_stmt_expr): Rename to ...
12880         (begin_global_stmt_expr): ... this.
12881         (genrtl_finish_stmt_expr): Rename to ...
12882         (finish_global_stmt_expr): ... this.
12883
12884 2000-06-25 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
12885
12886         * search.c (lookup_member): Fix typo in comment.
12887
12888 2000-06-24  Jason Merrill  <jason@redhat.com>
12889
12890         * decl.c (pushdecl): Don't set DECL_CONTEXT from current_namespace.
12891         (push_namespace): Set DECL_CONTEXT for a new NAMESPACE_DECL.
12892
12893 2000-06-24  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
12894
12895         * parse.y (complex_direct_notype_declarator): Support global_scope.
12896         * Makefile.in: Adjust conflict count.
12897
12898 2000-06-23  Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
12899
12900         * parse.y (template_arg): Convert TEMPLATE_DECL
12901         that is a template template parameter to
12902         TEMPLATE_TEMPLATE_PARM here.
12903
12904         * cp-tree.def (TEMPLATE_TEMPLATE_PARM): Adjust comment.
12905         * cp-tree.h (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): New macro.
12906         (copy_template_template_parm): Adjust prototype.
12907         * decl.c (grokdeclarator): Remove dead code.
12908         * pt.c (process_template_parm): Tidy.
12909         (lookup_template_class): Construct nodes in
12910         copy_template_template_parm.
12911         (tsubst): Pass TEMPLATE_DECL rather than IDENTIFIER_NODE to
12912         lookup_template_class.  Use TYPE_TI_TEMPLATE.
12913         * tree.c (copy_template_template_parm): Add NEWARGS
12914         parameter.
12915         (mapcar): Adjust call to copy_template_template_parm.
12916         * typeck.c (comptypes): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL.
12917         * method.c (build_template_template_parm_names): Change error
12918         code to avoid compilation warning.
12919
12920         * gxxint.texi: Document template template parameter
12921         name mangling.
12922
12923 2000-06-21  Alex Samuel  <samuel@codesourcery.com>
12924
12925         * Make-lang.in (CXX_LIB2FUNCS): Add cp-demangle.o and dyn-string.o.
12926         (CXX_LIB2SRCS): Add cp-demangle.c and dyn-string.c.
12927         (cp-demangle.o): New rule.
12928         (dyn-string.o): Likewise.
12929         * inc/cxxabi.h (__cxa_demangle): New declaration.
12930
12931 2000-06-22  Mark Mitchell  <mark@codesourcery.com>
12932
12933         * cp-tree.h (BV_USE_VCALL_INDEX_P): New macro.
12934         (BV_GENERATE_THUNK_WITH_VTABLE_P): Likewise.
12935         (lang_decl_flags): Add generate_with_vtable_p.  Make vcall_offset
12936         a tree, not an int.
12937         (THUNK_GENERATE_WITH_VTABLE_P): New macro.
12938         (make_thunk): Change prototype.
12939         (emit_thunk): Rename to use_thunk.
12940         (mangle_thunk): Change prototype.
12941         * class.c (get_derived_offset): Simplify.
12942         (copy_virtuals): Clear BV_USE_VCALL_INDEX_P and
12943         BV_GENERATE_THUNK_WITH_VTABLE_P.
12944         (build_primary_vtable): Simplify.
12945         (add_virtual_function): Use BV_FN, rather than TREE_VALUE.
12946         (dfs_find_base): Remove.
12947         (update_vtable_entry_for_fn): Correct bug in finding the base
12948         where a virtual function was first declared.  Figure out whether
12949         or not to emit a vcall-thunk with the vtables in which it appears.
12950         Correct logic for deciding whether to use an ordinary thunk, or a
12951         vcall thunk.
12952         (finish_struct_1): Remove unnecssary code.
12953         (build_vtbl_initializer): Use ssize_int for the running counter of
12954         negative indices.
12955         (build_vtbl_initializer): Only use vcall thunks where necessary.
12956         Mark thunks as needing to be emitted with their vtables, or not.
12957         (build_vbase_offset_vtbl_entries): Adjust for use of ssize_int in
12958         indices.  Use size_binop.
12959         (dfs_build_vcall_offset_vtbl_entries): Don't rely on
12960         BINFO_PRIMARY_MARKED_P here.  Use BV_FN consistently.  Use
12961         size_binop.
12962         (build_rtti_vtbl_entries): Adjust call to build_vtable_entry.
12963         (build_vtable_entry): Mark thunks as needing to be emitted with
12964         their vtables, or not.
12965         * decl.c (lang_mark_tree): Mark the vcall_offset in a thunk.
12966         * decl2.c (mark_vtable_entries): Use use_thunk instead of
12967         emit_thunk.
12968         * dump.c (dequeue_and_dump): Remove dead code.  Dump new thunk
12969         information.
12970         * error.c (dump_expr): Use BV_FN.
12971         * mangle.c (mangle_thunk): Adjust now that vcall_offset is a tree,
12972         not an int.
12973         * method.c (make_thunk): Likewise.
12974         (emit_thunk): Rename to use_thunk.  Allow callers to decide
12975         whether or not to actually emit the thunk.  Adjust for changes in
12976         representation of vcall offsets.
12977         * search.c (dfs_get_pure_virtuals): Use BV_FN.
12978         * semantics.c (emit_associated_thunks): New function.
12979         (expand_body): Use it.
12980         * ir.texi: Adjust decriptions of thunks.
12981
12982 2000-06-22  Jason Merrill  <jason@redhat.com>
12983
12984         * pt.c (tsubst_decl, case FUNCTION_DECL): Clear DECL_SAVED_TREE.
12985         (tsubst_friend_function): Copy it here.
12986
12987         * decl.c (grok_op_properties): Fix typo.
12988
12989         * decl2.c (delete_sanity): Clarify warning, avoid failure on
12990         deleting void*.
12991
12992         * pt.c (check_explicit_specialization): Clarify error.
12993
12994         * decl.c (pushdecl): Also pull out one of the FUNCTION_DECLs from
12995         an old OVERLOAD when we're declaring a non-function.
12996         (pushdecl, destroy_local_var): Check for error_mark_node.
12997         (warn_extern_redeclared_static): Also bail early if
12998         we're a CONST_DECL.
12999         (push_overloaded_decl): Ignore an old error_mark_node.
13000
13001 2000-06-22  Nathan Sidwell  <nathan@codesourcery.com>
13002
13003         * call.c (build_x_va_arg): Check if in a template decl.
13004         * pt.c (tsubst_copy, case VA_ARG_EXPR): Use build_x_va_arg.
13005
13006 2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13007
13008         * class.c (push_lang_context): TYPE_NAME gets you to the Java
13009         types DECLs.
13010         * decl.c (check_goto): Computed gotos assumed OK.
13011
13012 2000-06-20  Jason Merrill  <jason@redhat.com>
13013
13014         * pt.c (tsubst_decl, case TYPE_DECL): Fix test for TYPE_DECLs
13015         for which we don't need to look for instantiations.
13016
13017 2000-06-21  Nathan Sidwell  <nathan@codesourcery.com>
13018
13019         * parse.y (program): Always call finish_translation_unit.
13020         * parse.c, parse.h: Rebuilt.
13021
13022 2000-06-20  Zack Weinberg  <zack@wolery.cumb.org>
13023
13024         * method.c: Don't include hard-reg-set.h.
13025
13026 2000-06-20  Nathan Sidwell  <nathan@codesourcery.com>
13027
13028         * rtti.c (get_base_offset): Cope when vbase field is in a base.
13029
13030 2000-06-20  Nathan Sidwell  <nathan@codesourcery.com>
13031
13032         * call.c (build_conditional_expr): Use VOID_TYPE_P.
13033         * cvt.c (cp_convert_to_pointer): Likewise.
13034         (convert_to_void): Likewise.
13035         * error.c (dump_expr): Likewise.
13036         * except.c (complete_ptr_ref_or_void_ptr_p): Likewise.
13037         * init.c (build_delete): Likewise.
13038         * method.c (emit_thunk): Likewise.
13039         * optmize.c (declare_return_variable): Likewise.
13040         * rtti.c (get_tinfo_decl_dynamic): Likewise.
13041         (get_typeid): Likewise.
13042         (build_dynamic_cast_1): Likewise.
13043         * typeck.c (composite_pointer_type): Likewise.
13044         (common_type): Likewise.
13045         (build_indirect_ref): Likewise.
13046         (build_binary_op): Likewise.
13047         (build_x_compound_expr): Likewise.
13048         (check_return_expr): Likewise.
13049         * typeck2.c (add_exception_specifier): Likewise.
13050
13051         * mangle.c (write_method_parms): Use direct comparison for end
13052         of parmlist.
13053
13054 2000-06-19  Benjamin Chelf  <chelf@codesourcery.com>
13055
13056         * cp-tree.h (genrtl_try_block): Declare function.
13057         (genrtl_handler): Likewise.
13058         (genrtl_catch_block): Likewise.
13059         (genrtl_ctor_stmt): Likewise.
13060         (genrtl_subobject): Likewise.
13061         (genrtl_decl_cleanup): Likewise.
13062         (genrtl_do_poplevel): Likewise.
13063         (genrtl_do_pushlevel): Likewise.
13064         (genrtl_clear_out_block): Likewise.
13065         (genrtl_goto_stmt): Likewise.
13066         (genrtl_expr_stmt): Likewise.
13067         (genrtl_decl_stmt): Likewise.
13068         (genrtl_if_stmt): Likewise.
13069         (genrtl_while_stmt): Likewise.
13070         (genrtl_do_stmt): Likewise.
13071         (genrtl_return_stmt): Likewise.
13072         (genrtl_for_stmt): Likewise.
13073         (genrtl_break_stmt): Likewise.
13074         (genrtl_continue_stmt): Likewise.
13075         (genrtl_scope_stmt): Likewise.
13076         (genrtl_switch_stmt): Likewise.
13077         (genrtl_case_label): Likewise.
13078         (genrtl_begin_compound_stmt): Likewise.
13079         (genrtl_finish_compound_stmt): Likewise.
13080         (genrtl_compound_stmt): Likewise.
13081         (genrtl_asm_stmt): Likewise.
13082         (genrtl_named_return_value): Likewise.
13083         (genrtl_begin_stmt_expr): Likewise.
13084         (genrtl_finish_stmt_expr): Likewise.
13085         (finish_for_stmt): Removed first argument.
13086         (finish_switch_stmt): Likewise.
13087
13088         * semantics.c (genrtl_try_block): Define function.
13089         (genrtl_handler): Likewise.
13090         (genrtl_catch_block): Likewise.
13091         (genrtl_ctor_stmt): Likewise.
13092         (genrtl_subobject): Likewise.
13093         (genrtl_decl_cleanup): Likewise.
13094         (genrtl_do_poplevel): Likewise.
13095         (genrtl_do_pushlevel): Likewise.
13096         (genrtl_clear_out_block): Likewise.
13097         (genrtl_goto_stmt): Likewise.
13098         (genrtl_expr_stmt): Likewise.
13099         (genrtl_decl_stmt): Likewise.
13100         (genrtl_if_stmt): Likewise.
13101         (genrtl_while_stmt): Likewise.
13102         (genrtl_do_stmt): Likewise.
13103         (genrtl_return_stmt): Likewise.
13104         (genrtl_for_stmt): Likewise.
13105         (genrtl_break_stmt): Likewise.
13106         (genrtl_continue_stmt): Likewise.
13107         (genrtl_scope_stmt): Likewise.
13108         (genrtl_switch_stmt): Likewise.
13109         (genrtl_case_label): Likewise.
13110         (genrtl_begin_compound_stmt): Likewise.
13111         (genrtl_finish_compound_stmt): Likewise.
13112         (genrtl_compound_stmt): Likewise.
13113         (genrtl_asm_stmt): Likewise.
13114         (genrtl_named_return_value): Likewise.
13115         (genrtl_begin_stmt_expr): Likewise.
13116         (genrtl_finish_stmt_expr): Likewise.
13117         (finish_for_stmt): Removed first argument and generate rtl
13118         specific code.
13119         (finish_switch_stmt): Likewise.
13120         (do_poplevel): Removed generate rtl specific code.
13121         (do_pushlevel): Likewise.
13122         (add_tree): Likewise.
13123         (finish_goto_stmt): Likewise.
13124         (finish_expr_stmt): Likewise.
13125         (begin_if_stmt): Likewise.
13126         (finish_if_stmt_cond): Likewise.
13127         (finish_then_clause): Likewise.
13128         (begin_else_clause): Likewise.
13129         (finish_else_clause): Likewise.
13130         (finish_if_stmt): Likewise.
13131         (clear_out_block): Likewise.
13132         (begin_while_stmt): Likewise.
13133         (finish_while_stmt_cond): Likewise.
13134         (finish_while_stmt): Likewise.
13135         (begin_do_stmt): Likewise.
13136         (finish_do_body): Likewise.
13137         (finish_do_stmt): Likewise.
13138         (finish_return_stmt): Likewise.
13139         (begin_for_stmt): Likewise.
13140         (finish_for_init_stmt): Likewise.
13141         (finish_for_cond): Likewise.
13142         (finish_for_expr): Likewise.
13143         (finish_break_stmt): Likewise.
13144         (finish_continue_stmt): Likewise.
13145         (begin_switch_stmt): Likewise.
13146         (finish_switch_cond): Likewise.
13147         (finish_case_label): Likewise.
13148         (begin_try_block): Likewise.
13149         (begin_function_try_block): Likewise.
13150         (finish_try_block): Likewise.
13151         (finish_cleanup_try_block): Likewise.
13152         (finish_cleanup): Likewise.
13153         (finish_function_try_block): Likewise.
13154         (finish_handler_sequence): Likewise.
13155         (finish_function_handler_sequence): Likewise.
13156         (begin_handler): Likewise.
13157         (finish_handler_parms): Likewise.
13158         (begin_catch_block): Likewise.
13159         (finish_handler): Likewise.
13160         (begin_compound_stmt): Likewise.
13161         (finish_compound_stmt): Likewise.
13162         (finish_asm_stmt): Likewise.
13163         (finish_label_stmt): Likewise.
13164         (finish_label_decl): Likewise.
13165         (finish_subobject): Likewise.
13166         (finish_decl_cleanup): Likewise.
13167         (finish_named_return_value): Likewise.
13168         (begin_stmt_expr): Likewise.
13169         (finish_stmt_expr): Likewise.
13170
13171         * decl.c (initialize_local_var): Changed call to finish_expr_stmt
13172         to call genrtl_expr_stmt when appropriate.
13173
13174         * init.c (begin_init_stmts): Changed calls to begin_stmt_expr and
13175         begin_compound_expr to call genrtl_begin_stmt_expr and
13176         genrtl_begin_compound_expr when appropriate.
13177         (finish_init_stmts): Changed calls to finish_compound_expr and
13178         finish_stmt_expr to call genrtl_finish_compound_expr and
13179         genrtl_finish_stmt_expr when appropriate.
13180         (expand_default_init): Changed call to finish_expr_stmt to call
13181         genrtl_expr_stmt when appropriate.
13182         (build_vec_init): Likewise.
13183
13184         * parse.y (simple_stmt): Removed first argument from call to
13185         finish_for_stmt. Removed first argument from call to
13186         finish_switch_stmt.
13187
13188         * parse.c: Regenerated.
13189
13190         * pt.c (tsubst_expr): Removed first argument from call to
13191         finish_for_stmt. Removed first argument from call to
13192         finish_switch_stmt.
13193
13194 2000-06-16  Benjamin Chelf  <chelf@codesourcery.com>
13195
13196         * cp-tree.h (enum cplus_tree_code): Changed __DUMMY to
13197         CP_DUMMY_TREE_CODE. Remove #include "c-common.def".
13198
13199         * lex.c (cplus_tree_code_type[]): Removed #include "c-common.def".
13200         (cplus_tree_code_length[]): Likewise.
13201         (cplus_tree_code_name[]): Likewise.
13202         (init_parse): Added call to add_c_tree_codes. Changed
13203         LAST_AND_UNUSED_TREE_CODE to LAST_C_TREE_CODE.
13204
13205 2000-06-16  Mark Mitchell  <mark@codesourcery.com>
13206
13207         * cp-tree.h (finish_mem_initializers): Declare.
13208         (count_trees): Likewise.
13209         * parse.y (base_init): Use finish_mem_initializers.
13210         * semantics.c (finish_mem_initializers): New function.
13211
13212         * tree.c (count_trees_r): Prototype.  Use DATA parameter to store
13213         the number of trees.
13214         (n_trees): Remove.
13215         (count_trees): Don't use it.
13216
13217 2000-06-15  Jason Merrill  <jason@redhat.com>
13218
13219         * tree.c (count_trees): New debugging function.
13220
13221         * typeck.c (build_x_function_call): Use DECL_FUNCTION_TEMPLATE_P.
13222         * init.c (build_member_call): Pull out the name of a DECL.
13223
13224         * Makefile.in (semantics.o, pt.o): Depend on TIMEVAR_H.
13225         * semantics.c (expand_body): Push to TV_INTEGRATION here.
13226         * optimize.c (optimize_function): Not here.
13227         * pt.c (instantiate_decl): Push to TV_PARSE.
13228
13229 2000-06-15  Mark Mitchell  <mark@codesourcery.com>
13230
13231         * cp-tree.h (struct language_function): Remove x_base_init_list
13232         and x_member_init_list.
13233         (current_base_init_list): Remove.
13234         (current_member_init_list): Likewise.
13235         (setup_vtbl_ptr): Change prototype.
13236         (emit_base_init): Likewise.
13237         (expand_member_init): Likewise.
13238         (reinit_parse_for_function): Remove.
13239         * decl.c (save_function_data): Don't clear x_base_init_list and
13240         x_member_init_list.
13241         (mark_language_function): Don't mark them.
13242         * init.c (perform_member_init): Tweak comment.
13243         (sort_member_init): Take the list of initializers as an argument.
13244         (sort_base_init): Likewise.
13245         (emit_base_init): Likewise.
13246         (expand_member_init): Return the initializer.  Don't use global
13247         variables.
13248         * lex.c (reinit_parse_for_function): Remove.
13249         * method.c (build_template_parm_names): Correct substitution.
13250         (do_build_copy_constructor): Don't use current_member_init_list
13251         and current_base_init_list.
13252         (synthesize_method): Likewise.
13253         * parse.y (base_init): Split mem-initializers into
13254         base-initializers and field-initializers.
13255         (member_init_list): Build up the list here.
13256         (member_init): Return the initializer.
13257         (fn.depfn): Don't use reinit_parse_for_function.
13258         * parse.c: Regenerated.
13259         * pt.c (convert_nontype_argument): Don't make an ADDR_EXPR of the
13260         ERROR_MARK.
13261         (tsubst_expr): Don't use current_member_init_list
13262         and current_base_init_list.
13263         (tsubst_expr_values): Rename to ...
13264         (tsubst_initializer_list): ... this.  Use convert_from_reference.
13265         * semantics.c (setup_vtbl_ptr): Don't use current_member_init_list
13266         and current_base_init_list.
13267         (begin_function_definition): Don't call reinit_parse_for_function.
13268
13269         * dump.c (dequeue_and_dump): Use TREE_VEC_LENGTH with vectors.
13270
13271         * error.c (dump_expr): Handle ADDR_EXPRs with REFERENCE_TYPE
13272         correctly.
13273
13274         * cp-tree.h (DECL_PENDING_INLINE_P): Relax checking.
13275
13276 2000-06-14  Benjamin Chelf  <chelf@codesourcery.com>
13277
13278         * cp-tree.h (IF_COND): Move to c-common.h.
13279         (THEN_CLAUSE): Likewise.
13280         (ELSE_CLAUSE): Likewise.
13281         (WHILE_COND): Likewise.
13282         (WHILE_BODY): Likewise.
13283         (DO_COND): Likewise.
13284         (DO_BODY): Likewise.
13285         (RETURN_EXPR): Likewise.
13286         (EXPR_STMT_EXPR): Likewise.
13287         (FOR_INIT_STMT): Likewise.
13288         (FOR_COND): Likewise.
13289         (FOR_EXPR): Likewise.
13290         (FOR_BODY): Likewise.
13291         (SWITCH_COND): Likewise.
13292         (SWITCH_BODY): Likewise.
13293         (CASE_LOW): Likewise.
13294         (CASE_HIGH): Likewise.
13295         (GOTO_DESTINATION): Likewise.
13296         (COMPOUND_BODY): Likewise.
13297         (ASM_CV_QUAL): Likewise.
13298         (ASM_STRING): Likewise.
13299         (ASM_OUTPUTS): Likewise.
13300         (ASM_INPUTS): Likewise.
13301         (ASM_CLOBBERS): Likewise.
13302         (DECL_STMT_DECL): Likewise.
13303         (STMT_EXPR_STMT): Likewise.
13304         (LABEL_STMT_LABEL): Likewise.
13305         (SCOPE_BEGIN_P): Likewise.
13306         (SCOPE_END_P): Likewise.
13307         (SCOPE_STMT_BLOCK): Likewise.
13308         (SCOPE_NULLIFIED_P): Likewise.
13309         (SCOPE_NO_CLEANUPS_P): Likewise.
13310         (SCOPE_PARTIAL_P): Likewise.
13311         (ASM_VOLATILE_P): Likewise.
13312         (STMT_LINENO): Likewise.
13313         (STMT_LINENO_FOR_FN_P): Likewise.
13314
13315         * cp-tree.def: Removed SRCLOC, SIZEOF_EXPR, ARROW_EXPR,
13316         ALIGNOF_EXPR, EXPR_STMT, COMPOUND_STMT, DECL_STMT, IF_STMT,
13317         FOR_STMT, WHILE_STMT, DO_STMT, RETURN_STMT, BREAK_STMT,
13318         CONTINUE_STMT, SWITCH_STMT, GOTO_STMT, LABEL_STMT, ASM_STMT,
13319         SCOPE_STMT, CASE_LABEL, STMT_EXPR.
13320
13321         * Makefile.in (CXX_TREE_H): Added $(srcdir)/../c-common.def.
13322
13323         * Make-lang.in (CXX_SRCS): Added $(srcdir)/c-common.def.
13324         (cc1plus$(exeext)): Added $(srcdir)/c-common.def.
13325
13326         * lex.c (cplus_tree_code_type[]): Added '#include "c-common.def"'.
13327         (cplus_tree_code_length[]): Added '#include "c-common.def"'.
13328         (cplus_tree_code_name[]): Added '#include "c-common.def"'.
13329
13330 2000-06-14  Mark Mitchell  <mark@codesourcery.com>
13331
13332         * cp-tree.h (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH): New macro.
13333         * class.c (dfs_find_final_overrider): Set it appropriately.
13334         (dfs_built_vtt_inits): Check BINFO_OVERRIDE_ALONG_VIRTUAL_PATH to
13335         avoid unneeded secondary vptrs.
13336
13337 2000-06-13  Jakub Jelinek  <jakub@redhat.com>
13338
13339         * class.c (build_secondary_vtable): Set DECL_USER_ALIGN.
13340         (check_bitfield_decl, check_field_decl): Likewise.
13341         (build_vtbl_or_vbase_field, build_base_field): Likewise.
13342         (layout_class_type): Set DECL_USER_ALIGN resp. CLASSTYPE_USER_ALIGN.
13343         * decl.c (record_unknown_type): Set TYPE_USER_ALIGN.
13344         (xfer_tag, finish_enum): Likewise.
13345         * decl2.c (finish_builtin_type): Likewise.
13346         * init.c (init_init_processing): Likewise.
13347         * pt.c (instantiate_class_template): Likewise.
13348         * rtti.c (get_tinfo_decl, synthesize_tinfo_fn): Set DECL_USER_ALIGN.
13349         * cp-tree.h (struct lang_type): Add user_align member.
13350         (CLASSTYPE_USER_ALIGN): Define.
13351
13352 Tue Jun 13 15:48:03 2000  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
13353
13354         * Make-lang.in (c++.install-common): Install g++-cross in
13355         $(gcc_tooldir)/bin as g++ and c++; g++ in $(bindir) as
13356         $(target_alias)-g++ and $(target_alias)-c++.
13357
13358 2000-06-12  Mark Mitchell  <mark@codesourcery.com>
13359
13360         * class.c (vcall_offset_data_s): Add last_init and fns.
13361         (overrides): Rename to same_signature_p.
13362         (dfs_find_final_overrider): Adjust accordingly.
13363         (mark_overriders): Likewise.
13364         (warn_hidden): Likewise.
13365         (build_vtbl_initializer): Reorganize machinery for building things
13366         at negative offsets.
13367         (build_vcall_and_vbase_vtbl_entries): Likewise.
13368         (build_vbase_offset_vtbl_entries): Likewise.
13369         (dfs_build_vcall_offset_vtbl_entries): Correct order of vcall
13370         offset entries.  Do not create two entries for functions with the
13371         same signature.
13372         (build_vcall_offset_vtbl_entries): Initialize vod->fns.
13373         (build_rtti_vtbl_entries): Reorganize machinery for building things
13374         at negative offsets.
13375
13376         * optimize.c (expand_call_inline): Don't recurse into the code
13377         used to initialize the parameters more than once.
13378
13379 2000-06-11  Mark Mitchell <mark@codesourcery.com>
13380
13381         * mangle.c (NESTED_TEMPLATE_MATCH): Fix typo in comment.
13382         (is_std_substitution): Don't check CLASSTYPE_USE_TEMPLATE here.
13383         (find_substitution): Only use the `Sa' substitution for
13384         std::allocator, not instantiations of it.
13385         (write_template_prefix): Move comment.  Only use a TREE_LIST to
13386         represent substitutions for a member template.
13387         (write_array_type): Mangle array dimensions correctly.
13388         * optimize.c (maybe_clone_body): Copy more information from the
13389         cloned function.
13390         * pt.c (regenerate_decl_from_template): Preserve DECL_USE_TEMPLATE
13391         on the regenerated declaration.
13392
13393 2000-06-11  Chip Salzenberg  <chip@valinux.com>
13394             Mark Mitchell <mark@codesourcery.com>
13395
13396         * class.c (build_vtable): Clarify comment.
13397         (build_ctor_vtbl_group): Pass the most derived type to
13398         build_vtable.
13399
13400 2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13401
13402         * decl2.c (compare_options): Don't needlessly cast away const-ness.
13403
13404 2000-06-10  Mark Mitchell  <mark@codesourcery.com>
13405
13406         * decl.c (add_binding): Handle duplicate declarations of external
13407         variables.
13408
13409 2000-06-09  Chip Salzenberg  <chip@valinux.com>
13410             Mark Mitchell <mark@codesourcery.com>
13411
13412         * mangle.c (write_number): Take an unsigned HOST_WIDE_INT as an
13413         argument.
13414         (write_signed_number): New macro.
13415         (write_unsigned_number): Likewise.
13416         (write_source_name): Use them.
13417         (write_number): Handle signed and unsigned values.
13418         (write_integer_cst): Use tree_int_cst_sgn, and use
13419         write_unsigned_number or write_signed_number as appropriate.
13420         (write_discriminator): Use write_unsigned_number or
13421         write_signed_number as appropriate.
13422         (write_template_arg_literal): Likewise.
13423         (write_array_type): Use tree_low_cst.
13424         (write_template_parm):  Use write_unsigned_number or
13425         write_signed_number as appropriate.
13426         (write_substitution): Adjust call to write_number.
13427         (write_type): Get the TYPE_MAIN_VARIANT before mangling it.
13428         (write_expression): Handle non-type template arguments of
13429         reference type correctly.
13430         (mangle_thunk): Use write_signed_number.
13431
13432 2000-06-09  Chip Salzenberg  <chip@valinux.com>
13433
13434         * mangle.c (find_substition): Don't mangle objects with typename
13435         substitutions (e.g. "cin" as "Si").
13436
13437 2000-06-09  Zack Weinberg  <zack@wolery.cumb.org>
13438
13439         * call.c (add_candidate): Use ggc_alloc_cleared.
13440         * decl.c (lookup_label): Likewise.
13441         * lex.c (retrofit_lang_decl): Likewise.
13442
13443 2000-06-09  Jason Merrill  <jason@casey.soma.redhat.com>
13444
13445         * semantics.c (expand_body): Push to TV_EXPAND.
13446         * optimize.c (optimize_function): Push to TV_INTEGRATION.
13447         * decl.c (start_function): Always call announce_function.
13448
13449         * tinfo2.cc: Just declare abort.
13450
13451 2000-06-09  Gabriel Dos Reis  <gdr@codesourcery.com>
13452
13453         * lex.c (DEF_OPERATOR): Say `operator@' -not- `operator @'
13454         whenever @ is a symbolic name.
13455
13456 2000-06-08  Jakub Jelinek  <jakub@redhat.com>
13457
13458         * method.c (make_thunk): Clear DECL_VTT_PARM in thunk.
13459
13460 2000-06-07  Mark Mitchell  <mark@codesourcery.com>
13461
13462         * decl.c (pushdecl): Look up functions by DECL_NAME, not
13463         DECL_ASSEMBLER_NAME.
13464
13465 2000-06-06  Mark Mitchell  <mark@codesourcery.com>
13466
13467         * decl2.c (c_language): Define.
13468
13469 2000-06-06  Gabriel Dos Reis  <gdr@codesourcery.com>
13470
13471         * lex.c (lang_init_options): Tweak.
13472
13473         * decl2.c: Remove #inclusion of diagnostic.h
13474         (lang_decode_option): Move diagnostic formatting options to
13475         toplevel.
13476
13477         * lang-options.h: Remove documentation for diagnostic options.
13478
13479         * Makefile.in (lex.o): Depends upon diagnostic.h
13480
13481 2000-06-06  Mark Mitchell  <mark@codesourcery.com>
13482
13483         * decl.c (redeclaration_error_message): If two TEMPLATE_DECLs have
13484         the same DECL_RESULT, it's not a redefinition.
13485         * pt.c (tsubst_decl): Remove code to handle illegal
13486         specializations.
13487
13488 2000-06-06  Nathan Sidwell  <nathan@codesourcery.com>
13489
13490         * exception.cc: (__eh_alloc, __eh_free): Moved to libgcc2.c
13491
13492 2000-06-05  Jason Merrill  <jason@casey.soma.redhat.com>
13493
13494         * search.c (maybe_suppress_debug_info): Don't check
13495         CLASSTYPE_INTERFACE_ONLY if CLASSTYPE_INTERFACE_KNOWN isn't set.
13496
13497         * pt.c (mark_decl_instantiated): Do SET_DECL_EXPLICIT_INSTANTIATION
13498         here if extern_p.
13499
13500         Remember instantiation context in deferred instantiations.
13501         * cp-tree.h (struct tinst_level): Remove.
13502         (TINST_DECL, TINST_LINE, TINST_FILE): New macros.
13503         * pt.c (current_tinst_level): Now a tree.
13504         (print_template_context, push_tinst_level, pop_tinst_level,
13505         tinst_for_decl): Adjust.
13506         (reopen_tinst_level): New fn.
13507         (init_pt): Register current_tinst_level as a root.
13508         (add_pending_template): Put current_tinst_level in TREE_PURPOSE
13509         of the pending templates list.
13510         (instantiate_pending_templates): Adjust.  Call reopen_tinst_level.
13511         * lex.c (extract_interface_info): Adjust.
13512         * decl2.c (warn_if_unknown_interface): Adjust.
13513
13514 2000-06-05  Mark Mitchell  <mark@codesourcery.com>
13515
13516         * class.c (indirect_primary_base_p): New function.
13517         (determine_primary_base): Use it.
13518
13519 2000-06-05  Nathan Sidwell  <nathan@codesourcery.com>
13520
13521         Update new-abi dynamic cast algorithm.
13522         * tinfo.cc (__class_type_info::__dyncast_result): Add
13523         whole_details. Adjust constructor.
13524         (__vmi_class_type_info::__do_dyncast): Adjust for vmi_flags.
13525         Avoid unnecessary searching.
13526         (__dynamic_cast): Adjust for __dyncast_result::whole_details.
13527
13528 Mon Jun  5 06:48:55 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
13529
13530         * decl.c (init_decl_processing): Don't call record_component_aliases.
13531         * tree.c (build_cplus_array_type_1): Likewise.
13532
13533 2000-06-04  Mark Mitchell  <mark@codesourcery.com>
13534
13535         * ir.texi: Correct typo.
13536         * mangle.c (write_expression): Handle non-type template arguments
13537         with reference type.
13538         * method.c (build_overload_value): Likewise.
13539         * pt.c (convert_nontype_argument): Explicitly represent conversion
13540         to a reference with an ADDR_EXPR.
13541         (unify): Always unify arguments in left-to-right order.
13542
13543 2000-06-03  Alex Samuel    <samuel@codesourcery.com>
13544             Mark Mitchell  <mark@codesourcery.com>
13545
13546         * Make-lang.in (CXX_SRCS): Add mangle.c.
13547         * Makefile.in (CXX_OBJS): Add mangle.o.
13548         (mangle.o): New rule.
13549
13550         * class.c (local_classes): New variable.
13551         * class.c (get_vtable_name): Use mangle_vtable_for_type for new ABI.
13552         (get_vtt_name): Use mangle_vtt_name for new ABI.
13553         (init_class_processing): Initialize local_classes.
13554         (build_ctor_vtbl_group): Use mangle_ctor_vtbl_for_type for new ABI.
13555         * cp-tree.h (cp_tree_index): Add CPTI_STD_IDENTIFIER.
13556         (std_identifier): New macro.
13557         (DECL_VOLATILE_MEMFUNC_P): New macro.
13558         (DECL_NAMESPACE_STD_P): Likewise.
13559         (local_classes): Declare.
13560         (get_mostly_instantiated_function_type): Declare.
13561         (init_mangle): Declare.
13562         (mangle_decl): Likewise.
13563         (mangle_type_string): Likewise.
13564         (mangle_type): Likewise.
13565         (mangle_typeinfo_for_type): Likewise.
13566         (mangle_typeinfo_string_for_type): Likewise.
13567         (mangle_vtbl_for_type): Likewise.
13568         (mangle_vtt_for_type): Likewise.
13569         (mangle_ctor_vtbl_for_type): Likewise.
13570         (mangle_thunk): Likewise.
13571         (mangle_conv_op_name_for_type): Likewise.
13572         (mangle_guard_variable): Likewise.
13573         * decl.c (pushtag): Keep track of local classes.
13574         (initialize_predefined_identifiers): Initialize std_identifier.
13575         (init_decl_processing): Use std_identifier.
13576         (start_decl): Don't treat instantiations as specializations.
13577         (grokdeclarator): Likewise.
13578         (grokvardecl): Call mangle_decl for new ABI.  Only set mangled
13579         name for fully-instantiated templates.
13580         * decl2.c (grokclassfn): Use set_mangled_name_for_decl for
13581         destructors with the new ABI.
13582         (finish_static_data_member_decl): Use mangle_decl under the new ABI.
13583         (grokfield): Use mangle_type for new ABI.
13584         (grokoptypename): Use mangle_conv_op_for_type for new ABI.
13585         (get_sentry): Use mangle_guard_variable for new ABI.
13586         (start_static_initialization_or_destruction): Likewise.
13587         * expr.c (extract_aggr_init): Remove.
13588         (extract_scalar_init): Likewise.
13589         (extract_init): Remove #if 0'd code.
13590         * mangle.c: New function.
13591         * method.c (build_mangled_name): Assert not flag_new_abi.
13592         (build_static_name): Likewise.
13593         (build_decl_overload_real): Likewise.
13594         (build_typename_overload): Likewise.
13595         (build_overload_with_type): Likewise.
13596         (build_overload_name): Likewise.
13597         (get_ctor_vtbl_name): Likewise.
13598         (start_squangling): Likewise.
13599         (get_id_2): Likewise.
13600         (set_mangled_name_for_decl): Call mangle_decl for new ABI.
13601         (init_method): Call init_mangle for new ABI.
13602         (make_thunk): Call mangle_thunk for new ABI.
13603         * operators.def: Correct new ABI manglings for the `%' operator.
13604         Add `::' operator.
13605         * pt.c (build_template_decl): Copy DECL_OVERLOADED_OPERATOR_P and
13606         DECL_ASSIGNMENT_OPERATOR_P to the TEMPLATE_DECL.
13607         (lookup_template_class): Call mangle_decl for new ABI.
13608         (get_mostly_instantiated_function_type): New function.
13609         (set_mangled_name_for_template_decl): Use it.
13610         (tsubst_decl): Use set_mangled_name_for_decl for destructors with
13611         the new ABI.  Use mangle_conv_op_name_for_type for instantiated
13612         conversion op names.
13613         * rtti.c (tinfo_name): Call mangle_type_string for new ABI.
13614         (get_tinfo_decl): Call mangle_typeinfo_for_type for new ABI.
13615         (tinfo_base_init):  Likewise.  Mangle typeinfo string name with
13616         mangle_typeinfo_string_for_type.
13617
13618 2000-06-03  Mark Mitchell  <mark@codesourcery.com>
13619
13620         * cp-tree.h (TMPL_ARGS_LEVEL): Clarify comment.
13621         (INNERMOST_TEMPLATE_ARGS): New macro.
13622         (innermost_args): Remove.
13623         (get_innermost_template_args): New function.
13624         * decl2.c (arg_assoc_class): Use INNERMOST_TEMPLATE_ARGS.
13625         * error.c (dump_function_decl): Be caution when using
13626         most_general_template.
13627         * method.c (build_template_parm_names):  Use
13628         INNERMOST_TEMPLATE_ARGS.
13629         * pt.c (add_to_template_args): Tidy comment
13630         (get_innermost_template_args): New function.
13631         (check_explicit_specialization): Clear DECL_INITIAL for a new
13632         specialization.
13633         (process_partial_specialization): Use INNERMOST_TEMPLATE_ARGS.
13634         Tidy.
13635         (push_template_decl): Always register specializations of the most
13636         general template.
13637         (convert_template_argument): Use INNERMOST_TEMPLATE_ARGS.
13638         (coerce_template_parms): Likewise.
13639         (lookup_template_class): Likewise.
13640         (innermost_args): Remove.
13641         (tsubst_decl): Use INNERMOST_TEMPLATE_ARGS.
13642         (tsubst_decl): Handle tricky specializations.  Use
13643         get_innermost_template_args.
13644         (instantiate_template): Simplify handling of partial
13645         instantiations.
13646         (get_class_bindings): Use INNERMOST_TEMPLATE_ARGS.
13647         (most_general_template): Reimplement, in a more straightforward
13648         manner.
13649         (regenerate_decl_from_template): Tweak formatting.  Use
13650         TMPL_ARGS_DEPTH for clarity.
13651         (set_mangled_name_for_template_decl): Use INNERMOST_ARGS.
13652
13653         * dump.c (dequeue_and_dump): Dump information about thunks.
13654
13655 2000-06-01  Richard Henderson  <rth@cygnus.com>
13656
13657         * decl.c (init_decl_processing): Set lang_get_alias_set first thing.
13658
13659 2000-06-01  Richard Henderson  <rth@cygnus.com>
13660
13661         * decl2.c (unsupported_options): Fix typo, make const.
13662         (lang_decode_option): Fix bsearch argument order.
13663
13664 2000-06-01  Mark Mitchell  <mark@codesourcery.com>
13665
13666         * init.c (resolve_offset_ref): Remove check for TREE_ADDRESSABLE
13667         on FIELD_DECLs.
13668
13669 Wed May 31 14:09:00 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
13670
13671         * cp-tree.h (c_get_alias_set): Deleted.
13672         * Makefile.in (decl.o): Include ../expr.h.
13673         * decl.c (expr.h): Include.
13674         (init_decl_processing): Call record_component_aliases for arrays.
13675         (grokdeclarator): Likewise.
13676         Set TREE_ADDRESSABLE for fields that aren't bitfields.
13677         * tree.c (build_cplus_array_type_1): Call record_component_aliases.
13678
13679 2000-05-31  Mark Mitchell  <mark@codesourcery.com>
13680
13681         Remove guiding declaration support.
13682         * cp/cp-tree.h (flag_dump_translation_unit): Make it const.
13683         (flag_guiding_decls): Remove.
13684         * call.c (build_user_type_conversion_1): Remove support for
13685         guiding decls.
13686         (build_new_function_call): Likewise.
13687         (build_new_op): Likewise.
13688         (build_new_method_call): Likewise.
13689         * decl.c (start_function): Likewise.
13690         * friend.c (is_friend): Likewise.
13691         (do_friend): Likewise.
13692         * decl2.c ((flag_dump_translation_unit): Make it const.
13693         (flag_guiding_decls): Remove.
13694         (unsupported_options): New variable
13695         (compare_options): New function.
13696         (lang_decode_option): Use them.
13697
13698         * decl.c (build_cp_library_fn): Set DECL_CONTEXT.
13699
13700         * method.c (mangle_expression): Adjust test for legal expression
13701         operators.
13702
13703         * pt.c (instantiate_decl): Save and restore the local
13704         specializations list.
13705
13706 2000-05-30  Jason Merrill  <jason@decepticon.cygnus.com>
13707
13708         * decl.c (grok_reference_init): Pass LOOKUP_ONLYCONVERTING.
13709
13710 2000-05-30  Mark Mitchell  <mark@codesourcery.com>
13711
13712         * call.c (add_template_candidate_real): Handle member template
13713         constructors for classes with virtual bases.
13714         (build_user_type_conversion_1): Use in_charge_arg_for_name.
13715         (build_new_method_call): Use DECL_NONSTATIC_MEMBER_FUNCTION_P.
13716
13717         * ir.texi: Update thunk documentation.
13718
13719         * call.c (joust): Fix handling of overloaded builtin operators.
13720
13721 2000-05-30  Zack Weinberg  <zack@wolery.cumb.org>
13722
13723         * cp-tree.h (DECL_ANTICIPATED): New macro.
13724         Document new use of DECL_LANG_FLAG_7.
13725         * decl.c (builtin_function): Set DECL_ANTICIPATED on builtins
13726         in the user namespace.
13727         * lex.c (do_identifier): If the identifier's declaration has
13728         DECL_ANTICIPATED on, it has not yet been declared.  But do not
13729         replace it with an ordinary implicit declaration.
13730
13731         * tinfo2.cc: Include stdlib.h.
13732
13733 2000-05-29  Mark Mitchell  <mark@codesourcery.com>
13734
13735         * cp-tree.h (CLASSTYPE_ALIGN_UNIT): New macro.
13736         * class.c (layout_empty_base): Use CLASSTYPE_ALIGN_UNIT, not
13737         CLASSTYPE_ALIGN.
13738
13739 2000-05-28  Gabriel Dos Reis  <gdr@codesourcery.com>
13740
13741         * decl2.c (lang_decode_option): Use skip_leading_substring instead
13742         of plain strncmp.
13743
13744 2000-05-28  Alexandre Oliva  <aoliva@cygnus.com>
13745
13746         * operators.def (<?): Duplicated, should have been...
13747         (>?): this.  Fixed.
13748
13749 2000-05-27  Alex Samuel    <samuel@codesourcery.com>
13750             Mark Mitchell  <mark@codesourcery.com>
13751
13752         * cp-tree.h (ansi_opname): Make it a macro.
13753         (ansi_assopname): Likewise.
13754         (struct lang_decl_flags): Add assignment_operator_p.
13755         (struct lang_decl): Add operator_code.
13756         (DECL_VTT_PARM): Adjust.
13757         (DECL_OVERLOADED_OPERATOR_P): Return the operator_code for an
13758         overloaded operator.
13759         (SET_OVERLOADED_OPERATOR_CODE): New macro.
13760         (DECL_ASSIGNMENT_OPERATOR_P): New macro.
13761         (DECL_ARRAY_DELETE_OPERATOR_P): Adjust.
13762         (opname_tab): Remove.
13763         (assignop_tab): Likewise.
13764         (operator_name_info_t): New type.
13765         (operator_name_info): New variable.
13766         (assignment_operator_name_info): Likewise.
13767         (build_cp_library_fn): Remove declaration.
13768         (push_cp_library_fn): Likewise.
13769         (operator_name_string): Likewise.
13770         (build_decl_overload): Likewise.
13771         * call.c (print_z_candidates): Simplify.
13772         (build_object_call): Adjust usage of ansi_opname.  Use
13773         DECL_OVERLOADED_OPERATOR_P.
13774         (op_error): Adjust operator name lookup.
13775         (build_conditional_expr): Adjust usage of ansi_opname.
13776         (build_new_op): Likewise.
13777         (build_op_delete_call): Likewise.
13778         (build_over_call): Likewise.
13779         (joust): Use DECL_OVERLOADED_OPERATOR_P.
13780         * decl.c (duplicate_decls): Copy operator_code.
13781         (init_decl_processing): Adjust parameters to push_cp_library_fn.
13782         (builtin_function): Adjust parameters to build_library_fn_1.
13783         (build_library_fn_1): Accept an overloaded operator code.
13784         (build_library_fn): Pass ERROR_MARK.
13785         (build_cp_library_fn): Accept an overloaded operator code.
13786         (push_cp_library_fn): Likewise.
13787         (grokfndecl): Tweak.
13788         (grokdeclarator): Simplify code to compute names of overloaded
13789         operators.  Adjust use of ansi_opname.
13790         (ambi_op_p): Work on tree_codes, not identifiers.
13791         (unary_op_p): Likewise.
13792         (grok_op_properties): Likewise.
13793         (start_function): Use DECL_OVERLOADED_OPERATOR_P.
13794         (lang_mark_tree): Don't try to mark the operator_code.
13795         * decl2.c (grok_function_init): Use DECL_OVERLOADED_OPERATOR_P.
13796         * error.c (dump_decl): Remove special handling for operator
13797         names.
13798         (dump_function_name): Likewise.
13799         (dump_expr): Adjust name lookup of operators.
13800         (op_to_string): Simplify.
13801         (assop_to_string): Likewise.
13802         * init.c (build_new_1): Adjust use of ansi_opname.
13803         * lex.c (opname_tab): Remove.
13804         (assignop_tab): Likewise.
13805         (ansi_opname): Likewise.
13806         (ansi_assopname): Likewise.
13807         (operator_name_string): Likewise.
13808         (reinit_lang_specific): Likewise.
13809         (operator_name_info): New variable.
13810         (assignment_operator_name_info): Likewise.
13811         (init_operators): New function.
13812         (init_parse): Use it.
13813         (do_identifier): Adjust use of ansi_opname.
13814         * method.c (mangle_expression): Don't use ansi_opname for
13815         mangling.
13816         (build_decl_overload_real): Use DECL_OVERLOADED_OPERATOR_P.
13817         (build_decl_overload): Remove.
13818         (build_typename_overload): Use OPERATOR_TYPENAME_FORMAT directly.
13819         (do_build_assign_ref): Adjust use of ansi_opname.
13820         (synthesize_method): Likewise.
13821         (implicitly_declare_fn): Likewise.
13822         * operators.def: New file.
13823         * parse.y (operator): Adjust use of ansi_opname.
13824         * pt.c (tsubst_decl): Use IDENTIFIER_OPNAME_P.
13825         (set_mangled_name_for_template_decl): Don't play games with
13826         current_namespace.
13827         (special_function_p): Adjust use of ansi_opname.
13828         * typeck.c (check_return_expr): Likewise.
13829         * Make-lang.in (cc1plus): Depend on operators.def.
13830         * Makefile.in (lex.o): Likewise.
13831         (decl.o): Likewise.
13832
13833 2000-05-27  Zack Weinberg  <zack@wolery.cumb.org>
13834
13835         * Make-lang.in (cplib2.ready): Eradicate.
13836
13837 Sat May 27 11:25:46 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
13838
13839         * method.c (mangle_expression): Use TREE_CODE_LENGTH.
13840         * tree.c (break_out_calls, build_min_nt): Use TREE_CODE_LENGTH.
13841         (built_min, cp_tree_equal): Likewise.
13842
13843 2000-05-26  Mark Mitchell  <mark@codesourcery.com>
13844
13845         * class.c (layout_nonempty_base_or_field): Replace
13846         `record_layout_info' with `record_layout_info_s'.
13847
13848 2000-05-26  Jason Merrill  <jason@casey.soma.redhat.com>
13849
13850         Fix goto checking.
13851         * cp-tree.h (struct language_function): x_named_labels is now
13852         a struct named_label_list*.
13853         * decl.c (struct named_label_use_list): Renamed from...
13854         (struct named_label_list): ...this.  New struct.
13855         (push_binding_level): Don't set eh_region.
13856         (note_level_for_eh): New fn.
13857         (pop_label): Take label and old value directly.
13858         (pop_labels): Adjust for new named_labels format.
13859         (lookup_label): Likewise.
13860         (poplevel): Note characteristics of a binding level containing a
13861         named label.  Mess with named label lists earlier.
13862         (mark_named_label_lists): New fn.
13863         (mark_lang_function): Call it.
13864         (use_label): New fn, split out from...
13865         (make_label_decl): ...here.  Don't call it.
13866         (decl_jump_unsafe, check_previous_goto, check_previous_goto_1,
13867         check_previous_gotos): New fns, split out from...
13868         (define_label): ...here.
13869         (check_switch_goto): New fn.
13870         (define_case_label): Call it.
13871         (check_goto): New fn.
13872         * semantics.c (finish_goto_stmt): Call it and use_label.
13873         (begin_compound_stmt): If we're a try block, call note_level_for_eh.
13874         (expand_stmt): Never pass 1 as DONT_JUMP_IN to expand_end_bindings.
13875
13876 2000-05-26  Mark Mitchell  <mark@codesourcery.com>
13877
13878         * class.c (build_vtable_entry_ref): Correct usage of
13879         get_vtbl_decl_for_binfo.
13880
13881         * decl2.c (grokclassfn): Set DECL_LANGUAGE here.
13882         * method.c (implicitly_declare_fn): Not here.
13883
13884 2000-05-26  Nathan Sidwell  <nathan@codesourcery.com>
13885
13886         * cp-tree.h (CPTI_PTMD_DESC_TYPE): Rename to ...
13887         (CPTI_PTMD_DESC_TYPE): ... here.
13888         (ptmd_desc_type_node): Rename to ...
13889         (ptm_desc_type_node): ... here.
13890         * decl.c: Likewise.
13891         * rtti.c (ptmd_initializer): Rename to ...
13892         (ptm_initializer): ... here.
13893         (sythesize_tinfo_var): Adjust. Deal with pointer to member
13894         function.
13895         (create_tinfo_types): Adjust.
13896
13897 2000-05-25  Mark Mitchell  <mark@codesourcery.com>
13898
13899         Finish implementation of VTTs.
13900         * cp-tree.h (cp_tree_index): Add CPTI_VTT_PARM_TYPE and
13901         CPTI_VTT_PARM_IDENTIFIER.
13902         (vtt_parm_identifier): New macro.
13903         (vtt_parm_type): Likewise.
13904         (BINFO_SUBVTT_INDEX): Likewise.
13905         (BINFO_VPTR_INDEX): Likewise.
13906         (struct lang_decl): Add vtt_parm.
13907         (DECL_VTT_PARM): New macro.
13908         (DECL_USE_VTT_PARM): Likewise.
13909         (DECL_NEEDS_VTT_PARM_P): Likewise.
13910         (get_vtt_name): Declare.
13911         (build_artificial_parm): Likewise.
13912         (fixup_all_virtual_upcast_offsets): Likewise.
13913         (expand_indirect_vtbls_init): Remove.
13914         * call.c (build_new_method_call): Pass the vtt to subobject
13915         constructors and destructors.
13916         * class.c (get_vtt_name): Give it external linkage.
13917         (build_clone): Handle the magic VTT parameters for clones.
13918         (clone_function_decl): Fix typo in comment.
13919         (build_vtt): Keep track of the indices in the VTTs where various
13920         entities are stored.
13921         (build_vtt_inits): Likewise.
13922         (dfs_build_vtt_inits): Likewise.
13923         (build_ctor_vtbl_group): Tweak type of construction vtables.
13924         (dfs_accumulate_vtbl_inits): Build vtables for all bases, even
13925         primary bases, when building construction vtables.
13926         * decl.c (duplicate_decls): Handle DECL_VTT_PARM.
13927         (initialize_predefined_identifiers): Add vtt_parm_identifier.
13928         (init_decl_processing): Initialize vtt_parm_type.
13929         (grokfndecl): Use DECL_OVERLOADED_OPERATOR_P.
13930         (lang_mark_tree): Make vtt_parm.
13931         * decl2.c (build_artificial_parm): New function.
13932         (maybe_retrofit_in_chrg): Use it.  Add VTT parameters.
13933         (grokclassfn): Use build_artificial_parm.
13934         * init.c (initialize_vtbl_ptrs): Call
13935         fixup_all_virtual_upcast_offsets directly.
13936         (perform_member_init): Use the complete subobject destructor for
13937         member cleanups.
13938         (build_vtbl_address): New function.
13939         (expand_virtual_init): Handle VTTs.
13940         * optimize (maybe_clone_body): Likewise.
13941         * search.c (fixup_all_virtual_upcast_offsets): Give it external
13942         linkage.
13943         (expand_indirect_vtbls_init): Remove.
13944         * semantics.c (setup_vtbl_ptr): Fix typos in comment.
13945         * tree.c (make_binfo): Make them bigger.
13946
13947 2000-05-25  Nathan Sidwell  <nathan@codesourcery.com>
13948
13949         * inc/cxxabi.h (__pbase_type_info): Define, based on
13950         __pointer_type_info.
13951         (__pointer_type_info): Derive from __pbase_type_info. Adjust.
13952         (__pointer_to_member_type_info): Likewise.
13953         * tinfo2.cc (__pbase_type_info::~__pbase_type_info): Implement.
13954         (__pointer_to_member_type_info::__is_pointer_p): Remove.
13955         (__pointer_type_info::__do_catch): Rename to ...
13956         (__pbase_type_info::__do_catch): ... here. Adjust.
13957         (__pbase_type_info::__pointer_catch): Implement.
13958         (__pointer_type_info::__pointer_catch): Adjust.
13959         (__pointer_to_member_type_info::__pointer_catch): Adjust.
13960
13961 2000-05-25  Nathan Sidwell  <nathan@codesourcery.com>
13962
13963         * tinfo.h (__user_type_info::contained_virtual_p): New
13964         predicate.
13965         * tinfo.cc (__user_type_info::do_upcast): Fix bug with diamond
13966         shaped hierarchy.
13967         (__vmi_class_type_info::__do_upcast): Fix bug with NULL pointer to
13968         diamond shaped hierarchy. Add early out for mixed diamond and
13969         duplicate shaped hierarchy.
13970
13971 2000-05-24  Mark Mitchell  <mark@codesourcery.com>
13972
13973         * cp-tree.h (build_delete): Change prototype.
13974         (build_vec_delete): Likewise.
13975         * call.c (build_scoped_method_call): Use special_function_kind
13976         values to indicate the kind of destruction to be done.
13977         (build_method_call): Likewise.
13978         * decl.c (finish_destructor_body): Likewise.
13979         (maybe_build_cleanup_1): Likewise.  Rename to ...
13980         (maybe_build_cleanup): ... this.
13981         * decl2.c (delete_sanity): Use special_function_kind
13982         values to indicate the kind of destruction to be done.
13983         (build_cleanup): Likewise.
13984         * init.c (perform_member_init): Likewise.
13985         (build_vec_delete_1): Likewise.
13986         (build_dtor_call): Simplify.
13987         (build_delete): Use special_function_kind
13988         values to indicate the kind of destruction to be done.
13989         (build_vbase_delete): Likewise.
13990         (build_vec_delete): Likewise.
13991
13992         * init.c (sort_member_init): Fix typo in error message generation
13993         code.
13994
13995 Mon May 15 11:46:29 2000  Donald Lindsay  <dlindsay@cygnus.com>
13996
13997         * semantics.c (begin_class_definition): make the packed
13998         attribute be sensitive to the "-fpack-struct" command line flag
13999
14000 2000-05-24  Nathan Sidwell  <nathan@codesourcery.com>
14001
14002         Update new-abi upcast algorithm.
14003         * inc/cxxabi.h (__class_type_info::__do_upcast): Change
14004         prototype and meaning of return value.
14005         (__si_class_type_info::__do_upcast): Likewise.
14006         (__vmi_class_type_info::__do_upcast): Likewise.
14007         * tinfo.cc (__class_type_info::__upcast_result): Replace
14008         whole2dst with part2dst. Adjust ctor.
14009         (__class_type_info::__do_upcast): Adjust call of worker function.
14010         (__class_type_info::__do_upcast): Adjust.
14011         (__si_class_type_info::__do_upcast): Adjust. Use parent's
14012         __do_upcast.
14013         (__vmi_class_type_info::__do_upcast): Likewise. Fix private
14014         virtual base in diamond hierarchy bug.
14015
14016 2000-05-23  Mark Mitchell  <mark@codesourcery.com>
14017
14018         * cp-tree.h (lang_decl_flags): Rename mutable_flag to uninlinable
14019         and bitfield to tinfo_fn_p.
14020         (DECL_TINFO_FN_P): Adjust.
14021         (SET_DECL_TINFO_FN_P): Likewise.
14022         (DECL_MUTABLE_P): Likewise.
14023         (DECL_C_BIT_FIELD): Likewise.
14024         (SET_DECL_C_BIT_FIELD): Likewise.
14025         (CLEAR_DECL_C_BIT_FIELD): Likewise.
14026         (DECL_UNINLINABLE): Likewise.
14027         * class.c (alter_access): Call retrofit_lang_decl if ncessary.
14028         (handle_using_decl): Remove assertion.
14029         (build_vtbl_or_vbase_field): Use build_decl, not build_lang_decl,
14030         to build FIELD_DECLs.
14031         (build_base_field): Likewise.
14032         (layout_class_type): Likewise.
14033         * decl.c (init_decl_processing): Likewise.
14034         (build_ptrmemfunc_type): Likewise.
14035         (grokdeclarator): Likewise.
14036         * decl2.c (grok_x_components): Likewise.
14037         * except.c (call_eh_info): Likewise.
14038         * init.c (init_init_processing): Likewise.
14039         * rtti.c (expand_class_desc): Likewise.
14040         (create_pseudo_type_info): Likewise.
14041         (get_vmi_pseudo_type_info): Likewise.
14042         (create_tinfo_types): Likewise.
14043         * ptree.c (print_lang_decl): Adjust.
14044         * typeck.c (build_component_ref): Don't check DECL_LANG_SPECIFIC
14045         before checking DECL_MUTABLE_P.
14046
14047         * decl2.c (maybe_retrofit_in_chrg): Don't create in-charge
14048         parameters for template functions.
14049         * pt.c (tsubst_decl): Make sure we call maybe_retrofit_in_chrg for
14050         destructors as well as constructors.
14051
14052 2000-05-22  Mark Mitchell  <mark@codesourcery.com>
14053
14054         * class.c (build_ctor_vtbl_group): Set inits.
14055         * optimize.c (maybe_clone_body): Set DECL_INLINE and
14056         DECL_THIS_INLINE appropriately for clones.
14057
14058         * cp-tree.h (IDENTIFIER_TYPENAME_P): Use a flag, not strncmp.
14059         (DECL_CONV_FN_P): Simplify.
14060         (DECL_OPERATOR): Remove.
14061         (language_to_string): Declare.
14062         * decl.c (duplicate_decls): Fix typo in comment.
14063         (grokdeclarator): Adjust use of IDENTIFIER_TYPENAME_P.
14064         (grok_op_properties): Use DECL_CONV_FN_P instead of
14065         IDENTIFIER_TYPENAME_P.
14066         * dump.c (dequeue_and_dump): Dump the language linkage of
14067         declarations.
14068         * error.c (language_to_string): Give it external linkage.
14069         * method.c (build_typename_overload): Set IDENTIFIER_TYPENAME_P.
14070         (implicitly_declare_fn): Set DECL_LANGUAGE.
14071         * pt.c (check_explicit_specialization): Use DECL_CONV_FN_P, not
14072         IDENTIFIER_TYPENAME_P.
14073         (tsubst_decl): Likewise.
14074         (tsubst_copy): Adjust use of IDENTIFIER_TYPENAME_P.
14075         * semantics.c (finish_member_declaration): Don't mark members of
14076         classes declared in an extern "C" region as extern "C".
14077
14078 2000-05-22  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
14079
14080         * decl2.c (qualified_lookup_using_namespace): Look through
14081         namespace aliases.
14082
14083         * decl.c (push_using_decl): Return the old decl on namespace level.
14084
14085 2000-05-21  Mark Mitchell  <mark@codesourcery.com>
14086
14087         * cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Add sanity checks.
14088         (VTT_NAME_PREFIX): New macro.
14089         (CTOR_VTBL_NAME_PREFIX): Likewise.
14090         (get_ctor_vtbl_name): New function.
14091         * class.c (get_vtable_name): Simplify.
14092         (get_vtt_name): New function.
14093         (get_vtable_decl): Don't set IDENTIFIER_GLOBAL_VALUE.
14094         (dfs_mark_primary_bases): Update the CLASSTYPE_VBASECLASSES list
14095         when a virtual base becomes primary.
14096         (finish_struct_1): Set CLASSTYPE_VFIELDS a little earlier.  Build
14097         VTTs.
14098         (finish_vtbls): Adjust calls to accumulate_vtbl_inits to pass in
14099         additional parameters.
14100         (dfs_finish_vtbls): Don't clear BINFO_NEW_VTABLE_MARKED.
14101         (initialize_array): New function.
14102         (build_vtt): Likewise.
14103         (build_vtt_inits): Likewise.
14104         (dfs_build_vtt_inits): Likewise.
14105         (dfs_fixup_binfo_vtbls): Likewise.
14106         (build_ctor_vtbl_group): Likewise.
14107         (initialize_vtable): Use initialize_array.
14108         (accumulate_vtbl_inits): Reimplement to handle construction
14109         vtables.
14110         (dfs_accumulate_vtbl_inits): Likewise.
14111         (bulid_vtbl_initializer): Adjust parameter name.
14112         * method.c (build_typename_overload): Remove #if 0'd code.
14113         (get_ctor_vtbl_name): New function.
14114         * search.c (dfs_walk_real): Use BINFO_N_BASETYPES.
14115         (init_vbase_pointers): Don't mess with the TREE_CHAIN of a binfo.
14116
14117         * cp-tree.h (struct lang_type): Remove search_slot.
14118         (CLASSTYPE_SEARCH_SLOT): Remove.
14119         (emit_base_init): Change prototype.
14120         (initialize_vtbl_ptrs): Likewise.
14121         (expand_indirect_vtbls_init): Likewise.
14122         (clear_search_slots): Remove.
14123         * decl.c (lang_mark_tree): Don't mark search_slot.
14124         * init.c (initialize_vtbl_ptrs): Simplify.
14125         (emit_base_init): Likewise.
14126         * search.c (struct vbase_info): Document decl_ptr.
14127         (convert_pointer_to_single_level): Remove.
14128         (dfs_find_vbases): Remove.
14129         (dfs_init_base_pointers): Simplify.
14130         (dfs_clear_vbase_slots): Remove.
14131         (dfs_vtable_path_unmark): New function.
14132         (init_vbase_pointers): Simplify.
14133         (expand_upcast_fixups): Don't rely on CLASSTYPE_SEARCH_SLOT.
14134         (expand_indirect_vtbls_init): Simplify.  Don't call
14135         mark_all_temps_used.
14136         * semantics.c (setup_vtbl_ptr): Adjust calls to emit_base_init and
14137         initialize_vtbl_ptrs.
14138
14139 2000-05-20  Zack Weinberg  <zack@wolery.cumb.org>
14140
14141         * except.c: Add static prototypes.
14142
14143 2000-05-20  H.J. Lu  <hjl@gnu.org>
14144
14145         * Make-lang.in (cplib2.ready): Also depend on cc1plus$(exeext).
14146
14147 2000-05-19  Mark Mitchell  <mark@codesourcery.com>
14148
14149         Don't create a separate copy of virtual bases for the
14150         CLASSTYPE_VBASECLASSES list.
14151         * cp-tree.h (CLASSTYPE_VBASECLASSES): Change documentation.
14152         (BINFO_FOR_VBASE): Remove.
14153         (CANONICAL_BINFO): Adjust.
14154         (binfo_for_vbase): New function.
14155         * class.c (build_vbase_pointer_fields): Use binfo_for_vbase
14156         instead of BINFO_FOR_VBASE.
14157         (build_vbase_pointer): Likewise.
14158         (build_secondary_vtable): Likewise.
14159         (dfs_mark_primary_bases): Likewise.
14160         (mark_primary_bases): Likewise.
14161         (layout_nonempty_base_or_field): Likewise.
14162         (dfs_set_offset_for_shared_vbases): Likewise.
14163         (dfs_set_offset_for_unshared_vbases): Likewise.
14164         (layout_virtual_bases): Likewise.  Adjust for changes to the
14165         CLASSTYPE_VBASECLASSES list.
14166         (dump_class_hierarchy_r): Use binfo_for_vbase
14167         instead of BINFO_FOR_VBASE.
14168         (dump_class_hierarchy): Likewise.
14169         (finish_vtbls): Likewise.
14170         (build_vtbl_initializer): Adjust for changes to the
14171         CLASSTYPE_VBASECLASSES list.
14172         (build_vbase_offset_vtbl_entries): Use binfo_for_vbase.
14173         * decl.c (finish_destructor_body): Adjust for changes to the
14174         CLASSTYPE_VBASECLASSES list.
14175         * init.c (sort_base_init): Use binfo_for_vbase.
14176         (construct_virtual_bases): Adjust for changes to the
14177         CLASSTYPE_VBASECLASSES list.
14178         (expand_member_init): Use binfo_for_vbase.
14179         (build_vbase_delete):  Adjust for changes to the
14180         CLASSTYPE_VBASECLASSES list.
14181         * method.c (do_build_copy_constructor): Likewise.
14182         * rtti.c (get_base_offset): Use binfo_for_vbase.
14183         (expand_class_desc): Remove #if 0'd code.
14184         * search.c (struct vbase_info): Remove vbase_types.
14185         (get_base_distance):  Use binfo_for_vbase.
14186         (lookup_field_queue_p): Use CANONICAL_BINFO.
14187         (get_shared_vbase_if_not_primary): Use binfo_for_vbase.
14188         (get_pure_virtuals): Adjust for changes to the
14189         CLASSTYPE_VBASECLASSES list.
14190         (dfs_find_vbases): Use binfo_for_vbase.
14191         (dfs_init_vbase_pointers): Likewise.
14192         (init_vbase_pointers): Don't initialize vi.vbase_types.
14193         (virtual_context): Use binfo_for_vbase.
14194         (fixup_all_virtual_upcast_offsets): Adjust for changes to the
14195         CLASSTYPE_VBASECLASSES list.
14196         (expand_indirect_vtbls_init): Simplify.
14197         (dfs_get_vbase_types): Don't replicate virtual bases.
14198         (find_vbase_instance): Use binfo_for_vbase.
14199         (binfo_for_vbase): New function.
14200         * typeck.c (get_delta_difference): Use binfo_for_vbase.
14201
14202 2000-05-17  Mark Mitchell  <mark@codesourcery.com>
14203
14204         * decl2.c (finish_anon_union): Generalize error messages to handle
14205         anonymous structures.
14206         * init.c (perform_member_init): Remove `name' parameter.
14207         (build_field_list): New function.
14208         (sort_member_init): Handle anonymous union initialization order
14209         correctly.  Check for multiple initializations of the same union.
14210         (emit_base_init): Don't look up fields by name here.
14211         (expand_member_init): Record the result of name lookup for future
14212         reference.
14213         * typeck.c (build_component_ref): Fix formatting.
14214
14215 Wed May 17 17:27:44 2000  Andrew Cagney  <cagney@b1.cygnus.com>
14216
14217         * decl.c (pop_label): Replace warn_unused with warn_unused_label.
14218         * typeck.c (build_x_compound_expr): Replace warn_unused with
14219         warn_unused_value.
14220
14221         * decl2.c (lang_decode_option): Update -Wall unused flags by
14222         calling set_Wunused.
14223
14224 2000-05-16  Mark Mitchell  <mark@codesourcery.com>
14225
14226         * cp-treeh (BINFO_NEW_VTABLE_MARKED): Update documentation.
14227         * init.c (dfs_vtable_path_unmark): Remove.
14228         * search.c (marked_new_vtable_p): Likewise.
14229         (unmarked_new_vtable_p): Likewise.
14230         (dfs_search_slot_nonempty_p): Likewise.
14231         (dfs_mark): Likewise.
14232         (dfs_vtable_path_unmark): Likewise.
14233         (dfs_find_vbases): Don't set BINFO_NEW_VTABLE_MARKED.
14234         (dfs_int_vbase_pointers): Don't clear BINFO_VTABLE_PATH_MARKED.
14235         (dfs_init_vbase_pointers): Remove special-case new ABI code.
14236         (dfs_clear_vbase_slots): Don't clear BINFO_NEW_VTABLE_MARKED.
14237         (init_vbase_pointers): Simplify.
14238         (expand_indirect_vtbls_init): Likewise.
14239
14240         * class.c (copy_virtuals): New function.
14241         (build_primary_table): Use it.
14242         (build_secondary_vtable): Likewise.
14243         (modify_vtable_entry): Use NULL_TREE, not integer_zero_node, to
14244         indicate that no vcall offset is required.
14245         (add_virtual_function): Likewise.
14246         (modify_all_vtables): Likewise.
14247         (dfs_finish_vtbls): Adjust call to build_vtbl_initializer.
14248         (dfs_accumulate_vtbl_inits): Likewise.
14249         (build_vtbl_initializer): Make changes to handle construction
14250         vtables.
14251         (dfs_build_vcall_offset_vtbl_entries): Likewise.
14252         (build_rtti_vtbl_entries): Likewise.
14253         (build_vtable_entries): Handle a NULL vcall_index.
14254
14255 2000-05-15  Gabriel Dos Reis  <gdr@codesourcery.com>
14256
14257         * decl2.c (lang_decode_option): Fix thinko.
14258
14259 2000-05-14  Jason Merrill  <jason@casey.cygnus.com>
14260
14261         * except.c (check_handlers): New fn.
14262         * cp-tree.h: Declare it.
14263         * semantics.c (finish_handler_sequence): Call it.
14264         (finish_function_handler_sequence): Likewise.
14265         (finish_handler_parms): Set TREE_TYPE on the handler.
14266         * cp-tree.h (PUBLICLY_UNIQUELY_DERIVED_P): New macro.
14267         * search.c (get_base_distance_recursive): If protect>1, ignore
14268         special access.
14269         (get_base_distance): Don't reduce watch_access.
14270
14271 2000-05-13  Gabriel Dos Reis <gdr@codesourcery.com>
14272
14273         * lex.c: #include diagnostic.h.
14274         (lang_init_options): Set default prefixing rules.
14275
14276         * lang-options.h: Add -fdiagnostics-show-location=.
14277
14278         * decl2.c: #include diagnostic.h.
14279         (lang_decode_option): Handle -fdiagnostics-show-location=.
14280
14281 2000-05-12  Nathan Sidwell  <nathan@codesourcery.com>
14282
14283         * tinfo.cc: Revert my 2000-05-08 and 2000-05-07 changes.
14284         * vec.cc: Revert my 2000-05-07 change.
14285
14286 2000-05-11  Jason Merrill  <jason@casey.cygnus.com>
14287
14288         * class.c (check_field_decls): Complain about non-static data
14289         members with same name as class in class with constructor.
14290
14291 2000-05-10  Jason Merrill  <jason@casey.cygnus.com>
14292
14293         * decl.c (grokdeclarator): Allow non-static data members with
14294         same name as class.
14295
14296 2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>
14297
14298         * cp-tree.h: Constify tree_srcloc.filename, tinst_level.file,
14299         and pending_inline.filename.  Update prototypes.
14300         * decl.c (define_label): Constify filename parameter.
14301         * decl2.c (warn_if_unknown_interface): Constify local char *.
14302         * input.c Constify input_source.filename. Don't declare
14303         input_filename or lineno.  Constify filename parameter to feed_input.
14304         * lex.c (init_parse): Constify parameter and return value.
14305         (cp_pragma_interface, cp_pragma_implementation): Constify
14306         filename argument.
14307         (reinit_parse_for_method, reinit_parse_for_block,
14308         reinit_parse_for_expr, feed_defarg, handle_cp_pragma):
14309         Constify local char *.
14310         * pt.c: Don't declare lineno or input_filename.
14311         (print_template_context, tsubst_friend_function, tsubst_decl,
14312         tsubst, instantiate_decl): Constify local char *.
14313         * semantics.c (expand_body): Constify local char *.
14314         * tree.c (build_srcloc): Constify filename parameter.
14315         * typeck.c (c_expand_asm_operands): Constify filename
14316         parameter.
14317
14318 2000-05-08  Nathan Sidwell  <nathan@codesourcery.com>
14319
14320         * tinfo.cc (__dynamic_cast): Use a reinterpret_cast. Fix
14321         offsetof expansion.
14322
14323 2000-05-08  Branko Cibej  <branko.cibej@hermes.si>
14324
14325         * inc/cxxabi.h:  Fix typos in comment.
14326         (__base_class_info::__offset): Use a static_cast.
14327
14328 2000-05-07  Nathan Sidwell  <nathan@codesourcery.com>
14329
14330         * inc/cxxabi.h: Use __SIZE_TYPE_ and __PTRDIFF_TYPE__ in place
14331         of std::size_t and std::ptrdiff_t respectively.
14332         * tinfo.cc: Likewise.
14333         * vec.cc: Likewise.
14334
14335 2000-05-06  Richard Henderson  <rth@cygnus.com>
14336
14337         * typeck.c (build_c_cast): Don't warn integer->pointer size
14338         mismatch for constants.
14339
14340 2000-05-06  Nathan Sidwell  <nathan@codesourcery.com>
14341
14342         * rtti.c (ptmd_initializer): Set non-public, if class is
14343         incomplete.
14344
14345         * inc/cxxabi.h (__dynamic_cast): Explicitly say extern "C++".
14346         (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
14347         __cxa_vec_delete): Likewise.
14348         * tinfo.cc (__dynamic_cast): Likewise.
14349         * vec.cc (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
14350         __cxa_vec_delete): Likewise.
14351
14352 2000-05-04  Mark Mitchell  <mark@codesourcery.com>
14353
14354         * cp-tree.h (DELTA_FROM_VTABLE_ENTRY): Remove.
14355         (SET_FNADDR_FROM_VTABLE_ENTRY): Likewise.
14356         (lang_decl_flags): Add vcall_offset.
14357         (THUNK_VCALL_OFFSET): Use it.
14358         * decl.c (lang_mark_tree): Don't mark DECL_ACCESS for a thunk.
14359         * method.c (make_thunk): Create the lang_decl here, not in
14360         emit_thunk.
14361         (emit_thunk): Make generic thunks into ordinary functions once
14362         they have been fed to expand_body.
14363         * semantics.c (expand_body): Set current_function_is_thunk here.
14364
14365 2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14366
14367         * class.c (update_vtable_entry_for_fn): Prototype.
14368
14369         * pt.c (tsubst_decl): Initialize variables `argvec', `gen_tmpl'
14370         and `tmpl'.
14371
14372         * search.c (dfs_build_inheritance_graph_order): Prototype.
14373
14374 2000-05-04  Mark Mitchell  <mark@codesourcery.com>
14375
14376         * cp-tree.h (special_function_kind): Add various kinds of
14377         destructors.
14378         (special_function_p): New function.
14379         * class.c (overrides): Don't let one kind of destructor override
14380         another.
14381         * decl2.c (mark_used): Use DECL_NON_THUNK_FUNCTION_P when deciding
14382         whether or not to instantiate a template.
14383         * tree.c (special_function_p): Define.
14384
14385 2000-05-03  Mark Mitchell  <mark@codesourcery.com>
14386
14387         * cp-tree.def (THUNK_DECL): Remove.
14388         * cp-tree.h (DECL_THUNK_P): New macro.
14389         (DECL_NON_THUNK_FUNCTION_P): Likewise.
14390         (DECL_EXTERN_C_FUNCTION_P): Likewise.
14391         (SET_DECL_THUNK_P): Likewise.
14392         (DELTA_FROM_VTABLE_ENTRY): Use DECL_THUNK_P.
14393         (FNADDR_FROM_VTABLE_ENTRY): Likewise.
14394         (DECL_MAIN_P): Use DECL_EXTERN_C_FUNCTION_P.
14395         * decl.c (decls_match): Use DECL_EXTERN_C_P.
14396         (duplicate_decls): Likewise.
14397         (pushdecl): Likewise.  Adjust thunk handling.
14398         (grokfndecl): Use DECL_EXTERN_C_P.
14399         * decl2.c (mark_vtable_entries): Use DECL_THUNK_P.
14400         * dump.c (dequeue_and_dump): Remove THUNK_DECL handling.
14401         * except.c (nothrow_libfn_p): Use DECL_EXTERN_C_P.
14402         * expr.c (cplus_expand_expr): Remove THUNK_DECL handling.
14403         * method.c (make_thunk): Use SET_DECL_THUNK_P.  Set
14404         DECL_NO_STATIC_CHAIN.
14405         (emit_thunk): Don't play games with TREE_CODE on thunks.  Don't
14406         set DECL_DESTRUCTOR_P or DECL_CONSTRUCTOR_P on a thunk.
14407         * search.c (covariant_return_p): Remove THUNK_DECL handling.
14408         * ir.texi: Update.
14409
14410 2000-05-01  Jason Merrill  <jason@casey.cygnus.com>
14411
14412         * tree.c (walk_tree): Set lineno.
14413
14414 2000-05-01  Mark Mitchell  <mark@codesourcery.com>
14415
14416         * exception.cc: Update license notice.
14417         * new.cc: Likewise.
14418         * new1.cc: Likewise.
14419         * new2.cc: Likewise.
14420         * tinfo.cc: Likewise.
14421         * tinfo2.cc: Likewise.
14422         * vec.cc: Likewise.
14423         * inc/cxxabi.h: Likewise.
14424         * inc/exception: Likewise.
14425         * inc/new: Likewise.
14426         * inc/new.h: Likewise.
14427         * inc/typeinfo: Likewise.
14428
14429 2000-05-01  Jason Merrill  <jason@casey.cygnus.com>
14430
14431         * tree.c (build_target_expr_with_type): If we already have a
14432         TARGET_EXPR, just return it.
14433
14434         * optimize.c (initialize_inlined_parameters): Don't generate an
14435         EXPR_STMT if we can just use DECL_INITIAL.
14436         * decl.c (emit_local_var): Only make the initialization a
14437         full-expression if stmts_are_full_exprs_p.
14438
14439 2000-05-01  Mark Mitchell  <mark@codesourcery.com>
14440
14441         * cp-tree.h (same_type_ignoring_top_level_qualifiers_p): New
14442         macro.
14443         * call.c (standard_conversion): Use it.
14444         (direct_reference_binding): Likewise.
14445         (build_over_call): Likewise.
14446         (is_properly_derived_from): Likewise.
14447         (compare_ics): Likewise.
14448         * class.c (resolves_to_fixed_type_p): Likewise.
14449         * optimize.c (declare_return_variable): Likewise.
14450         * pt.c (is_specialization_of): Likewise.
14451         (unify): Likewise.
14452         * typeck.c (comp_target_parms): Likeiwse.
14453         (build_static_cast): Likewise.
14454         (build_reinterpret_cast): Likewise.
14455         (build_const_cast): Likewise.
14456         (comp_ptr_ttypes_real): Likewise.
14457         (comp_ptr_ttypes_const): Likewise.
14458         * typeck2.c (process_init_constructor): Likewise.
14459
14460 2000-04-30  Scott Snyder <snyder@fnal.gov>
14461
14462         * decl.c (finish_destructor_body): Use the base destructor when
14463         destroying virtual bases.
14464
14465 2000-04-30  Mark Mitchell  <mark@codesourcery.com>
14466
14467         * expr.c (cplus_expand_expr): Preserve temporaries when expanding
14468         STMT_EXPRs.
14469         * optimize.c (struct inline_data): Add target_exprs field.
14470         (declare_return_variable): When a function returns an aggregate,
14471         use the variable declared in the TARGET_EXPR as the remapped
14472         DECL_RESULT.
14473         (expand_call_inline): Update the pending target_exprs stack.
14474         (optimize_function): Initialize the stack.
14475
14476         * decl2.c (finish_file): Fix typo in comment.
14477
14478         * method.c (emit_thunk): Don't try to return a `void' value.
14479
14480         * optimize.c (initialize_inlined_parameters): If the parameter is
14481         addressable, we need to make a new VAR_DECL, even if the
14482         initializer is constant.
14483
14484 2000-04-28  Cosmin Truta  <cosmint@cs.ubbcluj.ro>
14485
14486         * decl.c (grok_op_properties): Add an extra check of argtypes.
14487
14488 2000-04-27  Mark Mitchell  <mark@codesourcery.com>
14489
14490         * optimize.c (copy_body_r): Use STRIP_TYPE_NOPS when copying
14491         variables.
14492         (initialize_inlined_parameters): Try to avoid creating new
14493         VAR_DECLs.
14494
14495 2000-04-27  Alex Samuel  <samuel@codesourcery.com>
14496
14497         * lex.c (my_get_run_time): Remove.
14498         (init_filename_times): Use get_run_time instead of my_get_run_time.
14499         (check_newline): Likewise.
14500         (dump_time_statistics): Likewise.
14501         * decl2.c (finish_file): Push and pop timevar TV_VARCONST instead
14502         of computing elapsed time explicitly.
14503
14504 2000-04-26  Mark Mitchell  <mark@codesourcery.com>
14505
14506         * cp-tree.h (TREE_READONLY_DECL_P): Use DECL_P.
14507         * init.c (decl_constant_value): Check TREE_READONLY_DECL_P.
14508         * call.c (convert_like_real): Don't test TREE_READONLY_DECL_P
14509         before calling decl_constant_value.
14510         * class.c (check_bitfield_decl): Likewise.
14511         * cvt.c (ocp_convert): Likewise.
14512         (convert): Likewise.
14513         * decl.c (compute_array_index_type): Likewise.
14514         (build_enumerator): Likewise.
14515         * decl2.c (check_cp_case_value): Likewise.
14516         * pt.c (convert_nontype_argument): Likewise.
14517         (tsubst): Likewise.
14518         * typeck.c (decay_conversion): Likewise.
14519         (build_compound_expr): Likewise.
14520         (build_reinterpret_cast): Likewise.
14521         (build_c_cast): Likewise.
14522         (convert_for_assignment): Likewise.
14523
14524 2000-04-26  Jason Merrill  <jason@casey.cygnus.com>
14525
14526         * decl.c (finish_function): Don't play games with DECL_INLINE.
14527
14528 2000-04-25  Gabriel Dos Reis  <dosreis@cmla.ens-cachan.fr>
14529
14530         * ir.texi: Correct typo.
14531
14532 2000-04-25  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
14533
14534         * decl.c (grokdeclarator): Reject VLAs as members.
14535
14536 2000-04-24  Gabriel Dos Reis  <gdr@codesourcery.com>
14537
14538         * call.c (standard_conversion): Accept conversion between
14539         COMPLEX_TYPEs.
14540
14541         * cvt.c (ocp_convert): Handle conversion to COMPLEX_TYPE.
14542
14543 2000-04-24  Zack Weinberg  <zack@wolery.cumb.org>
14544
14545         * decl2.c (finish_file): Remove double setup for accounting
14546         compile time.
14547
14548 2000-04-24  Robert Lipe <robertlipe@usa.net>
14549
14550         * cp-tree.h (lang_type): Member `language' now ENUM_BITFIELD.
14551
14552 2000-04-23  Benjamin Kosnik  <bkoz@cygnus.com>
14553
14554         * new.cc (set_new_handler): Needs to be in std::.
14555
14556 2000-04-23  Mark Mitchell  <mark@codesourcery.com>
14557
14558         * cp-tree.h (lang_decl): Remove pretty_function_p.
14559         (DECL_PRETTY_FUNCTION_P): Use TREE_LANG_FLAG_0, not a bit in the
14560         language-specific node.
14561         * decl.c (cp_make_fname_decl): Use build_decl, not
14562         build_lang_decl, to build the variables.
14563         (grokvardecl): Don't call build_lang_decl for local variables in
14564         templates.
14565         (grokdeclarator): Don't call build_lang_decl for local type
14566         declarations in templates.
14567         * lex.c (retrofit_lang_decl): Use ggc_alloc_obj to allocated
14568         zero'd memory, rather than calling memset.
14569         * pt.c: Include hashtab.h.
14570         (local_specializations): New variable.
14571         (retrieve_local_specialization): Use it.
14572         (register_local_specialization): Likewise.
14573         (tsubst_decl): Don't assume local variables have
14574         DECL_LANG_SPECIFIC.
14575         (instantiate_decl): Set up local_specializations.
14576         * Makefile.in (HTAB_H): New variable.
14577
14578 2000-04-23  Richard Henderson  <rth@cygnus.com>
14579
14580         * typeck.c (c_expand_asm_operands): Restore the original
14581         contents of the output list.
14582
14583 2000-04-22  Gabriel Dos Reis <gdr@codesourcery.com>
14584
14585         * ir.texi:  Document complex number representation.
14586
14587 2000-04-20  Nathan Sidwell  <nathan@codesourcery.com>
14588
14589         * rtti.c (init_rtti_processing): Set tinfo_var_id in new-abi.
14590         (target_incomplete_p): New function.
14591         (tinfo_base_init): Create comdat NTBS name variable.
14592         (ptr_initializer): Add non_public parameter. Calculate it.
14593         (ptmd_initializer): Likewise.
14594         (synthesize_tinfo_var): Adjust. Emit incomplete class tinfo.
14595         (create_real_tinfo_var): Add non_public parameter. Use it.
14596         Push proxy into global namespace.
14597         * inc/cxxabi.h (__pointer_type_info::incomplete_class_mask):
14598         New enumeration.
14599         * inc/typeinfo (type_info::before, type_info::operator==):
14600         Compare __name addresses.
14601
14602         * tinfo2.cc: Remove new-abi builtins comment.
14603
14604 2000-04-20  Jason Merrill  <jason@casey.cygnus.com>
14605
14606         * typeck.c (build_x_function_call): Resolve an OFFSET_REF.
14607
14608         * call.c (joust): Exit early if we get the same function, too.
14609
14610         * decl2.c (key_method): Return NULL_TREE for template classes.
14611         (import_export_class): Don't need to check for template classes.
14612
14613 2000-04-18  Zack Weinberg  <zack@wolery.cumb.org>
14614
14615         * lex.c: Remove references to cccp.c.
14616
14617 2000-04-18  Mark Mitchell  <mark@codesourcery.com>
14618
14619         * cp-tree.h (lang_decl_flags): Remove const_memfunc and
14620         volatile_memfunc.  Add destructor_attr.  Adjust dummy.
14621         (DECL_DESTRUCTOR_P): Use destructor_attr.
14622         (DECL_CONST_MEMFUNC_P): Reimplement.
14623         (DECL_VOLATILE_MEMFUNC_P): Remove.
14624         * class.c (finish_struct_methods): Use CLASSTYPE_DESTRUCTORS.
14625         (overrides): Use DECL_DESTRUCTOR_P.
14626         (check_for_override): Likewise.
14627         * decl.c (start_function): Likewise.
14628         * decl2.c (grokfclassfn): Likewise.
14629         (check_classfn): Likewise.
14630         (grok_function_init): Likewise.
14631
14632 2000-04-17  Mark Mitchell  <mark@codesourcery.com>
14633
14634         * decl2.c (grokfield): Issue error on illegal data member
14635         declaration.
14636
14637 Mon Apr 17 17:11:16 2000  Mark P Mitchell  <mark@codesourcery.com>
14638
14639         * method.c (make_thunk): Set DECL_CONTEXT for a THUNK_DECL.
14640
14641 2000-04-16  Mark Mitchell  <mark@codesourcery.com>
14642
14643         * class.c (build_vtable_entry): Don't build thunks for type-info
14644         functions.
14645
14646 2000-04-16  Jason Merrill  <jason@casey.cygnus.com>
14647
14648         * decl.c (decls_match): Allow a redeclaration of a builtin to
14649         specify args while the builtin did not.
14650
14651 2000-04-15  Mark Mitchell  <mark@codesourcery.com>
14652
14653         * cp-tree.def (THUNK_DECL): Add to documentation.
14654         * cp-tree.h (flag_huge_objects): Declare.
14655         * class.c (modify_vtable_entry): Tidy.
14656         (update_vtable_entry_for_fn): Split out from dfs_modify_vtables.
14657         Calculate delta appropriately for the new ABI.
14658         (dfs_modify_vtables): Use it.
14659         (modify_all_vtables): Fix thinko in code to add overriding copies
14660         of functions to primary vtables.
14661         (build_clone): Fix typo in comment.
14662         (clone_function_decl): Correct order of destructors in vtable.
14663         (build_vbase_offset_vtbl_entries): Adjust comment.
14664         (dfs_vcall_offset_queue_p): Remove.
14665         (dfs_build_vcall_offset_vtbl_entries): Update BV_VCALL_INDEX.
14666         (build_vcall_offset_vtbl_entries): Juse use dfs_skip_vbases.
14667         (build_vtable_entry): Correct check for pure virtual functions.
14668         Don't declare flag_huge_objects.
14669         * decl.c (flag_huge_objects): Remove declaration.
14670         * method.c (make_thunk): Tweak mangling for vcall offset thunks.
14671         Use int_size_in_bytes.
14672         (emit_thunk): Handle vcall offset thunks.
14673
14674 Sat Apr 15 16:00:01 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
14675
14676         * decl2.c (parse_time, varconst_time): Delete declarations.
14677         (finish_file): Delete LINENO declaration.
14678         START_TIME and THIS_TIME now long.
14679
14680 2000-04-13  Nathan Sidwell  <nathan@codesourcery.com>
14681
14682         * class.c (build_base_field): Reformat comment.
14683
14684         * inc/cxxabi.h (stddef.h): Comment inclusion.
14685         (__base_class_info::__offset): Comment shift.
14686
14687 2000-04-12  Mark Mitchell  <mark@codesourcery.com>
14688
14689         * cp-tree.h (IDENTIFIER_CTOR_OR_DTOR_P): New macro.
14690         (cp_tree_index): Add CPTI_PUSH_EXCEPTION_IDENTIFIER.
14691         (cp_push_exception_identifier): New macro.
14692         (DECL_COMPLETE_DESTRUCTOR_P): New macro.
14693         (DECL_BASE_DESTRUCTOR_P): Likewise.
14694         (DECL_DELETING_DESTRUCTOR_P): Likewise.
14695         (get_vtbl_decl_for_binfo): Fix formatting.
14696         (in_charge_arg_for_name): New macro.
14697         (maybe_build_cleanup_and_delete): Remove declaration.
14698         * call.c (build_field_call): Use IDENTIFIER_CTOR_OR_DTOR_P.
14699         (in_charge_arg_for_name): New function.
14700         (build_new_method_call): Use it.  Handle cloned destructors.
14701         (build_clone): Don't make the base constructor virtual.
14702         Automatically defer generated functions.
14703         (clone_function_decl): Handle destructors, too.
14704         (clone_constructors_and_destructors): Likewise.
14705         (create_vtable_ptr): Don't create a vtable entry for a cloned
14706         function.
14707         * decl.c (predefined_identifier): Add ctor_or_dtor_p.
14708         (initialize_predefined_identifiers): Update appropriately.
14709         (finish_destructor_body): Simplify.
14710         (maybe_build_cleanup_and_delete): Remove.
14711         * except.c (expand_throw): Handle new-ABI destructors.
14712         * init.c (expand_cleanup_for_base): Use base_dtor_identifier.
14713         (build_dtor_call): New function.
14714         (build_delete): Use it.  Simplify.
14715         * optimize.c (maybe_clone_body): Handle destructors.
14716         * search.c (lookup_field_queue_p): Use IDENTIFIER_CTOR_OR_DTOR_P.
14717
14718         * exception.cc (cleanup_fn): New typedef.
14719         (CALL_CLEANUP): New macro.
14720         (cp_eh_info): Use them.
14721         (__cp_push_exception): Likewise.
14722         (__cp_pop_exception): Likewise.
14723
14724 2000-04-11  Mark Mitchell  <mark@codesourcery.com>
14725
14726         * cp-tree.h (cp_tree_index): Add CPTI_DTOR_IDENTIFIER.
14727         (complete_dtor_identifier): New macro.
14728         (CLASSTYPE_FIRST_CONVERSION): Remove.
14729         (CLASSTYPE_CONSTRUCTOR_SLOT): New macro.
14730         (CLASSTYPE_DESTRUCTOR_SLOT): Likewise.
14731         (CLASSTYPE_FIRST_CONVERSION_SLOT): Likewise.
14732         (CLASSTYPE_CONSTRUCTORS): Likewise.
14733         (CLASSTYPE_DESTRUCTORS): Likewise.
14734         (lang_decl): Add cloned_function.
14735         (DECL_COMPLETE_CONSTRUCTOR_P): New macro.
14736         (DECL_BASE_CONSTRUCTOR_P): Likewise.
14737         (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P): Likewise.
14738         (DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P): Likewise.
14739         (DECL_CLONED_FUNCTION_P): Likewise.
14740         (DECL_CLONED_FUNCTION): Likewise.
14741         (clone_function_decl): Declare.
14742         (maybe_clone_body): Likewise.
14743         * call.c (build_user_type_conversion_1): Call complete object
14744         constructors in the new ABI.
14745         (build_new_method_call): Don't add in-charge parameters under the
14746         new ABI.
14747         * class.c (add_method): Use DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P,
14748         DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P, CLASSTYPE_CONSTRUCTOR_SLOT, and
14749         CLASSTYPE_DESTRUCTOR_SLOT.
14750         (build_clone): New function.
14751         (clone_function_decl): Likewise.
14752         (clone_constructors_and_destructors): Likewise.
14753         (check_bases_and_members): Use it.
14754         * decl.c (iniitialize_predefined_identifiers): Initialize
14755         complete_dtor_identifier.
14756         (finish_function): Don't add extra code to a clone.
14757         (lang_mark_tree): Mark cloned_function.
14758         * decl2.c (mark_used): Don't bother trying to instantiate things
14759         we synthesized.
14760         * dump.c (dequeue_and_dump): Don't dump CP_DECL_CONTEXT twice.
14761         * method.c (set_mangled_name_for_decl): Don't treat clones as
14762         constructors.
14763         (synthesize_method): Sythesize cloned functions, not the clones.
14764         * optimize.c (inline_data): Update comment on ret_label.
14765         (remap_block): Don't assume DECL_INITIAL exists.
14766         (copy_body_r): Allow ret_label to be NULL.
14767         (maybe_clone_body): Define.
14768         * pt.c (tsubst_decl): Handle clones.
14769         (instantiate_clone): New function.
14770         (instantiate_template): Use it.
14771         (set_mangled_name_for_template_decl): Don't treat clones as
14772         constructors.
14773         * search.c (lookup_fnfields_1): Use CLASSTYPE_CONSTRUCTOR_SLOT,
14774         CLASSTYPE_DESTRUCTOR_SLOT, and CLASSTYPE_FIRST_CONVERSION_SLOT.
14775         * semantics.c (expand_body): Clone function bodies as necessary.
14776
14777         * optimize.c (remap_decl): Avoid sharing structure for arrays
14778         whose size is only known at run-time.
14779         * tree.c (copy_tree_r): Don't copy PARM_DECLs.
14780
14781         * cp-tree.h (lang_decl_flags): Rename constructor_for_vbase_attr
14782         to has_in_charge_parm_p.
14783         (DECL_CONSTRUCTOR_FOR_VBASE_P): Rename to ...
14784         (DECL_HAS_IN_CHARGE_PARM_P): ... this.
14785         (DECL_COPY_CONSTRUCTOR_P): New macro.
14786         * call.c (add_function_candidate): Use DECL_HAS_IN_CHARGE_PARM_P.
14787         (build_user_type_conversion_1): Likewise.
14788         (convert_like_real): Likewise.
14789         (build_over_call): Likeiwse.  Use DECL_COPY_CONSTRUCTOR_P.
14790         * decl.c (grokdeclarator): Use DECL_HAS_IN_CHARGE_PARM_P.
14791         (copy_args_p): Likewise.
14792         (grok_ctor_properties): Likewise.
14793         (start_function): Likewise.
14794         * decl2.c (maybe_retrofit_in_charge): Likewise.  Set it.
14795         * error.c (dump_function_decl): Use DECL_HAS_IN_CHARGE_PARM_P.
14796         * init.c (emit_base_init): Use DECL_COPY_CONSTRUCTOR_P.
14797         * method.c (do_build_copy_constructor): Use
14798         DECL_HAS_IN_CHARGE_PARM_P.
14799         (synthesize_method): Likewise.
14800         * pt.c (instantiate_template): Remove goto.
14801         * tree.c (build_cplus_method_type): Remove mention of obstacks in
14802         comment.
14803
14804         * cp-tre.h (finish_function): Change prototype.
14805         * decl.c (end_cleanup_fn): Adjust caller.
14806         (finish_function): Take only one parameter.
14807         * decl2.c (finish_objects): Adjust caller.
14808         (finish_static_storage_duration_function): Likewise.
14809         * method.c (emit_thunk): Likewise.
14810         * parse.y: Likewise.
14811         * parse.c: Regenerated.
14812         * pt.c (instantiate_decl): Likewise.
14813         * rtti.c (synthesize_tinfo_fn): Likewise.
14814         * semantics.c (expand_body): Likewise.
14815
14816         * cp-tree.h (copy_decl): New function.
14817         * class.c (finish_struct_1): Use it.
14818         * lex.c (copy_decl): Define it.
14819         * pt.c (tsubst_decl): Likewise.
14820         * tree.c (copy_template_template_parm): Likewise.
14821
14822         * cp-tree.h (lang_type): Remove has_nonpublic_ctor and
14823         has_nonpublic_assign_ref.
14824         (TYPE_HAS_NONPUBLIC_CTOR): Don't declare.
14825         (TYPE_HAS_NONPUBLIC_ASSIGN_REF): Likewise.
14826         * class.c (finish_struct_methods): Don't set
14827         TYPE_HAS_NONPUBLIC_CTOR or TYPE_HAS_NONPUBLIC_ASSIGN_REF.
14828         (interface_only): Don't declare.
14829         (interface_unknown): Likewise.
14830
14831 2000-04-11  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
14832
14833         * tree.h (HAVE_TEMPLATES): Remove definition.
14834         * lang-options.h (-fthis-is-variable): Remove documentation.
14835
14836 2000-04-10  Jason Merrill  <jason@casey.cygnus.com>
14837
14838         * class.c (instantiate_type): Handle object-relative template-id.
14839
14840         * semantics.c (finish_expr_stmt): Call convert_to_void here.
14841         * decl.c (cplus_expand_expr_stmt): Not here.
14842
14843         * rtti.c (build_dynamic_cast_1): Call non_lvalue.
14844         Initialize exprtype earlier.
14845
14846         * parse.y (fn.def1): Check for defining types in return types.
14847
14848         * decl.c (check_tag_decl): Notice extra fundamental types.
14849         Diagnose empty decls in classes, too.
14850
14851         * decl.c (grokdeclarator): Don't override an anonymous name if no
14852         declarator was given.
14853
14854         * cvt.c (convert_to_void): Call resolve_offset_ref.
14855
14856         * typeck.c (build_x_function_call): Abort if we get an OFFSET_REF.
14857
14858         * decl2.c (decl_namespace): Handle getting a type.
14859
14860         * typeck.c (build_c_cast): Re-enable warning for cast between
14861         pointer and integer of different size.
14862
14863 2000-04-10  Nathan Sidwell  <nathan@codesourcery.com>
14864
14865         * inc/cxxabi.h (__pointer_type_info): Add restrict and
14866         incomplete flags.
14867         (__pointer_type_info::__pointer_catch): New virtual function.
14868         (__pointer_to_member_type_info): Derive from
14869         __pointer_type_info. Adjust.
14870         (__pointer_to_member_type_info::__do_catch): Remove.
14871         (__pointer_to_member_type_info::__is_pointer_p): Declare.
14872         (__pointer_to_member_type_info::__pointer_catch): Declare.
14873         * rtti.c (qualifier_flags): Add restrict flag.
14874         (ptmd_initializer): Reorder members.
14875         (create_tinfo_types): Expand comments. Reorder
14876         ptmd_desc_type_node members.
14877         * tinfo2.cc (__pointer_to_member_type_info::__is_pointer_p):
14878         Implement.
14879         (__pointer_type_info::__do_catch): Move specific code into
14880         __pointer_catch. Call it.
14881         (__pointer_type_info::__pointer_catch): Non-pointer-to-member
14882         specific catch checking. Fix void conversion check.
14883         (__pointer_to_member_type_info::__do_catch): Remove.
14884         (__pointer_to_member_type_info::__pointer_catch): Implement.
14885
14886 2000-04-10  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
14887
14888         * lex.c (init_parse): Remove traces of classof and headof.
14889         * decl2.c (flag_operator_names): Default to 1.
14890         (lang_decode_option): Do not set it for -ansi.
14891
14892 2000-04-09  Mark Mitchell  <mark@codesourcery.com>
14893
14894         * cp-tree.h (struct lang_decl): Remove main_decl_variant.
14895         (DECL_MAIN_VARIANT): Remove.
14896         * decl.c (duplicate_decls): Don't set it.
14897         (start_function): Likewise.
14898         (lang_mark_tree): Don't mark it.
14899         * decl2.c (defer_fn): Don't use it.
14900         * lex.c (retrofit_lang_decl): Don't set it.
14901         * pt.c (tsubst_decl): Likewise.
14902         * ptree.c (print_lang_decl): Don't print it.
14903         * typeck.c (mark_addressable): Don't use it.
14904
14905 2000-04-09  Nathan Sidwell  <nathan@codesourcery.com>
14906
14907         * vec.cc: Include <new> and <exception>.
14908         (__cxa_vec_ctor): Use __cxa_vec_dtor for cleanup.
14909         (__cxa_vec_dtor): Catch dtor exceptions, and rethrow or
14910         terminate.
14911         (__cxa_vec_delete): Catch dtor exceptions.
14912
14913 2000-04-09  Nathan Sidwell  <nathan@codesourcery.com>
14914
14915         Prepend __ to implementation defined names.
14916         * inc/typeinfo (type_info): Rename _name to __name.
14917         (type_info::type_info): Rename parameter.
14918         (type_info::operator==, type_info::operator!=,
14919         type_info::before): Likewise.
14920         (type_info::is_pointer_p, type_info::is_function_p,
14921         type_info::do_catch, type_info::do_upcast): Prepend __. Rename
14922         parameters.
14923         * inc/cxxabi.h
14924         (__fundamental_type_info::__fundamental_type_info) Rename parameters.
14925         (__pointer_type_info::__pointer_type_info): Likewise.
14926         (__pointer_type_info::is_pointer_p,
14927         __pointer_type_info::do_catch): Prepend __. Rename parameters.
14928         (__array_type_info::__array_type_info): Rename parameters.
14929         (__function_type_info::__function_type_info): Likewise.
14930         (__function_type_info::is_function_p): Prepend __.
14931         (__enum_type_info::__enum_type_info): Rename parameters.
14932         (__pointer_to_member_type_info::__pointer_to_member_type_info):
14933         Likewise.
14934         (__pointer_to_member_type_info::do_catch): Prepend __. Rename
14935         parameters.
14936         (__base_class_info::is_virtual_p, is_public_p, offset): Prepend __.
14937         (__class_type_info::__class_type_info): Rename parameters.
14938         (__class_type_info::sub_kind): Prepend __. Adjust member names.
14939         (__class_type_info::upcast_result,
14940         __class_type_info::dyncast_result): Prepend __. Move definition
14941         into tinfo.cc.
14942         (__class_type_info::do_upcast, __class_type_info::do_catch,
14943         __class_type_info::find_public_src,
14944         __class_type_info::do_dyncast,
14945         __class_type_info::do_find_public_src): Prepend __. Rename
14946         parameters.
14947         (__si_class_type_info::__si_class_type_info): Rename parameters.
14948         (__si_class_type_info::do_upcast, __si_class_type_info::do_dyncast,
14949         __si_class_type_info::do_find_public_src): Prepent __. Rename
14950         parameters.
14951         (__vmi_class_type_info::__vmi_class_type_info): Rename parameters.
14952         (__vmi_class_type_info::do_upcast, __vmi_class_type_info::do_dyncast,
14953         __vmi_class_type_info::do_find_public_src): Prepent __. Rename
14954         parameters.
14955         (__dynamic_cast): Rename parameters.
14956         * tinfo.cc (type_info::is_pointer_p, type_info::is_function_p,
14957         type_info::do_catch, type_info::do_upcast): Prepend __.
14958         (contained_p, public_p, virtual_p, contained_public_p,
14959         contained_nonpublic_p, contained_nonvirtual_p): Adjust.
14960         (__class_type_info::do_catch,
14961         __class_type_info::do_upcast): Prepend __. Adjust.
14962         (__class_type_info::__upcast_result,
14963         __class_type_info::__dyncast_result): Move from inc/cxxabi.h.
14964         Adjust.
14965         (__class_type_info::find_public_src): Prepend __. Adjust.
14966         (__class_type_info::do_find_public_src,
14967         __si_class_type_info::do_find_public_src,
14968         __vmi_class_type_info::do_find_public_src): Likewise.
14969         (__class_type_info::do_dyncast,
14970         __si_class_type_info::do_dyncast,
14971         __vmi_class_type_info::do_dyncast): Likewise.
14972         (__class_type_info::do_upcast,
14973         __si_class_type_info::do_upcast,
14974         __vmi_class_type_info::do_upcast): Likewise.
14975         (__dynamic_cast): Adjust.
14976         * tinfo2.cc (__pointer_type_info::is_pointer_p): Prepend __.
14977         (__function_type_info::is_function_p): Likewise.
14978         (__pointer_type_info::do_catch): Likewise. Adjust.
14979         (__pointer_to_member_type_info::do_catch): Likewise. Adjust.
14980         (__throw_type_match_rtti_2): Adjust.
14981         (__is_pointer): Adjust.
14982
14983 2000-04-08  Mark Mitchell  <mark@codesourcery.com>
14984
14985         * cp-tree.h (cp_tree_index): Add CPTI_COMPLETE_CTOR_IDENTIFIER.
14986         (complete_ctor_identifier): New macro.
14987         (special_function_kind): Add sfk_copy_constructor and
14988         sfk_assignment_operator.
14989         (LOOKUP_HAS_IN_CHARGE): Remove.
14990         (cons_up_default_function): Rename to ...
14991         (implicitly_declare_fn): ... this.
14992         * call.c (build_new_method_call): Add in-charge parameters for
14993         constructors here.
14994         * class.c (add_implicitly_declared_members): Change parameter name
14995         from cant_have_assignment to cant_have_const_assignment.
14996         Replace calls to cons_up_default_function to implicitly_declare_fn.
14997         * cvt.c (ocp_convert): Use complete_ctor_identifier.
14998         * decl.c (initialize_predefined_identifiers): Initialize it.
14999         (start_function): Use DECL_CONSTRUCTOR_FOR_VBASE_P instead of
15000         complex expression.
15001         * init.c (expand_default_init): Don't calculate the in-charge
15002         parameter here.
15003         (build_new_1): Likewise.
15004         * lex.c (cons_up_default_function): Move to method.c.
15005         * method.c (synthesize_method): Use DECL_DESTRUCTOR_P.
15006         (implicitly_declare_fn): New function.
15007         * typeck.c (build_static_cast): Use complete_ctor_identifier.
15008         (build_modify_expr): Likewise.
15009         * typeck2.c (build_functional_cast): Likewise.
15010
15011         Under the new ABI, constructors don't return `this'.
15012         * cp-tree.h (warn_reorder): Declare.
15013         (special_function_kind): New enum.
15014         (global_base_init_list): Remove declaration.
15015         (emit_base_init): Don't return a value.
15016         (check_base_init): Don't declare.
15017         (is_aggr_typedef): Likewise.
15018         * decl.c (check_special_function_return_type): New function.
15019         (return_types): Remove.
15020         (grokdeclarator): Use check_special_function_return_type.
15021         (start_function): Don't initialize ctor_label under the new ABI.
15022         (finish_construtor_body): Don't create a corresponding LABEL_STMT.
15023         * init.c (begin_init_stmts): Move to top of file.
15024         (finish_init_stmts): Likewise.
15025         (warn_reorder): Don't declare.
15026         (emit_base_init): Don't create a STMT_EXPR here.  Don't return a
15027         value.
15028         (check_base_init): Remove.
15029         (is_aggr_typedef): Likewise.
15030         (build_new_1): Don't use the return value of a constructor.
15031         * semantics.c (setup_vtbl_ptr): Don't use the return value
15032         of emit_base_init.
15033         * typeck.c (check_return_expr): Don't magically convert return
15034         statements into `return this' in constructors under the new ABI.
15035
15036         * cp-tree.h (cp_tree_index): Add CPTI_BASE_CTOR_IDENTIFIER,
15037         CPTI_BASE_DTOR_IDENTIFIER, and CPTI_DELETING_DTOR_IDENTIFIER.
15038         (base_ctor_identifier): New macro.
15039         (base_dtor_identifier): Likewise.
15040         (deleting_dtor_identifier): Likewise.
15041         * decl.c: Don't include obstack.h.
15042         (obstack_chunk_alloc): Don't define.
15043         (obstack_chunk_free): Likewise.
15044         (struct predefined_identifier): New type.
15045         (initialize_predefined_identifiers): New function.
15046         (init_decl_processing): Use it.
15047         (debug_temp_inits): Remove.
15048         (start_method): Don't call preserve_data.
15049         (hack_incomplete_structures): Update comment.
15050         * init.c (init_init_processing): Don't initialize
15051         nelts_identifier.
15052         (build_offset_rf): Remove dead code.
15053         (build_delete): Use CLASSTYPE_N_BASECLASSES.
15054         * search.c (init_search_processing): Don't initialize
15055         vptr_identifier.
15056
15057 2000-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15058
15059         * typeck.c (build_binary_op): Call `tree_expr_nonnegative_p' to elide
15060         some sign_compare warnings.
15061
15062 2000-04-07  Nathan Sidwell  <nathan@codesourcery.com>
15063
15064         Rename abi::__vmi_class_type_info members.
15065         * inc/cxxabi.h (__vmi_class_type_info): Rename details, n_bases,
15066         base_list, detail_masks members to vmi_flags, vmi_base_count,
15067         vmi_bases and vmi_flags_masks respectively.
15068         (__vmi_class_type_info::vmi_flags_masks): Rename
15069         details_unknown_mask to flags_unknown_mask.
15070         * tinfo.cc (__class_type_info::do_upcast): Adjust.
15071         (__vmi_class_type_info::do_find_public_src): Adjust.
15072         (__vmi_class_type_info::do_dyncast): Adjust.
15073         (__vmi_class_type_info::do_upcast): Adjust.
15074
15075 2000-04-07  Nathan Sidwell  <nathan@codesourcery.com>
15076
15077         * tinfo.cc (convert_to_base): New function.
15078         (get_vbase_offset): Remove. Move into convert_to_base.
15079         (__vmi_class_type_info::do_find_public_src): Adjust.
15080         (__vmi_class_type_info::do_dyncast): Adjust.
15081         (__vmi_class_type_info::do_upcast): Adjust.
15082
15083 2000-04-06  Jason Merrill  <jason@yorick.cygnus.com>
15084
15085         * tinfo.cc (operator=): Use __builtin_strcmp.
15086         * tinfo2.cc (before): Likewise.
15087
15088 2000-04-06  Mark Mitchell  <mark@codesourcery.com>
15089
15090         * cp-tree.h (lang_decl_flags): Rename saved_inline to deferred.
15091         (DECL_SAVED_INLINE): Rename to ...
15092         (DECL_DEFERRED_FN): ... this.
15093         (in_function_p): Remove declaration.
15094         (mark_inline_for_output): Rename to ...
15095         (defer_fn): ... this.
15096         * decl.c (finish_function): Adjust call to mark_inline_for_output.
15097         (in_function_p): Remove definition.
15098         * decl2.c (saved_inlines): Rename to ...
15099         (deferred_fns): ... this.
15100         (saved_inlines_used): Rename to ...
15101         (deferred_fns_used): ... this.
15102         (mark_inline_for_output): Rename to ...
15103         (defer_fn): ... this.
15104         (finish_file): Adjust accordingly.
15105         (init_decl2): Likewise.
15106         * lex.c (cons_up_default_function): Likewise.
15107         * pt.c (mark_decl_instantiated): Likewise.
15108         (instantiate_decl): Don't set DECL_DEFER_OUTPUT under any
15109         circumstances.
15110         * rtti.c (get_tinfo_decl): Adjust call to mark_inline_for_output.
15111         * semantics.c (expand_body): Defer more functions.
15112
15113 2000-04-06  Nathan Sidwell  <nathan@codesourcery.com>
15114
15115         * vec.cc: New file.
15116         * Make-lang.in (CXX_LIB2FUNCS): Add it.
15117         (vec.o): Build it.
15118         * inc/cxxabi.h (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
15119         __cxa_vec_delete): Declare.
15120
15121 2000-04-06  Nathan Sidwell  <nathan@codesourcery.com>
15122
15123         * rtti.c (dfs_class_hint_mark): New static function.
15124         (dfs_class_hint_unmark): New static function.
15125         (class_hint_flags): Use them.
15126
15127 2000-04-05  Benjamin Kosnik  <bkoz@cygnus.com>
15128
15129         * decl2.c: Make flag_honor_std dependent on ENABLE_STD_NAMESPACE.
15130
15131 2000-04-05  Mark Mitchell  <mark@codesourcery.com>
15132
15133         * cp-tree.h (instantiate_decl): Change prototype.
15134         * decl2.c (mark_used): Adjust call.
15135         * optimize.c (inlinable_function_p): Adjust handling of templates.
15136         * pt.c (do_decl_instantiation): Adjust call to instantiate_decl.
15137         (do_type_instantiation): Likewise.
15138         (instantiate_decl): Defer more templates.
15139         (instantiate_pending_templates): Adjust logic to handle inline
15140         friend functions.
15141
15142         * Makefile.in (GGC_H): New variable.  Use it throughout in place
15143         of ggc.h.
15144
15145         * call.c: Don't include obstack.h.  Include ggc.h.
15146         (obstack_chunk_alloc): Don't define.
15147         (obstack_chunk_free): Likewise.
15148         (add_candidate): Allocate the z_candidate with ggc_alloc_obj.
15149         * decl.c (push_switch): Use xmalloc to allocate the cp_switch.
15150         (pop_switch): Free it.
15151
15152         * decl2.c (grokclassfn): Set TREE_READONLY for PARM_DECLs.
15153
15154         * dump.c (dequeue_and_dump): Don't try to print the bit_position
15155         if we don't have a DECL_FIELD_OFFSET.
15156
15157 Wed Apr  5 15:12:18 MET DST 2000  Jan Hubicka  <jh@suse.cz>
15158
15159         * optimize.c (calls_setjmp_r): Use setjmp_call_p instead of
15160         special_function_p.
15161
15162 2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15163
15164         * cfns.gperf (hash, libc_name_p): Prototype.
15165
15166         * rtti.c (build_dynamic_cast_1): Constification.
15167
15168         * search.c (dfs_debug_unmarkedp, dfs_debug_mark): Unhide prototypes.
15169
15170         * semantics.c (deferred_type_access_control): Prototype.
15171
15172 2000-04-04  Mark Mitchell  <mark@codesourcery.com>
15173
15174         Correct many new ABI issues regarding vbase and vcall offset
15175         layout.
15176         * cp-tree.h (BINFO_VTABLE): Document.
15177         (struct lang_type): Tweak formatting.
15178         (BINFO_PRIMARY_BINFO): Add to documentation.
15179         (CLASSTYPE_VSIZE): Fix typo in comment.
15180         (CLASSTYPE_VBASECLASSES): Update documentation.
15181         (BINFO_VBASE_MARKED): Remove.
15182         (SET_BINFO_VBASE_MARKED): Likewise.
15183         (CLEAR_BINFO_VBASE_MARKED): Likewise.
15184         (BINFO_FIELDS_MARKED): Remove.
15185         (SET_BINFO_FIELDS_MARKED): Likewise.
15186         (CLEAR_BINFO_FIELDS_MARKED): Likewise.
15187         (enum access_kind): New enumeration.
15188         (num_extra_vtbl_entries): Remove declaration.
15189         (size_extra_vtbl_entries): Likewise.
15190         (get_vtbl_decl_for_binfo): New function.
15191         (dfs_vbase_unmark): Remove declaration.
15192         (mark_primary_bases): Likewise.
15193         * class.c (SAME_FN): Remove.
15194         (struct vcall_offset_data_s): Move definition.
15195         (build_vbase_pointer): Use `build', not `build_binary_op', to
15196         access the vbase pointer under the new ABI.
15197         (build_vtable_entry_ref): Use get_vtbl_decl_for_binfo.
15198         (build_primary_vtable): Likewise.
15199         (dfs_mark_primary_bases): Move here from search.c.
15200         (mark_primary_bases): Likewise.
15201         (determine_primary_bases): Under the new ABI, don't make a base
15202         class a primary base just because we don't yet have any virtual
15203         functions.
15204         (layout_vtable_decl): Use get_vtbl_decl_for_binfo.
15205         (num_vfun_entries): Remove.
15206         (dfs_count_virtuals): Likewise.
15207         (num_extra_vtbl_entries): Likewise.
15208         (size_extra_vtbl_entries): Likewise.
15209         (layout_virtual_bases): Iterate in inheritance graph order under
15210         the new ABI.
15211         (finish_struct_1): Use TYPE_VFIELD, not CLASSTYPE_VSIZE, to
15212         indicate that a vfield is present.
15213         (init_class_processing): Initialize access_public_node, etc., from
15214         ak_public, etc.
15215         (get_vtbl_decl_for_binfo): New function.
15216         (dump_class_hierarchy_r): Likewise.
15217         (dump_class_hierarchy): Use it.
15218         (finish_vtbls): Build the vtbls in inheritance graph order.
15219         (dfs_finish_vtbls): Adjust call to build_vtbl_initializer.
15220         (initialize_vtable): Use get_vtbl_decl_for_binfo.
15221         (accumulate_vtbl_inits): Add comments explaining why a pre-order
15222         walk is required.
15223         (dfs_accumulate_vtbl_inits): Set BINFO_VTABLE to the location
15224         where the vptr points, even for primary vtables.
15225         (build_vtbl_initializer): Adjust handling of vbase and vcall
15226         offsets.
15227         (build_vcall_and_vbase_vtable_entries): New function.
15228         (dfs_build_vbase_offset_vtbl_entries): Remove.
15229         (build_vbase_offset_vtbl_entries): Reimplement.
15230         (dfs_build_vcall_offset_vtbl_entries): Don't include virtuals that
15231         were already handled in a primary base class vtable.
15232         (build_vcall_offset_vtbl_entries): Adjust.
15233         (build_rtti_vtbl_entries): Adjust.
15234         * decl2.c (output_vtable_inherit): Use get_vtbl_decl_for_binfo.
15235         * init.c (expand_virtual_init): Simplify.
15236         * repo.c (repo_get_id): Use get_vtbl_decl_for_binfo.
15237         * rtti.c (create_pseudo_type_info): Adjust calculation of vptr.
15238         * search.c (BINFO_ACCESS): New macro.
15239         (SET_BINFO_ACCESS): Likewise.
15240         (dfs_access_in_type): Manipulate access_kinds, not access nodes.
15241         (access_in_type): Likewise.
15242         (dfs_accessible_p): Likewise.
15243         (protected_accessible_p): Likewise.
15244         (lookup_fnfields_1): Adjust documentation.
15245         (dfs_mark_primary_bases): Move to class.c
15246         (mark_primary_bases): Likewise.
15247         (dfs_vbase_unmark): Remove.
15248         (virtual_context): Use BINFO_FOR_VBASE.
15249         (dfs_get_vbase_types): Simplify.
15250         (dfs_build_inheritance_graph_order): New function.
15251         (get_vbase_types): Use it.
15252         * tree.c (debug_binfo): Use get_vtbl_decl_for_binfo.
15253
15254         * tinfo.cc (get_vbase_offset): New function.
15255         (__vmi_class_type_info::do_find_public_src): Use it.
15256         (__vmi_class_type_info::do_dyncast): Likewise.
15257         (__vmi_class_type_info::do_upcast): Likewise.
15258
15259 2000-04-03  Zack Weinberg  <zack@wolery.cumb.org>
15260
15261         * lang-specs.h: Pass -fno-show-column to the preprocessor.
15262
15263 2000-03-30  Nathan Sidwell  <nathan@codesourcery.com>
15264
15265         * rtti.c (class_hint_flags): Rename flags.
15266         (class_initializer): Remove flags.
15267         (synthesize_tinfo_var): Combine offset and flags. Add flags
15268         for __vmi_class_type_info.
15269         (create_tinfo_types): Remove flags from __class_type_info and
15270         __si_class_type_info. Merge flags and offset from
15271         base_class_type_info.
15272         * inc/cxxabi.h (__base_class_info): Merge offset and vmi_flags.
15273         (__base_class_info::is_virtual_p): Adjust.
15274         (__base_class_info::is_public_p): Adjust.
15275         (__base_class_info::offset): New accessor.
15276         (__class_type_info::details): Remove member.
15277         (__class_type_info::__class_type_info): Lose details.
15278         (__class_type_info::detail_masks): Remove.
15279         (__si_class_type_info::__si_class_type_info): Lose details.
15280         (__vmi_class_type_info::details): New member.
15281         (__vmi_class_type_info::__vmi_class_type_info): Adjust.
15282         (__vmi_class_type_info::detail_masks): New member.
15283         * tinfo.cc (__class_type_info::do_upcast): Initialize result
15284         with unknown_details_mask.
15285         (__vmi_class_type_info::do_find_public_src): Adjust
15286         (__vmi_class_type_info::do_dyncast): Adjust.
15287         (__vmi_class_type_info::do_upcast): Set result details, if
15288         needed. Adjust.
15289         (__dynamic_cast): Temporarily #if out optimization.
15290
15291 2000-03-29  Nathan Sidwell  <nathan@codesourcery.com>
15292
15293         * rtti.c (get_tinfo_decl): Mark used.
15294         (emit_tinfo_decl): Don't optimize polymorphic type_info. Only
15295         mark as dealt with, if we output it.
15296
15297 2000-03-28  Mark Mitchell  <mark@codesourcery.com>
15298
15299         * class.c: Reorganize to put virtual function table initialization
15300         machinery at the end of the file.
15301
15302 2000-03-28  Jason Merrill  <jason@casey.cygnus.com>
15303
15304         * class.c (finish_struct): Use bitsize_zero_node.
15305         * pt.c (instantiate_class_template): Likewise.
15306
15307 2000-03-28  Mark Mitchell  <mark@codesourcery.com>
15308
15309         Put RTTI entries at negative offsets in new ABI.
15310         * class.c (dfs_build_vbase_offset_vtbl_entries): Put the first
15311         vbase offset at index -3, not -1.
15312         (build_vtabe_offset_vtbl_entries): Use unmarked_vtable_pathp, not
15313         dfs_vtable_path_unmarked_real_bases_queue_p to walk bases.
15314         (dfs_build_vcall_offset_vtbl_entries): Don't use skip_rtti_stuff.
15315         (build_rtti_vtbl_entries): New function.
15316         (set_rtti_entry): Remove.
15317         (build_primary_vtable): Don't use it.
15318         (build_secondary_vtable): Likewise.
15319         (start_vtable): Remove.
15320         (first_vfun_index): New function.
15321         (set_vindex): Likewise.
15322         (add_virtual_function): Don't call start_vtable.  Do call
15323         set_vindex.
15324         (set_primary_base): Rename parameter.
15325         (determine_primary_base): Likewise.
15326         (num_vfun_entries): Don't use skip_rtti_stuff.
15327         (num_extra_vtbl_entries): Include RTTI information.
15328         (build_vtbl_initializer): Use build_rtti_vtbl_entries.
15329         (skip_rtti_stuff): Remove.
15330         (dfs_modify_vtables): Don't use it.
15331         (modify_all_vtables): Don't use start_vtable.  Do use set_vindex.
15332         (layout_nonempty_base_or_field): Update size handling.
15333         (create_vtable_ptr): Tweak.
15334         (layout_class_type): Adjust parameter names.
15335         (finish_struct_1): Simplify.
15336         * cp-tree.h (CLASSTYPE_VSIZE): Tweak documentation.
15337         (skip_rtti_stuff): Remove.
15338         (first_vfun_index): New function.
15339         (dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
15340         (dfs_vtable_path_marked_real_bases_queue_p): Remove.
15341         (marked_vtable_pathp): Declare.
15342         (unmarked_vtable_pathp): Likewise.
15343         * error.c (dump_expr): Use first_vfun_index to calculate vtable
15344         offsets.
15345         * rtti.c (build_headof): Look for RTTI at negative offsets.
15346         (get_tinfo_decl_dynamic): Likewise.
15347         (tinfo_base_init): Don't take the address of the TINFO_VTABLE_DECL
15348         here.
15349         (create_pseudo_type_info): Do it here instead.  Adjust so that
15350         vptr points at first virtual function.
15351         * search.c (marked_vtable_pathp): Make it global.
15352         (unmarked_vtable_pathp): Likewise.
15353         (dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
15354         (dfs_vtable_path_marked_real_bases_queue_p): Likewise.
15355         (dfs_get_pure_virtuals): Don't use skip_rtti_stuff.
15356         (get_pure_virtuals): Likewise.
15357         (expand_upcast_fixups): Likewise.
15358         * tree.c (debug_binfo): Likewise.
15359         * tinfo.cc (__dynamic_cast): Look for vtable_prefix at appropriate
15360         negative offset.
15361
15362 Sun Mar 26 20:15:26 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
15363
15364         * class.c (check_field_decl): Fix typo.
15365         (build_vtbl_or_vbase_field): Don't clear DECL_SAVED_INSNS.
15366         (check_methods): Likewise.
15367         (check_field_decls): Likewise.
15368         Use DECL_CONTEXT, not DECL_FIELD_CONTEXT.
15369         * cp-tree.h (DECL_SHADOWED_FOR_VAR, DECL_TEMPLATE_RESULT):
15370         Use DECL_RESULT_FLD, not DECL_RESULT.
15371         * decl.c (xref_tag): Use DECL_TEMPLATE_RESULT.
15372         * lex.c (identifier_type): Likewise.
15373         * pt.c (determine_specialization, lookup_template_class): Likewise.
15374         (tsubst_friend_function, tsubst_decl, instantiate_template): Likewise.
15375         (resolve_overloaded_unification, more_specialized): Likewise.
15376         * semantics.c (finish_member_declaration): Likewise.
15377         * typeck.c (build_x_function_call): Likewise.
15378
15379 2000-03-26  Mark Mitchell  <mark@codesourcery.com>
15380
15381         * class.c (layout_empty_base): Handle empty bases with non-byte
15382         alignment.
15383         (build_base_field): Likewise.
15384         (layout_virtual_bases): Likewise.
15385
15386         * class.c (finish_struct_1): Fix typo in this change:
15387
15388         Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
15389
15390 2000-03-25  Mark Mitchell  <mark@codesourcery.com>
15391
15392         * decl.c (grokdeclarator): Count partial specializations when
15393         keeping track of how many template classes have been seen.
15394
15395         * dump.c (dequeue_and_dump): Dump DECL_TEMPLATE_RESULT.
15396
15397 Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
15398
15399         * class.c (build_vbase_pointer_fields): layout_field now place_field.
15400         (get_vfield_offset): Use byte_position.
15401         (set_rtti_entry): Set OFFSET to ssizetype zero.
15402         (get_binfo_offset_as_int): Deleted.
15403         (dfs_record_base_offsets): Use tree_low_cst.
15404         (dfs_search_base_offsets): Likewise.
15405         (layout_nonempty_base_or_field): Reflect changes in RLI format
15406         and call byte_position.
15407         (layout_empty_base): Convert offset to ssizetype.
15408         (build_base_field): use rli_size_unit_so_far.
15409         (dfs_propagate_binfo_offsets): Do computation in proper type.
15410         (layout_virtual_bases): Pass ssizetype to propagate_binfo_offsets.
15411         (layout_class_type): Reflect changes in RLI names and fields.
15412         (finish_struct_1): Set DECL_FIELD_OFFSET.
15413         * dump.c (dequeue_and_dump): Call bit_position.
15414         * expr.c (cplus_expand_constant): Use byte_position.
15415         * rtti.c (expand_class_desc): Use bitsize_one_node.
15416         * typeck.c (build_component_addr): Use byte_position and don't
15417         special case for zero offset.
15418
15419 2000-03-24  Nathan Sidwell  <nathan@codesourcery.com>
15420
15421         * decl.c (vtype_decl_p): Use TYPE_POLYMORPHIC_P.
15422
15423         * rtti.c (get_tinfo_decl): Set comdat linkage on new-abi
15424         tinfo object.
15425         (emit_tinfo_decl): Only emit polymorphic tinfo's when emitting
15426         vtable.
15427
15428 2000-03-20 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
15429
15430         * call.c (check_dtor_name, build_new_method_call): Use TYPE_P and
15431         DECL_P macros.
15432         * decl.c (push_class_binding, poplevel, pushtag, lookup_namespace_name,
15433         make_typename_type, check_initializer, cp_finish_decl,
15434         xref_tag): Likewise.
15435         * decl2.c (grokfield, build_expr_from_tree, build_expr_from_tree,
15436         decl_namespace, arg_assoc_template_arg, arg_assoc,
15437         validate_nonmember_using_decl, do_class_using_decl): Likewise.
15438         * error.c (dump_template_argument, dump_expr, cp_file_of, cp_line_of,
15439         args_to_string): Likewise.
15440         * friend.c (is_friend): Likewise.
15441         * lex.c (note_got_semicolon, note_list_got_semicolon,
15442         is_global): Likewise.
15443         * method.c (build_overload_nested_name, build_overload_value,
15444         build_qualified_name, build_qualified_name, hack_identifier): Likewise.
15445         * parse.y (typename_sub, typename_sub1): Likewise.
15446         * pt.c (push_inline_template_parms_recursive, check_template_shadow,
15447         process_partial_specialization, convert_template_argument,
15448         template_args_equal, add_pending_template, lookup_template_class,
15449         for_each_template_parm_r, maybe_fold_nontype_arg,
15450         tsubst, instantiate_template, type_unification_real, unify,
15451         instantiate_pending_templates, set_mangled_name_for_template_decl):
15452         Likewise.
15453         * repo.c (repo_get_id, repo_template_used): Likewise.
15454         * search.c (lookup_field_1): Likewise.
15455         * tree.c (walk_tree, get_type_decl, cp_tree_equal, member_p): Likewise.
15456         * xref.c (classname): Likewise.
15457
15458 2000-03-22  Mark Mitchell  <mark@codesourcery.com>
15459
15460         * cp-tree.h (BINFO_FOR_VBASE): Adjust documentation.
15461         (CANONICAL_BINFO): New macro.
15462         (BINFO_NEW_VTABLE_MARKED): Use it.
15463         (SET_BINFO_NEW_VTABLE_MARKED): Likewise.
15464         (CLEAR_BINFO_NEW_VTABLE_MARKED): Likewise.
15465         * class.c (dfs_build_vbase_offset_vtbl_entries): Use BINFO_TYPE,
15466         not TREE_TYPE.
15467         (build_primary_vtable): Adjust usage of BINFO_NEW_VTABLE_MARKED.
15468         (build_secondary_vtable): Likewise.
15469         (dfs_finish_vtbls): Likewise.
15470         (dfs_accumulate_vtbl_inits): Likewise.
15471         (accumulate_vtbl_inits): New function.
15472         (finish_vtbls): Make sure that virtual bases come after
15473         non-virtual bases in the vtable group.
15474         (record_base_offsets): Don't save and restore TREE_VIA_VIRTUAL.
15475         (finish_struct_1): Adjust usage of BINFO_NEW_VTABLE_MARKED.
15476         * search.c (struct vbase_info): Move definition.
15477         (marked_new_vtable_p): Adjust usage of BINFO_NEW_VTABLE_MARKED.
15478         (unmarked_new_vtable_p): Likewise.
15479         (dfs_mark_vtable_path): Remove.
15480         (dfs_mark_new_vtable): Remove.
15481         (dfs_unmark_new_vtable): Likewise.
15482         (dfs_clear_search_slot): Likewise.
15483         (dfs_find_vbases):  Adjust usage of BINFO_NEW_VTABLE_MARKED.
15484         (dfs_clear_vbase_slots): Likewise.
15485         (init_vbase_pointers): LIkewise.
15486
15487 2000-03-22  Jason Merrill  <jason@casey.cygnus.com>
15488
15489         * typeck.c (type_after_usual_arithmetic_conversions): Prefer a
15490         SIZETYPE to a non-SIZETYPE.
15491
15492 2000-03-21  Mark Mitchell  <mark@codesourcery.com>
15493
15494         * class.c (layout_virtual_bases): Adjust names in conditionally
15495         compiled code.
15496
15497         * class.c (record_base_offsets): New function.
15498         (layout_conflict_p): Likewise.
15499         (layout_nonempty_base_or_field): Use it.
15500         (layout_empty_base): New function.
15501         (build_base_field): Use it.
15502         (build_base_fields): Update comment.
15503         (layout_virtual_bases): Fold in a little code form
15504         layout_basetypes.  Use layout_empty_base.
15505         (layout_basetypes): Remove.
15506         (end_of_class): New function.
15507         (layout_class_type): Use it.  Adjust.
15508
15509         * cp-tree.h (CLASSTYPE_VBASECLASSES): Fix typo in comment.
15510         (fntype_p): Remove.
15511         * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Fix typo in
15512         comment.
15513         (dfs_skip_nonprimary_vbases_markedp): Likewise.
15514         * typeck.c (fntype_p): Remove.
15515
15516         * cp-tree.h (TI_SPEC_INFO): Remove.
15517         (CLASSTYPE_TI_SPEC_INFO): Likewise.
15518         * pt.c (process_partial_specialization): Likewise.
15519
15520         * class.c (build_base_field): Fix thinko in computation of binfo
15521         offsets.
15522
15523         * tree.c (mark_local_for_remap_p): Mark variables declared in
15524         TARGET_EXPRs as well.
15525
15526 2000-03-21  Nathan Sidwell  <nathan@codesourcery.com>
15527
15528         * typeck.c (require_complete_type, complete_type,
15529         complete_type_or_else, c_sizeof, c_sizeof_nowarn,
15530         build_array_ref, convert_arguments, pointer_diff,
15531         build_x_unary_op, build_unary_op, build_c_cast,
15532         build_modify_expr): Use COMPLETE_TYPE_P etc.
15533         * call.c (is_complete, convert_like_real,
15534         build_new_method_call): Likewise.
15535         * class.c (build_vbase_pointer_fields, check_bases,
15536         build_base_field, finish_struct_1, pushclass): Likewise.
15537         * cvt.c (cp_convert_to_pointer, convert_to_void): Likewise.
15538         * decl.c (maybe_process_template_type_declaration, pushtag,
15539         pushdecl, redeclaration_error_message, start_decl, start_decl_1,
15540         layout_var_decl, check_initializer, cp_finish_decl,
15541         grokdeclarator, require_complete_types_for_parms,
15542         grok_op_properties, xref_tag, xref_basetypes,
15543         check_function_type): Likewise.
15544         * decl2.c (check_classfn, reparse_absdcl_as_casts): Likewise.
15545         * friend.c (do_friend): Likewise.
15546         * init.c (build_offset_ref): Likewise.
15547         * parse.y (structsp): Likewise.
15548         * pt.c (maybe_process_partial_specialization,
15549         tsubst_friend_function, instantiate_class_template, tsubst,
15550         do_type_instantiation, instantiate_pending_templates): Likewise.
15551         * repo.c (repo_get_id): Likewise.
15552         * rtti.c (build_typeid, get_typeid, build_dynamic_cast_1,
15553         synthesize_tinfo_var, emit_support_tinfos): Likewise.
15554         * search.c (lookup_fnfields_1, lookup_conversions): Likewise.
15555         * semantics.c (begin_class_definition): Likewise.
15556         * tree.c (build_cplus_method_type): Likewise.
15557         * typeck2.c (digest_init, build_functional_cast,
15558         add_exception_specifier): Likewise.
15559         * parse.h, parse.c: Regenerated.
15560
15561 2000-03-21  Nathan Sidwell  <nathan@codesourcery.com>
15562
15563         * inc/cxxabi.h: New header file. Define new-abi entry points.
15564         (__pointer_type_info::target): Rename member to ...
15565         (__pointer_type_info::type): ... here.
15566         (__base_class_info::type): Rename member to ...
15567         (__base_class_info::base): ... here.
15568         * Make-lang.in (CXX_EXTRA_HEADERS): Add cxxabi.h
15569         * cp-tree.h (CPTI_ABI): New global tree enumeration.
15570         (abi_node): New global tree node.
15571         * decl.c (abi_node): Document.
15572         (init_decl_processing): Initialize abi_node.
15573         * rtti.c (build_dynamic_cast_1): Use abi_node for new-abi.
15574         (get_vmi_pseudo_type_info): Likewise.
15575         (create_tinfo_types): Likewise.
15576         (emit_support_tinfos): Likewise.
15577         * tinfo.h (cxxabi.h): Include for new-abi.
15578         Move rtti class definitions to new header file.
15579         * tinfo.cc (abi): Use the namespace.
15580         (std): Move new abi rtti classes from here ...
15581         (__cxxabiv1): ... to here.
15582         * tinfo2.cc (cxxabi.h): Include for new-abi.
15583         Move rtti class definitions to new header file.
15584         (std): Move new abi rtti classes from here ...
15585         (__cxxabiv1): ... to here.
15586         * inc/typeinfo (__class_type_info): Move into __cxxabiv1
15587         namespace.
15588
15589 2000-03-20  Jed Wing <jedwin@zloty.ugcs.caltech.edu>
15590             Jason Merrill  <jason@casey.cygnus.com>
15591
15592         * method.c (build_overload_int): Use host_integerp.
15593
15594 2000-03-20 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
15595
15596         * init.c (build_offset_ref): Handle the case of a templated member
15597         function.
15598
15599 2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
15600
15601         * except.c (expand_exception_blocks): Clear catch_clauses_last.
15602
15603 2000-03-18  Mark Mitchell  <mark@codesourcery.com>
15604
15605         * cp-tree.h (CLEAR_DECL_C_BIT_FIELD): New macro.
15606         * class.c (check_bitfield_decl): Turn illegal bitfields into
15607         non-bitfields.
15608         (dfs_propagate_binfo_offsets): Adjust for new size_binop
15609         semantics.
15610         (dfs_offset_for_unshared_vbases): Likewise.
15611         * cvt.c (cp_convert_to_pointer): Convert NULL to a
15612         pointer-to-member correctly under the new ABI.
15613         * expr.c (cplus_expand_constant): Don't use cp_convert when
15614         turning an offset into a pointer-to-member.
15615         * init.c (resolve_offset_ref): Don't adjust pointers-to-members
15616         when dereferencing them under the new ABI.
15617         * typeck.c (get_member_function_from_ptrfunc): Tweak calculation
15618         of pointers-to-members under the new ABI.
15619
15620         * class.c (check_bitfield_decl): Remove restriction on really long
15621         bitfields.
15622         (layout_class_type): Implement new ABI handling of bitfields
15623         longer than their types.
15624
15625 2000-03-18  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
15626
15627         * parse.y (extdefs): Call ggc_collect.
15628         * parse.c: Regenerated.
15629
15630 2000-03-18  Nathan Sidwell  <nathan@codesourcery.com>
15631
15632         * class.c (build_base_field): Use TYPE_ALIGN to examine a type.
15633         (note_name_declared_in_class): Use OVL_CURRENT to get at a
15634         potential overload.
15635
15636 Fri Mar 17 08:09:14 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
15637
15638         * class.c (build_vbase_path): Use integer_zerop.
15639         (build_vtable_entry): Use tree_low_cst.
15640         (get_vfield_offset): Use bit_position.
15641         (dfs_modify_vtables): New variable vindex_val; `i' is HOST_WIDE_INT.
15642         Use tree_low_cst.
15643         (check_bitfield_decl): Set DECL_SIZE using convert.
15644         (build_base_field): Set DECL_SIZE and DECL_SIZE_UNIT using size_binop.
15645         (layout_virtual_bases): DSIZE is unsigned HOST_WIDE_INT.
15646         Use tree_low_cst.
15647         (finish_struct_1): Use bit_position.
15648         (dump_class_hierarchy): Use tree_low_cst.
15649         * cp-tree.h (min_precision): Add declaration.
15650         * decl.c (xref_tag, xref_basetypes): Use tree_low_cst.
15651         * error.c (dump_type_suffix): Use host_integerp and tree_low_cst.
15652         (dump_expr): Use integer_zerop, host_integerp, and tree_low_cst.
15653         * expr.c (cplus_expand_constant): Use bit_position.
15654         * init.c (build_vec_init): Use host_integerp and tree_low_cst.
15655         * rtti.c (get_base_offset): Use bit_position.
15656         * typeck.c (build_binary_op): Use integer_zerop, compare_tree_int,
15657         host_integerp, and tree_low_cst.
15658         (pointer_int_sum): Use integer_zerop.
15659         (build_component_addr): Use bit_position.
15660
15661 2000-03-17  Nathan Sidwell  <nathan@codesourcery.com>
15662
15663         * typeck.c (require_complete_type): Don't assume size_zero_node.
15664         (complete_type_or_else): Likewise.
15665
15666 2000-03-16  Steven Grady <grady@digitaldeck.com>
15667             Jason Merrill  <jason@casey.cygnus.com>
15668
15669         * rtti.c (build_dynamic_cast_1): Improve diagnostics.
15670
15671 2000-03-16  Nathan Sidwell  <nathan@codesourcery.com>
15672
15673         * decl2.c (grokfield): Bail out if type is error_mark_node.
15674
15675 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
15676
15677         * tinfo2.cc (__ptr_to_member_data): Rename to ...
15678         (__pointer_to_member_data): ... here. Adjust.
15679         * rtti.c (create_tinfo_types): Adjust.
15680
15681 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
15682
15683         * cp-tree.h (CPTI_REF_DESC_TYPE, ref_desc_type_node): Remove.
15684         * decl.c (ref_desc_type_node): Undocument.
15685         * rtti.c (ptr_ref_initializer): Rename to ...
15686         (ptr_initializer): ... here. Adjust comments.
15687         (ptmd_initializer): Fix comment thinko.
15688         (synthesize_tinfo_var): Remove REFERENCE_TYPE case.
15689         (create_tinfo_types): Remove ref_desc_type_node init.
15690         * tinfo2.cc (__reference_type_info): Remove.
15691
15692 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
15693
15694         * decl.c (cp_finish_decl): Remove obsolete comment.
15695
15696         * typeck.c (build_ptrmemfunc1): Kill uninitialized warning.
15697
15698 2000-03-14  Mark Mitchell  <mark@codesourcery.com>
15699
15700         * cp-tree.h: Tweak documentation.
15701         * class.c (build_vbase_pointer_fields): Layout the fields, too.
15702         (avoid_overlap): Remove.
15703         (get_binfo_offset_as_int): New function.
15704         (dfs_serach_base_offsets): Likewise.
15705         (layout_nonempty_base_or_field): Likewise.
15706         (build_base_field): Layout fields here.  Avoid placing two objects
15707         of the same type at the same address, under the new ABI.
15708         (build_base_fields): Adjust accordingly.
15709         (create_vtable_ptr): Return the new field, but don't attach it to
15710         TYPE_FIELDS.
15711         (remove_base_field): Remove.
15712         (remove_base_fields): Remove.
15713         (layout_basetypes): Adjust accordingly.
15714         (layout_class_type): Call layout_field for each field, rather than
15715         just making a wholesale call to layout_type.
15716
15717 2000-03-14  Jeff Sturm  <jsturm@sigma6.com>
15718
15719         * except.c (expand_throw): Fix typo in _Jv_Sjlj_Throw.
15720
15721 2000-03-13  Jason Merrill  <jason@casey.cygnus.com>
15722
15723         * decl.c (grokfndecl): Set TREE_NOTHROW if TYPE_NOTHROW_P.
15724
15725         * except.c (dtor_nothrow): New fn.
15726         (do_pop_exception): Use it.  Take type parm.
15727         (push_eh_cleanup): Take type parm.
15728         (expand_start_catch_block): Pass it.
15729         (build_eh_type_type_ref): Accept null type.
15730
15731 2000-03-12  Mark Mitchell  <mark@codesourcery.com>
15732
15733         * cp-tree.h (revert_static_member_fn): Change prototype.
15734         * decl.c (grokfndecl): Adjust call to revert_static_member_fn.
15735         (grok_op_properties): Likewise.
15736         (start_function): Likewise.
15737         (revert_static_member_fn): Simplify.
15738         * pt.c (check_explicit_specialization): Adjust call to
15739         revert_static_member_fn.
15740
15741 2000-03-11  Mark Mitchell  <mark@codesourcery.com>
15742
15743         * cp-tree.h (scope_kind): New type.
15744         (tmpl_spec_kind): Likewise.
15745         (declare_pseudo_global_level): Remove.
15746         (pseudo_global_level_p): Rename to template_parm_scope_p.
15747         (pushlevel): Remove declaration.
15748         (begin_scope): New function.
15749         (finish_scope): Likewise.
15750         (current_tmpl_spec_kind): Likewise.
15751         * decl.c (struct binding_level): Shorten parm_flag to 2 bits.
15752         Shorten keep to 2 bits.  Rename pseudo_global to template_parms_p.
15753         Add template_spec_p.
15754         (toplevel_bindings_p): Adjust.
15755         (declare_pseudo_global_level): Remove.
15756         (pseudo_global_level_p): Rename to template_parm_scope_p.
15757         (current_tmpl_spec_kind): New function.
15758         (begin_scope): Likewise.
15759         (finish_scope): Likewise.
15760         (maybe_push_to_top_level): Adjust.
15761         (maybe_process_template_type_declaration): Likewise.
15762         (pushtag): Likewise.
15763         (pushdecl_nonclass_level): Likewise.
15764         (lookup_tag): Likewise.
15765         (grokfndecl): Handle member template specializations.  Share
15766         constructor and non-constructor code.
15767         * decl2.c (check_classfn): Handle member template specializations.
15768         * pt.c (begin_template_parm_list): Use begin_scope.
15769         (begin_specialization): Likewise.
15770         (end_specialization): Likewise.
15771         (check_explicit_specialization): Use current_tmpl_spec_kind.
15772         Handle member template specializations.
15773         (end_template_decl): Use finish_scope.  Remove call to
15774         get_pending_sizes.
15775         (push_template_decl_real): Remove bogus error message.
15776         (tsubst_decl): Fix typo in code contained in comment.
15777         (instantiate_template): Handle member template specializations.
15778         (most_general_template): Likewise.
15779
15780 2000-03-11  Gabriel Dos Reis  <gdr@codesourcery.com>
15781
15782         * lex.c (whitespace_cr): Compress consecutive calls to warning().
15783         (do_identifier): Ditto for error().
15784
15785         * pt.c (convert_nontype_argument): Ditto for cp_error().
15786         (convert_template_argument): Ditto for cp_pedwarn().
15787
15788 2000-03-11  Jason Merrill  <jason@casey.cygnus.com>
15789
15790         * exception.cc (__check_null_eh_spec): New fn.
15791         * except.c (expand_end_eh_spec): Call it if the spec is throw().
15792
15793 2000-03-10  Jason Merrill  <jason@casey.cygnus.com>
15794
15795         * decl.c (push_throw_library_fn): Take the FUNCTION_TYPE.
15796         * except.c (expand_end_eh_spec): Add the return type.
15797         * rtti.c (throw_bad_cast): Add the parmtypes.
15798         (throw_bad_typeid): Likewise.
15799
15800         * semantics.c (expand_stmt): Only leave out rtl for unused
15801         artificials, and set DECL_IGNORED_P on them as well.
15802         * decl.c (wrapup_globals_for_namespace): Likewise.
15803
15804 2000-03-09  Nathan Sidwell  <nathan@codesourcery.com>
15805
15806         * decl.c (maybe_commonize_var): Skip all artificial decls.
15807         * pt.c (tsubst_decl): Don't copy TREE_ASM_WRITTEN.
15808
15809 2000-03-10  Jason Merrill  <jason@casey.cygnus.com>
15810
15811         * lang-options.h, decl2.c: Add -fno-enforce-eh-specs.
15812         * cp-tree.h: Declare flag_enforce_eh_specs.
15813         * decl.c (store_parm_decls, finish_function): Check it.
15814
15815         C library functions don't throw.
15816         * Makefile.in (cfns.h): New target.
15817         (except.o): Depend on it.
15818         * Make-lang.in (cc1plus): Depend on cfns.gperf.
15819         * cfns.gperf: New file.
15820         * cfns.h: Generated.
15821         * except.c: Include it.
15822         (nothrow_libfn_p): New fn.
15823         * decl.c (grokfndecl): Use it.
15824         * cp-tree.h: Declare it.
15825
15826         * decl.c (push_overloaded_decl_1, auto_function,
15827         define_function): Lose.
15828         (build_library_fn_1): New static fn.
15829         (builtin_function): Use it.
15830         (get_atexit_node): Use build_library_fn_ptr.
15831         (build_library_fn, build_cp_library_fn, build_library_fn_ptr,
15832         build_cp_library_fn_ptr, push_library_fn, push_cp_library_fn,
15833         push_void_library_fn, push_throw_library_fn): New fns.
15834         * cp-tree.h: Declare them.
15835         (cp_tree_index): Remove CPTI_BAD_CAST, CPTI_BAD_TYPEID.
15836         (throw_bad_cast_node, throw_bad_typeid_node): Lose.
15837         * except.c (init_exception_processing, call_eh_info, do_pop_exception,
15838         (expand_end_eh_spec, alloc_eh_object, expand_throw): Use above fns.
15839         * rtti.c (build_runtime_decl): Lose.
15840         (throw_bad_cast, throw_bad_typeid, get_tinfo_decl,
15841         build_dynamic_cast_1, expand_si_desc, expand_class_desc,
15842         expand_ptr_desc, expand_attr_desc, expand_generic_desc): Use above fns.
15843
15844         * call.c (build_call): Remove result_type parm.
15845         Call mark_used on unused artificial fns.
15846         * init.c, method.c, typeck.c, except.c, rtti.c: Adjust.
15847
15848 2000-03-09  Jason Merrill  <jason@casey.cygnus.com>
15849
15850         * call.c (build_call): Set TREE_NOTHROW on the CALL_EXPR as
15851         appropriate.
15852         * decl.c (define_function): Set TREE_NOTHROW on the FUNCTION_DECL.
15853         * except.c (call_eh_info, alloc_eh_object, expand_throw): Set
15854         TREE_NOTHROW or TREE_THIS_VOLATILE on the function as appropriate.
15855         * rtti.c (build_runtime_decl, get_tinfo_decl, build_dynamic_cast_1,
15856         expand_si_desc, expand_class_desc, expand_ptr_desc, expand_attr_desc,
15857         expand_generic_desc): Likewise.
15858
15859 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
15860
15861         * exception.cc (__cp_pop_exception): Cleanup the original object.
15862
15863 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
15864
15865         * decl.c (grok_op_properties): Merge conversion to void warning
15866         with other silly op warnings.
15867
15868 2000-03-08  Jason Merrill  <jason@casey.cygnus.com>
15869
15870         * typeck2.c (process_init_constructor): Set TREE_PURPOSE of
15871         array CONSTRUCTOR elements.  Don't use expr_tree_cons.
15872
15873 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
15874
15875         * decl.c (cp_make_fname_decl): New function.
15876         (wrapup_globals_for_namespace): Don't emit unused static vars.
15877         (init_decl_processing): Remove comment about use of
15878         array_domain_type. Set make_fname_decl.
15879         (cp_finish_decl): Remove __FUNCTION__ nadgering.
15880         * semantics.c (begin_compound_stmt): Remove
15881         current_function_name_declared flagging.
15882         (expand_stmt): Don't emit unused local statics.
15883         * typeck.c (decay_conversion): Don't treat __FUNCTION__ decls
15884         specially.
15885
15886 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
15887
15888         * typeck.c (convert_for_assignment): Don't look at array
15889         initializer.
15890         * call.c (convert_like_real): Likewise.
15891
15892 2000-03-07  Jason Merrill  <jason@casey.cygnus.com>
15893
15894         Add initial support for '\uNNNN' specifier.
15895         * lex.c (read_ucs): New fn.
15896         (readescape, skip_white_space): Call it.
15897         (is_extended_char, is_extended_char_1): New fns.
15898         (utf8_extend_token): New fn, #if 0'd out.
15899         (real_yylex): Treat extended chars like letters.
15900
15901         * search.c (note_debug_info_needed): Walk the bases even if we
15902         weren't deferring the type itself.
15903
15904 2000-03-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15905
15906         * decl2.c (finish_objects): Constify a char*.
15907
15908         * method.c (emit_thunk): Likewise.
15909
15910 2000-03-06  Nathan Sidwell  <nathan@codesourcery.com>
15911
15912         * typeck.c (dubious_conversion_warnings): Look through
15913         REFERENCE_TYPE.
15914
15915 Mon Mar  6 08:46:47 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
15916
15917         * class.c (dfs_modify_vtables): I is now unsigned.
15918         (check_bitfield_decl): Use tree_int_cst_sgn and compare_tree_int.
15919         (build_base_field): Add casts of TREE_INT_CST_LOW to HOST_WIDE_INT.
15920         * error.c (dump_expr): Cast TREE_INT_CST_HIGH to unsigned.
15921         * init.c (build_vec_init): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
15922         * method.c (build_overload_int): Cast TREE_INT_CST_HIGH to unsigned.
15923         * typeck.c (build_binary_op, case TRUNC_DIV_EXPR):
15924         Call integer_all_onesp.
15925         * typeck2.c (process_init_constructor): Use compare_tree_int.
15926
15927         * lang-specs.h (as): Don't call if -syntax-only.
15928
15929 2000-03-06  Mark Mitchell  <mark@codesourcery.com>
15930
15931         * expr.c (cplus_expand_expr, case STMT_EXPR): Don't set
15932         RTL_EXPR_HAS_NO_SCOPE after all.
15933
15934 2000-03-05  Mark Mitchell  <mark@codesourcery.com>
15935
15936         * expr.c (cplus_expand_expr, case STMT_EXPR): Use
15937         expand_start_stmt_expr and expand_end_stmt_expr directly.  Set
15938         RTL_EXPR_HAS_NO_SCOPE.
15939
15940         * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG a little
15941         later.
15942
15943         * dump.c (dequeue_and_dump): Dump SCOPE_NO_CLEANUPS_P.
15944
15945 2000-03-05  Nathan Sidwell  <nathan@codesourcery.com>
15946
15947         * call.c (convert_like): Macrofy.
15948         (convert_like_with_context): New macro.
15949         (convert_like_real): Renamed from convert_like.  Add calling
15950         context parameters, for diagnostics. Add recursive flag.  Call
15951         dubious_conversion_warnings for outer conversion.
15952         (build_user_type_conversion): Use convert_like_with_context.
15953         (build_over_call): Likewise. Don't warn about dubious
15954         conversions here. Adjust convert_default_arg calls.
15955         (convert_default_arg): Add context parameters for diagnostics.
15956         Pass through to convert_like_with_context.
15957         * cp-tree.h (convert_default_arg): Add context parameters.
15958         (dubious_conversion_warnings): Prototype new function.
15959         * typeck.c (convert_arguments): Adjust convert_default_arg call.
15960         (dubious_conversion_warnings): New function, broken
15961         out of convert_for_assignment.
15962         (convert_for_assignment): Adjust.
15963
15964 2000-03-03  Jason Merrill  <jason@casey.cygnus.com>
15965
15966         * decl2.c (key_method): Break out from...
15967         (import_export_vtable, import_export_class): ...here.
15968
15969         * decl.c (finish_function): Don't mess with flag_keep_inline_functions.
15970         * decl2.c (finish_vtable_vardecl): Don't check decl_function_context.
15971
15972         * search.c (note_debug_info_needed, dfs_debug_mark,
15973         dfs_debug_unmarkedp): Uncomment.  Adjust for new scheme.
15974         * decl2.c (finish_vtable_vardecl): Call note_debug_info_needed.
15975
15976 2000-03-03  Nathan Sidwell  <nathan@codesourcery.com>
15977
15978         * decl.c (cp_finish_decl): Remove obsolete obstack comments, fix
15979         typos.
15980
15981 2000-03-02  Mark Mitchell  <mark@codesourcery.com>
15982
15983         * cp-tree.h (TYPE_NEEDS_DESTRUCTOR): Rename to ...
15984         (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): ... this.
15985         (TYPE_HAS_TRIVIAL_DESTRUCTOR): New macro.
15986         (lang_type): Split gets_new into has_new and has_array_new.
15987         (TYPE_VEC_NEW_USES_COOKIE): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
15988         (TYPE_GETS_NEW): Split into ...
15989         (TYPE_HAS_NEW_OPERATOR): ... this, and ...
15990         (TYPE_HAS_ARRAY_NEW_OPERATOR): ... this.
15991         (DECL_ARRAY_DELETE_OPERATOR_P): New macro
15992         (build_op_new_call): Don't declare.
15993         (build_new_1): Likewise.
15994         * call.c (build_op_new_call): Remove.
15995         * class.c (check_bases): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR
15996         instead of TYPE_NEEDS_DESTRUCTOR.
15997         (finish_struct_bits): Likewise.
15998         (add_implicitly_declared_members): Likewise.
15999         (check_field_decl): Likewise.
16000         (check_methods): Set TYPE_VEC_DELETE_TAKES_SIZE here, and set it
16001         correctly under the new ABI.
16002         * decl.c (start_decl_1): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR
16003         instead of TYPE_NEEDS_DESTRUCTOR.
16004         (initialize_local_var): Likewise.
16005         (destroy_local_var): Likewise.
16006         (cp_finish_decl): Likewise.
16007         (register_dtor_fn): Likewise.
16008         (grok_op_properties): Set TYPE_HAS_NEW_OPERATOR and
16009         TYPE_HAS_ARRAY_NEW_OPERATOR, not TYPE_HAS_NEW.  Don't set
16010         TYPE_VEC_DELETE_TAKES_SIZE here.
16011         (xref_basetypes): Set TYPE_HAS_NEW_OPERATOR and
16012         TYPE_HAS_ARRAY_NEW_OPERATOR, not TYPE_HAS_NEW.
16013         (store_parm_decls):  Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
16014         (finish_destructor_body): Likewise.
16015         (maybe_build_cleanup_1): Likewise.
16016         * decl2.c (do_static_destruction): Likewise.
16017         * init.c (build_new_1): Make it static.
16018         (perform_member_init): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
16019         (expand_cleanup_for_base): Likewise.
16020         (get_cookie_size): New function.
16021         (build_new_1): Handle array-new cookies correctly under the new
16022         ABI.
16023         (build_vec_delete_1): Likewise.
16024         (build_vec_init):  Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
16025         (build_delete): Likewise.
16026         (build_vec_delete): Handle array-new cookies correctly under the new
16027         ABI.
16028         * lex.c (do_identifier): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
16029         * pt.c (instantiate_class_template): Set TYPE_HAS_NEW_OPERATOR and
16030         TYPE_HAS_ARRAY_NEW_OPERATOR.
16031         * ptree.c (print_lang_type): Check them.
16032         * search.c (context_for_name_lookup): Fix typo in comment.
16033         (tree_has_any_destructor_p): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
16034         * tree.c (break_out_cleanups): Likewise.
16035         (build_cplus_array_test_1): Likewise.
16036         (cp_build_qualified_type_real): Likewise.
16037         * typeck.c (complete_type): Likewise.
16038
16039         * g++spec.c (lang_specific_driver): Add -fnew-abi at the start of
16040         the command-line, not the end.
16041
16042 2000-03-01  Jason Merrill  <jason@casey.cygnus.com>
16043
16044         * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG.
16045
16046 2000-03-02  Tom Tromey  <tromey@cygnus.com>
16047
16048         * cp-tree.h (build_java_class_ref): Declare.
16049         * init.c (build_java_class_ref): No longer static.
16050         * except.c (expand_throw): Generate a Java-style `throw' if the
16051         thrown object is a "Java" object.
16052         (initialize_handler_parm): Generate a Java-style lookup of
16053         exception info if the caught object is a "Java" object.
16054         (catch_language, catch_language_init): New globals.
16055         (decl_is_java_type): New function.
16056         (expand_start_catch_block): Don't call push_eh_info() or
16057         push_eh_cleanup() when handling a Java-style "catch".  Pass Java
16058         class reference to build_catch_block.
16059
16060 Thu Mar  2 13:32:01 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
16061
16062         * typeck.c (comptypes): Treat sizetype like its language equivalent.
16063
16064 2000-03-01  Bernd Schmidt  <bernds@cygnus.co.uk>
16065
16066         * typeck.c (maybe_warn_about_returning_address_of_local): Reorganize
16067         to merge reference/pointer code and fix incorrect warnings.
16068
16069 2000-02-29  Jason Merrill  <jason@casey.cygnus.com>
16070
16071         * search.c (protected_accessible_p): Use context_for_name_lookup.
16072
16073         * init.c (construct_virtual_bases): Fix thinko.
16074         * typeck.c (expand_ptrmemfunc_cst): Fix thinko.
16075
16076 2000-03-01  Martin von Loewis  <loewis@informatik.hu-berlin.de>
16077
16078         * decl.c (current_function_decl): Move to toplev.c.
16079
16080 2000-02-29  Nathan Sidwell  <nathan@codesourcery.com>
16081
16082         * pt.c (fn_type_unification): Unify return type, whenever
16083         provided.
16084         (get_bindings_real): Only pass return type when necessary.
16085         Remove explicit return type check.
16086         * class.c (resolve_address_of_overloaded_function): Pass desired
16087         return type to fn_type_unification.
16088
16089 Mon Feb 28 08:15:23 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
16090
16091         * class.c (build_vtbl_or_vbase_field, check_methods): Don't clear
16092         DECL_FIELD_SIZE.
16093         (check_bitfield_decl, check_field_decls): Set DECL_SIZE, not
16094         DECL_FIELD_SIZE.
16095         * rtti.c (expand_class_desc): Likewise.
16096         * cp-tree.h (DECL_INIT_PRIORITY): Use underlying union name.
16097         (THUNK_VCALL_OFFSET): Likewise.
16098         (THUNK_DELTA): Reflect changes in ../tree.h.
16099
16100 2000-02-28  Jason Merrill  <jason@casey.cygnus.com>
16101
16102         * search.c (protected_accessible_p): Also allow the access if
16103         the member is public in DERIVED.  Lose TYPE parm.
16104         (friend_accessible_p): Lose TYPE parm.
16105         (accessible_p): Adjust.
16106
16107 Sun Feb 27 16:40:33 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
16108
16109         * class.c (dfs_build_vtable_offset_vtbl_entries): Don't use size_binop
16110         on things that are not sizes; ssize_binop deleted.
16111         Call size_diffop when appropriate.
16112         (dfs_build_vcall_offset_vtbl_entries): Likewise.
16113         (build_primary_vtable, build_secondary_vtable): Likewise.
16114         (dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise.
16115         Variable I is HOST_WIDE_INT.
16116         (get_vfield_offset): Pass proper types to size_binop.
16117         (size_extra_vtbl_entries, layout_virtual_bases): Likewise.
16118         (finish_struct_1): Likewise.
16119         (skip_rtti_stuff): Arg N is now pointer to signed.
16120         (layout_class_type): Use size_zero_node.
16121         * cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed.
16122         * cvt.c (cp_convert_to_pointer): Pass proper types to size_binop.
16123         * decl.c (complete_arry_type): Pass proper types to size_binop.
16124         (xref_basetypes): BINFO_OFFSET is sizetype.
16125         * error.c (dump_expr): Don't use size_binop non-sizes.
16126         * expr.c (cplus_expand_constant): Pass proper types to size_binop.
16127         * init.c (construct_virtual_bases): Fix type error.
16128         (build_vec_delete_1): Pass proper type to size_binop and don't
16129         fold result.
16130         * lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype.
16131         * rtti.c (get_base_offset): Pass proper type to size_binop.
16132         * search.c (dfs_find_vbases): Fix type error.
16133         (expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed.
16134         (dfs_get_vbase_types): BINFO_OFFSET is sizetype.
16135         * tree.c (debug_binfo): Variable N is signed.
16136         Use HOST_WIDE_INT_PRINT_DEC.
16137         * typeck.c (comptypes): sizetype is same as equivalent integer type.
16138         (c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT,
16139         size_one_node and size_zero_node.
16140         (c_alignof): Use size_one_node.
16141         (build_component_addr): Pass proper types to size_binop.
16142         (expand_ptrmemfunc_cst): Don't use size_binop on non-sizes.
16143
16144 2000-02-26  Jason Merrill  <jason@casey.cygnus.com>
16145
16146         Implement class scope using-declarations for functions.
16147         * class.c (handle_using_decl): Call add_method for used functions.
16148         Use IDENTIFIER_CLASS_VALUE to check for conflicts.
16149         (add_method): Used functions are hidden by local functions.
16150         (check_bases_and_members): Handle using-decls before finalizing
16151         CLASSTYPE_METHOD_VEC.
16152         * call.c (add_function_candidate): Add ctype parm; if nonzero,
16153         override the type of 'this' accordingly.
16154         (add_template_candidate, add_template_candidate_real): Add ctype parm.
16155         (convert_class_to_reference, build_user_type_conversion_1,
16156         build_new_function_call, build_object_call, build_new_op,
16157         build_new_method_call): Pass ctype parm.
16158
16159         * search.c (lookup_member): Put rval_binfo, not basetype_path, in
16160         the baselink.
16161         * call.c (convert_class_to_reference, build_user_type_conversion_1,
16162         build_new_function_call, build_object_call, build_new_op,
16163         build_new_method_call, build_op_delete_call): Don't get basetype_path
16164         from a baselink.
16165         * typeck.c (build_component_ref): Likewise.
16166         * init.c (build_offset_ref): Likewise.
16167         (resolve_offset_ref): Don't call enforce_access.
16168         Call build_scoped_ref.
16169         * typeck2.c (build_scoped_ref): Simplify.  Do nothing if it
16170         would cause an error or if -pedantic.
16171         * class.c (alter_access): Lose binfo parm.
16172
16173 2000-02-26  Mark Mitchell  <mark@codesourcery.com>
16174
16175         * semantics.c (simplify_aggr_init_exprs_p): Don't walk into
16176         types.
16177
16178 2000-02-25  Alfred Minarik <a8601248@unet.univie.ac.at>
16179
16180         * rtti.c (get_vmi_pseudo_type_info): Move __vmi_class_type_info
16181         pseudo_type_info creation into the std namespace
16182
16183 2000-02-26  Mark Mitchell  <mark@codesourcery.com>
16184
16185         * cp-tree.h (DECL_NEEDED_P): Tweak to correct usage before EOF.
16186         (import_export_class): Remove declaration.
16187         * decl2.c (import_export_class): Make it static.
16188         * dump.c (dequeue_and_dump): Handle PREDECREMENT_EXPR,
16189         PREINCREMENT_EXPR, POSTDECREMENT_EXPR, POSTINCREMENT_EXPR,
16190         EXPR_WITH_FILE_LOCATION.
16191         * lex.c (check_newline): Tweak filename/lineno setting.
16192         * semantics.c (begin_while_stmt): Fix typo in comment.
16193
16194 Sat Feb 26 19:50:23 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
16195
16196         * lang-options.h (-fmessage-length=): Add missing option.
16197
16198         * Make-lang.in (CXX_SRCS): Add .h files and sort list.
16199
16200 2000-02-26  Zack Weinberg  <zack@wolery.cumb.org>
16201
16202         * Make-lang.in: Delete refs to LIBGCC2_DEPS.
16203
16204 Fri Feb 25 14:52:33 2000  Jim Wilson  <wilson@cygnus.com>
16205
16206         * optimize.c (expand_call_inline): Emit the return label before
16207         evaluating the return value.
16208
16209 2000-02-24  Mark Mitchell  <mark@codesourcery.com>
16210
16211         * lex.c (check_newline): Use push_srcloc and pop_srcloc, rather
16212         than duplicating functionality here.
16213         * optimize.c: Include input.h.
16214         (expand_call_inline): Use push_srcloc and pop_srcloc.
16215         * parse.y (maybe_cv_qualifier): Remove calls to emit_line_note.
16216         * parse.c: Regenerated.
16217         * Makefile.in (lex.o): Depend on input.h.
16218         (optimize.o): Likewise.
16219
16220 2000-02-24  Nathan Sidwell  <nathan@codesourcery.com>
16221
16222         * decl.c (grokdeclarator): Diagnose qualifiers on non-member
16223         function type, rather than ICE.
16224
16225 2000-02-23  Jason Merrill  <jason@casey.cygnus.com>
16226
16227         * decl.c (grokdeclarator): Call decl_type_access_control.
16228         * parse.y (parse_end_decl): Don't call decl_type_access_control if
16229         decl is null.
16230
16231 2000-02-23  Nathan Sidwell  <nathan@codesourcery.com>
16232
16233         * decl.c (decls_match): Remove obsolete static member nadgering.
16234
16235 2000-02-21  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
16236
16237         * decl.c (grokdeclarator): Change ANSI to ISO.
16238         * lex.c (consume_string, readescape, do_identifier): Likewise.
16239         (parse_float, real_yylex): Likewise.
16240         * parse.y (paren_expr_or_null, paren_cond_or_null): Likewise.
16241         (unary_expr, new_initializer, cast_expr, primary, primary_no_id,
16242         new_type_id, maybe_label_decls, simple_stmt,
16243         for.init.statement): Likewise.
16244         * pt.c (do_decl_instantiation, do_type_instantiation): Likewise.
16245         * semantics.c (finish_named_return_value): Likewise.
16246         * parse.c: Regenerate.
16247
16248 2000-02-21  Mark Mitchell  <mark@codesourcery.com>
16249
16250         * cp-tree.h (CPTI_VTABLE_INDEX_TYPE): New macro.
16251         (CPTI_CLASS_STAR_TYPE): Remove.
16252         (vtable_index_type): Likewise.
16253         (class_star_type_node): Remove.
16254         (TYPE_PTRMEMFUNC_FN_TYPE): Adjust for the new ABI.
16255         (build_binary_op_nodefault): Remove.
16256         * call.c (build_new_op): Use build_binary_op instead of
16257         build_binary_op_nodefault.
16258         * decl.c (init_decl_processing): Remove class_star_type_node
16259         initialization.  Make delta_type_node ptrdiff_type_node under the
16260         new ABI.  Initialize vtable_index_type.
16261         (build_ptrmemfunc_type): Build different structures for the new
16262         ABI.
16263         (build_enumerator): Use build_binary_op instead of
16264         build_binary_op_nodefault.
16265         * method.c (build_overload_value): Mangle pointers-to-members
16266         appropriately under the new ABI.
16267         * typeck.c (build_array_ref): Use build_binary_op instead of
16268         build_binary_op_nodefault.
16269         (get_member_function_from_ptrfunc): Adjust for the new ABI.
16270         (build_binary_op_nodefault): Rename to ...
16271         (build_binary_op): ... this.  Remove old version.  Adjust for
16272         pointer-to-member comparisons under the new ABI.
16273         (build_ptrmemfunc1): Remove dead code.  Adjust for the new ABI.
16274         (build_ptrmemfunc): Adjust for the new ABI.
16275         (expand_ptrmemfunc_cst): Likewise.
16276         (delta2_from_ptrmemfunc): Assert that we're not using the new ABI.
16277         (pfn_from_ptrmemfunc): Adjust for the new ABI.
16278
16279 2000-02-21  Gabriel Dos Reis  <gdr@codesourcery.com>
16280
16281         * call.c (build_object_call): Compress consecutive calls to
16282         cp_error.
16283         (build_conditional_expr): Say 'ISO C++' not 'ANSI C++'.
16284         (build_op_delete_call): Adjust message formatting.
16285
16286         * class.c (check_bases): Compress consecutive calls to
16287         cp_pedwarn.
16288         (finish_struct_anon): Say 'ISO C++'.
16289
16290         * decl.c (start_decl): Same here.
16291         (grok_reference_init): Likewise.
16292         (grokfndecl): Correct message formatting.
16293         (grokfndecl): Improve diagnostic.
16294         (check_static_variable_definition): Likewise. Say 'ISO C++'
16295         (compute_array_index_type): Say 'ISO C++'
16296         (create_array_type_for_decl): Compress consecutive calls to
16297         cp_error.
16298         (grokdeclarator): Say 'ISO C++'
16299         (grok_op_properties): Likewise.
16300
16301         * decl2.c (delete_sanity): Clairify diagnostic.
16302         (check_member_template): Same here.
16303         (grok_function_init): Use consistent terminology.
16304
16305         * expr.c (do_case): Say 'ISO C++'
16306
16307         * friend.c (do_friend): Compress consecutive calls to warning.
16308
16309 2000-02-20  Mark Mitchell  <mark@codesourcery.com>
16310
16311         * cp-tree.h (merge_primary_and_secondary_vtables_p): New macro.
16312         * class.c (build_secondary_vtable): Reorganize.  Don't create a
16313         new vtable under the new ABI.
16314         (layout_vtable_decl): Don't add num_extra_vtbl_entries when
16315         computing the size.
16316         (build_vtbl_initializer): Don't return a CONSTRUCTOR; just return
16317         the initializing elements.
16318         (initialize_vtable): New function.
16319         (dfs_finish_vtbls): Use it.
16320         (dfs_accumulate_vtbl_inits): New function.
16321         (finish_vtbls): Merge primary and secondary vtables under the new
16322         ABI.
16323         (finish_struct_1): Remove redundant call to layout_vtable_decl.
16324         * init.c (expand_virtual_init): Deal with BINFO_VTABLEs that
16325         aren't VAR_DECLs.
16326
16327         * class.c (build_vtable): New function, split out from ...
16328         (get_vtable_decl): ... here, and ...
16329         (build_secondary_vtable): ... here.
16330
16331         * pt.c (tsubst_decl): Fix formatting.
16332
16333 Sat Feb 19 18:43:13 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
16334
16335         * class.c (build_primary_vtable, layout_vtable_decl): Likewise.
16336         (avoid_overlap, build_base_field): Likewise.
16337         (build_base_field, build_base_fields, is_empty_class):
16338         Test DECL_SIZE with integer_zero.
16339         (layout_class_type): Set CLASSTYPE_SIZE_UNIT.
16340         * cp-tree.h (struct lang_type): New field size_unit.
16341         (CLASSTYPE_SIZE_UNIT): New macro.
16342         * decl.c (init_decl_processing): Set DECL_SIZE_UNIT.
16343         (cp_finish_decl): Delete -Wlarger-than processing.
16344         * optimize.c (remap_decl): Walk DECL_SIZE_UNIT.
16345         * pt.c (tsubst_decl): Set DECL_SIZE_UNIT.
16346         * tree.c (make_binfo): binfo vector is one entry longer.
16347         (walk_tree): Walk DECL_SIZE_UNIT.
16348
16349 2000-02-19  Mark Mitchell  <mark@codesourcery.com>
16350
16351         * class.c (dfs_build_vcall_offset_vtbl_entries): Fix typo in
16352         comment.
16353         (build_vtable_entry): Don't assume all vtable entries are
16354         functions.
16355         (build_vtbl_initializer): Adjust accordingly.
16356         (get_vtable_decl): Fix formatting.
16357
16358 2000-02-18  Jason Merrill  <jason@casey.cygnus.com>
16359
16360         * semantics.c (deferred_type_access_control): Walk the entire
16361         type_lookups list.
16362         (save_type_access_control): Rename from
16363         initial_deferred_type_access_control.  Just remember the value.
16364         (decl_type_access_control): New fn.
16365         (begin_function_definition): Use deferred_type_access_control, after
16366         we've started the function.  Set type_lookups to error_mark_node.
16367         * parse.y (frob_specs, fn.def1): Adjust.
16368         (parse_decl0, parse_field, parse_field0, parse_bitfield): New fns.
16369         (parse_end_decl, parse_bitfield0, parse_method): New fns.
16370         (fn.def2, initdcl, initdcl0_innards, nomods_initdcl0): Use them.
16371         (after_type_component_declarator0): Likewise.
16372         (after_type_component_declarator): Likewise.
16373         (notype_component_declarator): Likewise.
16374         * cp-tree.h: Adjust.
16375
16376         * decl.c (redeclaration_error_message): Allow redeclaration of
16377         namespace-scope decls.
16378
16379 2000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
16380
16381         * typeck2.c (my_friendly_abort): Use GCCBUGURL.
16382
16383 2000-02-17  Mark Mitchell  <mark@codesourcery.com>
16384
16385         * class.c (add_method): Don't set DECL_VIRTUAL_CONTEXT.
16386         * decl2.c (grokclassfn): Likewise.
16387
16388         * ir.texi: Document DECL_TEMPLATE_INSTANTIATIONS.
16389
16390         * decl2.c (lang_decode_option): Don't set default message length
16391         here.
16392         * lex.c (lang_init_options): Set it here.
16393
16394 2000-02-16  Mark Mitchell  <mark@codesourcery.com>
16395
16396         Make DECL_CONTEXT mean the class in which a member function was
16397         declared, even for a virtual function.
16398         * cp-tree.h (DECL_CLASS_CONTEXT): Adjust.
16399         (DECL_FRIEND_CONTEXT): New macro.
16400         (DECL_REAL_CONTEXT): Remove.
16401         (SET_DECL_FRIEND_CONTEXT): Likewise.
16402         (DECL_VIRTUAL_CONTEXT): Adjust.
16403         (DECL_CLASS_SCOPE_P): Use TYPE_P.
16404         (add_friends): Remove.
16405         (hack_decl_function_context): Likewise.
16406         * call.c (build_new_function_call): Replace DECL_REAL_CONTEXT with
16407         CP_DECL_CONTEXT.
16408         (build_over_call): Fix indentation.  Use DECL_CONTEXT
16409         instead of DECL_CLASS_CONTEXT.
16410         * class.c (dfs_build_vcall_offset_vtbl_entries): Likewise.
16411         (add_method): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT.
16412         (strictly_overrides): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
16413         (build_vtbl_or_vbase_field): Don't set DECL_CLASS_CONTEXT.
16414         (build_base_field): Likewise.
16415         (finish_struct_1): Likewise.
16416         (build_self_reference): Likewise.
16417         * decl.c (push_class_binding): Use CP_DECL_CONTEXT, not
16418         DECL_REAL_CONTEXT.
16419         (pushtag): Use decl_function_context, not
16420         hack_decl_function_context.
16421         (decls_match): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
16422         (duplicate_decls): Use DECL_VIRTUAL_CONTEXT.
16423         (pushdecl): Remove bogus code.
16424         (start_decl): Use DECL_CONTEXT rather than DECL_CLASS_CONTEXT.
16425         (cp_finish_decl): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
16426         (grokfndecl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
16427         Use decl_function_context, nothack_decl_function_context.
16428         (grokvardecl): Don't set DECL_CLASS_CONTEXT.
16429         (grokdeclarator): Likewise.  Use decl_function_context, not
16430         hack_decl_function_context.
16431         (copy_args_p): Document.  Don't use DECL_CLASS_CONTEXT.
16432         (start_function): Use DECL_FRIEND_CONTEXT, not
16433         DECL_CLASS_CONTEXT.  Use decl_function_context, not
16434         hack_decl_function_context.
16435         (finish_function): Use decl_function_context, not
16436         hack_decl_function_context.
16437         (maybe_retrofit_in_chrg): Use DECL_CONTEXT, not
16438         DECL_CLASS_CONTEXT.
16439         (grokclassfn): Set DECL_VIRTUAL_CONTEXT, not DECL_CONTEXT.
16440         (finish_static_data_member_decl): Don't set DECL_CLASS_CONTEXT.
16441         (grokfield): Likewise.
16442         (finish_builtin_type): Likewise.
16443         (finish_vtable_vardec): Use decl_function_context, not
16444         hack_decl_function_context.
16445         (import_export_decl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
16446         (start_static_initialization_or_destruction): Likewise.
16447         (finish_static_initialization_or_destruction): Likewise.
16448         (mark_used): Adjust logic for deciding when to synthesize methods.
16449         * dump.c (dequeue_and_dump): Use CP_DECL_CONTEXT, not
16450         DECL_REAL_CONTEXT.
16451         * error.c (dump_function_decl): Use DECL_CONTEXT, not
16452         DECL_CLASS_CONTEXT.
16453         * friend.c (is_friend): Likewise.
16454         (add_friends): Remove.
16455         (do_friend): Use SET_DECL_FRIEND_CONTEXT.
16456         * lex.c (begin_definition_of_inclass_inline): Use
16457         decl_function_context, not hack_decl_function_context.
16458         (process_next_inline): Likewise.
16459         (do_identifier): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
16460         * method.c (set_mangled_name_for_decl): Use DECL_CONTEXT, not
16461         DECL_CLASSS_CONTEXT.
16462         (hack_identifier): Likewise.
16463         (synthesize_method):  Use decl_function_context, not
16464         hack_decl_function_context.
16465         * pt.c (template_class_depth_real): Use CP_DECL_CONTEXT, not
16466         DECL_REAL_CONTEXT.
16467         (is_member_template): Use decl_function_context, not
16468         hack_decl_function_context.  Use DECL_CONTEXT, not
16469         DECL_CLASS_CONTEXT.
16470         (build_template_decl): Set DECL_VIRTUAL_CONTEXT, not
16471         DECL_CLASS_CONTEXT.
16472         (check_default_tmpl_args): Use CP_DECL_CONTEXT, not
16473         DECL_REAL_CONTEXT.
16474         (push_template_decl_real): Likewise.
16475         (instantiate_class_template): Don't call add_friends.
16476         (tsubst_default_argument): Use DECL_CONTEXT, not
16477         DECL_REAL_CONTEXT.
16478         (tsubst_decl): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT.
16479         Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
16480         (set_meangled_name_for_template_decl): Use DECL_CONTEXT, not
16481         DECL_CLASS_CONTEXT.
16482         * repo.c (repo_inline_used): Likewise.
16483         * search.c (current_scope): Adjust for new _CONTEXT macros.
16484         (context_for_name_lookup): Use CP_DECL_CONTEXT, not
16485         DECL_REAL_CONTEXT.
16486         (friend_accessible_p): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
16487         (lookup_fnfields_here):Likewise.
16488         (check_final_overrider): Likewise.
16489         (init_vbase_pointers): Likewise.
16490         (virtual_context): Likewise.
16491         * semantics.c (finish_member_declaration): Just set DECL_CONTEXT.
16492         (expand_body): Use decl_function_context, not
16493         hack_decl_function_context.
16494         * tree.c (hack_decl_function_context): Remove.
16495         * typeck.c (build_x_function_call): Use DECL_CONTEXT, not
16496         DECL_CLASS_CONTEXT.
16497         * typeck2.c (error_not_base_type): Likewise.
16498
16499 2000-02-15  Jason Merrill  <jason@casey.cygnus.com>
16500
16501         * decl.c (xref_tag): Don't SET_IDENTIFIER_NAMESPACE_VALUE.
16502
16503 2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16504
16505         * Make-lang.in (g++spec.o): Depend on $(GCC_H), not gcc.h.
16506
16507 2000-02-15  Jonathan Larmour  <jlarmour@redhat.co.uk>
16508
16509         * lang-specs.h: Add new __GNUC_PATCHLEVEL__ define to default spec.
16510
16511 2000-01-16  Gabriel Dos Reis  <gdr@codesourcery.com>
16512
16513         * decl2.c (lang_decode_option): Enable automatic line wrapping.
16514
16515 2000-02-13  Jason Merrill  <jason@casey.cygnus.com>
16516
16517         * parse.y (frob_specs): Split out...
16518         (parse_decl): From here.
16519         (fn.def2): Call initial_deferred_type_access_control.
16520         (after_type_component_declarator0): Call frob_specs.
16521         (notype_component_declarator0): Likewise.
16522         * search.c (friend_accessible_p): Nested classes are friends of their
16523         enclosing classes.
16524
16525 2000-02-10  Mark Mitchell  <mark@codesourcery.com>
16526
16527         * ir.texi (ADDR_EXPR): Document the fact that an ADDR_EXPR can be
16528         used to create an implicit temporary.
16529
16530         * class.c (dfs_modify_vtables): Tweak calculation of functions to
16531         override.
16532
16533 2000-02-08  Nathan Sidwell  <nathan@acm.org>
16534
16535         * typeck.c (strip_all_pointer_quals): Use TYPE_MAIN_VARIANT, to
16536         strip array element qualifiers too.
16537
16538 2000-02-07  Mark Mitchell  <mark@codesourcery.com>
16539
16540         * decl.c (store_parm_decls): Don't build cleanups for parameters
16541         while processing_template_decl.
16542
16543 2000-02-07  Jason Merrill  <jason@casey.cygnus.com>
16544
16545         * cp-tree.h (struct saved_scope): Add incomplete field.
16546         (namespace_scope_incomplete): New macro.
16547         * decl.c (pushdecl): Use it.
16548         (hack_incomplete_structures): Use it.  See through artificial
16549         binding levels.
16550         (mark_saved_scope): Mark it.
16551
16552         Implement access control for nested types.
16553         * search.c (type_access_control): New fn.
16554         (accessible_p): Now we do perform access control for types.
16555         * semantics.c (deferred_type_access_control): New fn.
16556         (initial_deferred_type_access_control): New fn.
16557         (begin_function_definition): Call it.  Add lookups parm.
16558         * decl.c (struct binding_level): Add this_class field.
16559         (pushlevel_class): Set it.
16560         (mark_binding_level): Mark it.
16561         (lookup_name_real): Use it.  Call type_access_control.
16562         (mark_saved_scope): Mark lookups field.
16563         * cp-tree.h (flagged_type_tree): Add lookups field.
16564         (struct saved_scope): Add lookups field.
16565         (type_lookups): New macro.
16566         * parse.y (declmods): Now <ftype>.
16567         (parse_decl): Add lookups parm.  Call
16568         initial_deferred_type_access_control.
16569         (lang_extdef): Clear type_lookups.
16570         (typed_declspecs, declmods, typespec): Set lookups field.
16571         (initdcl): Call deferred_type_access_control.
16572         (fn.def1, fn.def2, typed_declspecs1, initdcl0_innards, nomods_initdcl0,
16573         component_decl_1, named_parm): Adjust.
16574         * friend.c (is_friend): Nested classes are friends of their
16575         enclosing classes.
16576
16577         * class.c (currently_open_derived_class): New fn.
16578         * method.c (hack_identifier): Use it.
16579
16580         * lex.c (do_identifier): Remove obsolete code.
16581
16582         * parse.y (typed_typespecs): Propagate new_type_flag properly.
16583
16584 2000-02-05  Zack Weinberg  <zack@wolery.cumb.org>
16585
16586         * tinfo.h: Remove apostrophes from C++ comment (xgettext
16587         thinks this file is plain C).
16588
16589 2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16590
16591         * Makefile.in (call.o): Depend on $(EXPR_H).
16592
16593         * call.c: Include "expr.h".
16594
16595         * class.c (dump_class_hierarchy): Add prototype.
16596
16597         * search.c (dfs_get_pure_virtuals): Likewise.
16598
16599 2000-02-1  Ulrich Drepper  <drepper@redhat.com>
16600
16601         * parse.y (simple_stmt): Allow :: token in asm parameter list.
16602         * parse.c: Rebuilt.
16603
16604 Mon Jan 31 15:35:29 2000  Jim Wilson  <wilson@cygnus.com>
16605
16606         * class.c (build_vtbl_or_vbase_field): New parameter fcontext.
16607         Store it in DECL_FCONTEXT.
16608         (build_vbase_pointer_fields, create_vtable_ptr): Fix callers.
16609
16610 2000-01-31  Jason Merrill  <jason@casey.cygnus.com>
16611
16612         * tinfo.h (old abi): #include "tconfig.h".
16613         * tinfo.cc (convert_to_base): Move into old abi section.
16614
16615 2000-01-31  Mark Mitchell  <mark@codesourcery.com>
16616
16617         * cp-tree.h (BINFO_VIRTUALS): Tweak documentation.
16618         (CLASSTYPE_PRIMARY_BINFO): Use BINFO_PRIMARY_BINFO.
16619         (BINFO_PRIMARY_BINFO): New macro.
16620         (BF_DELTA): Rename to ...
16621         (BV_DELTA): ... this.
16622         (BF_VCALL_INDEX): Rename to ...
16623         (BV_VCALL_INDEX): ... this.
16624         (BF_FN): Rename to ...
16625         (BV_FN): ... this.
16626         * class.c (build_vbase_path): Adjust for changes to reverse_path.
16627         (set_rtti_entry): Rename BF_ macros to BV_ variants.
16628         (modify_vtable_entry): Simplify.
16629         (add_virtual_function): Rename BF_ macros to BV_ variants.
16630         (build_vtable_initializer): Likewise.
16631         (get_class_offset_1): Remove.
16632         (dfs_get_class_offset): Likewise.
16633         (get_class_offset): Likewise.
16634         (dfs_find_final_overrider): New function.
16635         (find_final_overrider): Likewise.
16636         (modify_one_vtable): Remove.
16637         (dfs_find_base): New function.
16638         (dfs_modify_vtables): Fold modify_one_vtable in here.  Use
16639         find_final_overrider.
16640         (modify_all_vtables): Adjust.  Set BV_VCALL_INDEX on new
16641         virtuals.
16642         (dfs_fixup_vtable_deltas): Remove.
16643         (override_one_vtable): Remove.
16644         (merge_overrides): Likewise.
16645         (layout_virtual_bases): Make sure BINFO_OFFSET is set right for
16646         unreal chilren of virtual bases.
16647         (finish_struct_1): Don't use merge_overrides.  Don't use
16648         dfs_fixup_vtable_deltas.
16649         * tree.c (reverse_path): Return a TREE_LIST, not a chain of
16650         BINFOs.
16651
16652 2000-01-31  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
16653             Jason Merrill  <jason@yorick.cygnus.com>
16654
16655         * tinfo.h: Rename USItype to myint32, depend on BITS_PER_UNIT.
16656
16657 2000-01-31  Alfred Minarik <a8601248@unet.univie.ac.at>
16658
16659         * exception.cc (__throw_bad_typeid): Add missing std::.
16660
16661 2000-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16662
16663         * cp-tree.h (make_thunk): PROTO -> PARAMS.
16664
16665 2000-01-31  Nathan Sidwell  <sidwell@codesourcery.com>
16666
16667         * cp-tree.h (new_abi_rtti_p): Use flag_new_abi.
16668
16669         Runtime support for new-abi rtti.
16670         * inc/typeinfo (type_info::operator!=): Define in class.
16671         (type_info::before, type_info::name, type_info::operator==,
16672         type_info::operator!=): Define new ABI implementations.
16673         (type_info::is_pointer_p, type_info::is_function_p): Declare
16674         new virtual functions.
16675         (type_info::do_catch, type_info::do_upcast): Likewise.
16676
16677         * tinfo.h (__base_class_info): Define new class.
16678         (__class_type_info): Likewise.
16679         (__si_class_type_info): Likewise.
16680         (__vmi_class_type_info): Likewise.
16681         (__dynamic_cast): Prototype.
16682
16683         * tinfo.cc: Conditionalize old and new rtti mechanisms.
16684         (type_info::is_pointer_p): Define new function.
16685         (type_info::is_function_p): Likewise.
16686         (type_info::do_catch): Likewise.
16687         (type_info::do_upcast): Likewise.
16688         (vtable_prefix): New structure for vtable access.
16689         (adjust_pointer): Define new template function.
16690         (contained_p, public_p, virtual_p, contained_public_p,
16691         contained_nonpublic_p, contained_nonvirtual_p): Define new
16692         functions.
16693         (nonvirtual_base_type): New local variable.
16694         (__class_type_info::~__class_type_info): Define.
16695         (__si_class_type_info::~__si_class_type_info): Likewise.
16696         (__vmi_class_type_info::~__vmi_class_type_info): Likewise.
16697         (__class_type_info::do_catch): Define new function.
16698         (__class_type_info::do_upcast): Likewise.
16699         (__class_type_info::find_public_src): Likewise.
16700         (__class_type_info::do_find_public_src): Likewise.
16701         (__si_class_type_info::do_find_public_src): Likewise.
16702         (__vmi_class_type_info::do_find_public_src): Likewise.
16703         (__class_type_info::do_dyncast): Likewise.
16704         (__si_class_type_info::do_dyncast): Likewise.
16705         (__vmi_class_type_info::do_dyncast): Likewise.
16706         (__class_type_info::do_upcast): Likewise.
16707         (__si_class_type_info::do_upcast): Likewise.
16708         (__vmi_class_type_info::do_upcast): Likewise.
16709         (__dynamic_cast): Likewise.
16710
16711         * tinfo2.cc (__fundamental_type_info): Define new class.
16712         (__pointer_type_info): Likewise.
16713         (__reference_type_info): Likewise.
16714         (__array_type_info): Likewise.
16715         (__function_type_info): Likewise.
16716         (__enum_type_info): Likewise.
16717         (__ptr_to_member_type_info): Likewise.
16718         (__fundamental_type_info::~__fundamental_type_info): Define.
16719         (__pointer_type_info::~__pointer_type_info): Likewise.
16720         (__reference_type_info::~__reference_type_info): Likewise.
16721         (__array_type_info::~__array_type_info): Likewise.
16722         (__function_type_info::~__function_type_info): Likewise.
16723         (__enum_type_info::~__enum_type_info): Likewise.
16724         (__ptr_to_member_type_info::~__ptr_to_member_type_info): Likewise.
16725         (__pointer_type_info::do_catch): Define new function.
16726         (__ptr_to_member_type_info::do_catch): Define new function.
16727
16728         (__throw_type_match_rtti_2): Use new ABI interface, if enabled.
16729         (__is_pointer): Likewise.
16730
16731         * exception.cc (__cplus_type_matcher): Deal with new-abi rtti.
16732
16733 2000-01-30  Mark Mitchell  <mark@codesourcery.com>
16734
16735         * cp/class.c (build_vtable): Rename to build_primary_vtable.
16736         (prepare_fresh_vtable): Rename to build_secondary_vtable.
16737         (make_new_vtable): New function.
16738         (modify_vtable_entry): Handle generation of new vtables correctly.
16739         (modify_one_vtable): Remove unused parameter.
16740         (dfs_fixup_vtable_deltas): Likewise.
16741         (override_one_vtable): Use build_secondary_vtable.
16742         (finish_struct_1): Use build_primary_vtable and
16743         build_secondary_vtable.
16744
16745 2000-01-28  Ulrich Drepper  <drepper@redhat.com>
16746
16747         * cp/decl.c: Adjust variable names, comments, help strings.
16748
16749 2000-01-29  Nathan Sidwell  <nathan@acm.org>
16750
16751         * new2.cc (operator delete[]): Use operator delete, don't assume
16752         implementation.
16753
16754 2000-01-29  Nathan Sidwell  <sidwell@codesourcery.com>
16755
16756         * class.c (build_vtbl_initializer): Add argument to
16757         build_vtable_entry call.
16758
16759 2000-01-27  Mark Mitchell  <mark@codesourcery.com>
16760
16761         * cp-tree.def (THUNK_DECL): Discuss vcall indices.
16762         * cp-tree.h (BINFO_VIRTUALS): Update documentation.
16763         (BF_DELTA): New macro.
16764         (BF_VCALL_INDEX): Likewise.
16765         (BF_FN): Likewise.
16766         (THUNK_VCALL_OFFSET): Likewise.
16767         (make_thunk): Change prototype.
16768         * class.c (build_vtable_entry): Integrate
16769         build_vtable_entry_for_fn.  Handle vcall indices.
16770         (build_vtable_entry_for_fn): Remove.
16771         (set_rtti_entry): Handle vcall indices.  Use BF_DELTA,
16772         BF_VCALL_INDEX, BF_FN.
16773         (modify_vtable_entry): Integrate common code from
16774         modify_one_vtable and dfs_fixup_vtable_deltas.
16775         (add_virtual_function): Set BF_VCALL_INDEX.
16776         (build_vtbl_initializer): Simplify.  Use BF_DELTA, BF_VCALL_INDEX,
16777         and BF_FN.
16778         (modify_one_vtable): Simplify.
16779         (dfs_fixup_vtable_deltas): Likewise.
16780         (override_one_vtable): Use BF_DELTA, BF_VCALL_INDEX, BF_FN.
16781         * method.c (make_thunk): Handle vcall indices.
16782
16783 2000-01-28  Nathan Sidwell  <sidwell@codesourcery.com>
16784
16785         Compiler side new abi rtti (not enabled).
16786         * cp-tree.h (new_abi_rtti_p): New macro.
16787         (emit_support_tinfos): Prototype new function.
16788         (tinfo_decl_p): Likewise.
16789         (emit_tinfo_decl): Likwise.
16790         * rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL): New accessor
16791         macros.
16792         (doing_runtime): New local static.
16793         (init_rtti_processing): Add new-abi initializer.
16794         (get_tinfo_decl): Add new-abi logic.
16795         (tinfo_from_decl): Likewise.
16796         (build_dynamic_cast_1): Likewise.
16797         (qualifier_flags): New static function.
16798         (tinfo_base_init): Likewise.
16799         (generic_initializer): Likewise.
16800         (ptr_ref_initializer): Likewise.
16801         (ptmd_initializer): Likewise.
16802         (class_hint_flags): Likewise.
16803         (class_initializer): Likewise.
16804         (synthesize_tinfo_var): Likewise.
16805         (create_real_tinfo_var): Likewise.
16806         (create_pseudo_type_info): Likewise.
16807         (get_vmi_pseudo_type_info): Likewise.
16808         (create_tinfo_types): Likewise.
16809         (emit_support_tinfos): New global function.
16810         (tinfo_decl_p): New global predicate.
16811         (emit_tinfo_decl): New global function.
16812         * class.c (set_rtti_entry): Generalize for old and new rtti.
16813         (build_vtbl_initializer): Likewise.
16814         * decl2.c (finish_file): Likewise.
16815
16816 Thu Jan 27 20:53:36 2000  Jim Wilson  <wilson@cygnus.com>
16817
16818         * optimize.c (remap_decl): Add walk_tree calls for DECL_SIZE (t)
16819         and TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (t))).
16820
16821 Thu Jan 27 13:54:12 2000  Mike Stump  <mrs@wrs.com>
16822
16823         * decl.c (pushdecl): Fix up shadow warnings with respect to implicit
16824         for scopes.
16825
16826 2000-01-26  Jason Merrill  <jason@casey.cygnus.com>
16827
16828         * pt.c (unify): Use fold, not maybe_fold_nontype_arg.
16829
16830 Wed Jan 26 22:19:14 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
16831
16832         * optimize.c (calls_setjmp_r): Supply new argument
16833         to special_function_p.
16834
16835 2000-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16836
16837         * call.c: PROTO -> PARAMS.
16838         * class.c: Likewise.
16839         * cp-tree.h: Likewise.
16840         * cvt.c: Likewise.
16841         * decl.c: Likewise.
16842         * decl.h: Likewise.
16843         * decl2.c: Likewise.
16844         * dump.c: Likewise.
16845         * errfn.c: Likewise.
16846         * error.c: Likewise.
16847         * except.c: Likewise.
16848         * expr.c: Likewise.
16849         * init.c: Likewise.
16850         * input.c: Likewise.
16851         * lex.c: Likewise.
16852         * lex.h: Likewise.
16853         * method.c: Likewise.
16854         * optimize.c: Likewise.
16855         * parse.y: Likewise.
16856         * pt.c: Likewise.
16857         * repo.c: Likewise.
16858         * rtti.c: Likewise.
16859         * search.c: Likewise.
16860         * semantics.c: Likewise.
16861         * spew.c: Likewise.
16862         * tree.c: Likewise.
16863         * typeck.c: Likewise.
16864         * typeck2.c: Likewise.
16865         * xref.c: Likewise.
16866
16867 2000-01-25  Richard Henderson  <rth@cygnus.com>
16868
16869         * typeck.c (build_binary_op_nodefault): Remove UNNE_EXPR.
16870
16871 2000-01-25  Mark Mitchell  <mark@codesourcery.com>
16872
16873         * cp-tree.h (vcall_offset_in_vtable_p): New macro.
16874         * class.c (build_vbase_offset_vtbl_entries): Fix typo in commment.
16875         (struct vcall_offset_data_s): New type.
16876         (dfs_vcall_offset_queue_p): New function.
16877         (dfs_build_vcall_offset_vtbl_entries): Likewise.
16878         (build_vcall_offset_vtbl_entries): Likewise.
16879         (layout_vtable_decl): Likewise.
16880         (num_vfun_entries): Likewise.
16881         (num_extra_vtbl_entries): Add the entries for vcall offsets.
16882         (build_vtbl_initializer): Likewise.
16883         (dfs_finish_vtabls): Use layout_vtable_decl.
16884         (modify_one_vtables): Always duplicate vtables under the new ABI.
16885         (finish_struct_1): Use layout_vtable_decl.
16886
16887 2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16888
16889         * decl.c (member_function_or_else): Change third arg from a format
16890         specifier to an `enum overload_flags'.  Callers changed.
16891
16892 2000-01-25  Gabriel Dos Reis  <gdr@codesourcery.com>
16893
16894         * typeck.c (composite_pointer_type, c_sizeof, expr_sizeof,
16895         build_binary_op_nodefault, build_unary_op, build_reinterpret_cast,
16896         build_const_cast, get_delta_difference, check_return_expr): Avoid
16897         ANSI string concatenation usage.
16898
16899 2000-01-24  Mark Mitchell  <mark@codesourcery.com>
16900
16901         * class.c (layout_class_type): Put the fields required to make a
16902         class non-empty at the end, not the beginning, of the TYPE_FIELDs
16903         list.
16904
16905 2000-01-24  Jason Merrill  <jason@casey.cygnus.com>
16906
16907         * pt.c (maybe_fold_nontype_arg): Do nothing if we're not in a
16908         template.
16909
16910         * decl2.c (mark_used): Do instantiate inlines that have been
16911         explicitly instantiated.
16912
16913 2000-01-24  Richard Henderson  <rth@cygnus.com>
16914
16915         * call.c (build_over_call): Use expand_tree_builtin.
16916         * typeck.c (build_function_call_real): Likewise.
16917         (build_binary_op_nodefault): Handle unordered compares.
16918
16919 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
16920
16921         * cp-tree.h (CPTI_BAD_CAST, CPTI_BAD_TYPEID, CPTI_DCAST): New
16922         cp_tree_index values.
16923         (throw_bad_cast_node, throw_bad_typeid_node, dynamic_cast_node):
16924         New global node #defines for them.
16925         * rtti.c (call_void_fn): Replace with ...
16926         (build_runtime_decl): ... new static function.
16927         (throw_bad_cast): Use throw_bad_cast_node and build_runtime_decl.
16928         (throw_bad_typeid): Use throw_bad_typeid_node and build_runtime_decl.
16929         (build_dynamic_cast_1): Always produce correctly typed result.
16930         Explicitly produce type_info addresses. Use dynamic_cast_node.
16931         * exception.cc (__throw_bad_cast): Return `void *'.
16932         (__throw_bad_typeid): Return `const type_info &'.
16933
16934 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
16935
16936         * cp-tree.h (get_vtable_decl): Prototype new function.
16937         * class.c (get_vtable_decl): New function. Broken out from ...
16938         (build_vtable): ... here. Use it.
16939         * decl2.c (finish_vtable_vardecl): Ignore dummy vtables created
16940         by get_vtable_decl.
16941
16942 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
16943
16944         * cp-tree.h (CPTI_TP_DESC_TYPE, CPTI_ACCESS_MODE_TYPE,
16945         CPTI_USER_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_ATTR_DESC_TYPE,
16946         CPTI_PTMF_DESC_TYPE): Remove cp_tree_index enumerations.
16947         (CPTI_TI_DESC_TYPE, CPTI_REF_DESC_TYPE, CPTI_ARY_DESC_TYPE,
16948         CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_SI_CLASS_DESC_TYPE,
16949         CPTI_VMI_CLASS_DESC_TYPE, CPTI_BASE_DESC_TYPE): New enumerations.
16950         (CPTI_TINFO_FN_ID, CPTI_TINFO_FN_TYPE): Rename to ...
16951         (CPTI_TINFO_DECL_ID, CPTI_TINFO_DECL_TYPE): ... here.
16952         (CPTI_TINFO_VAR_ID): New enumeration.
16953         (__tp_desc_type_node, __access_mode_type_node,
16954         __bltn_desc_type_node, __user_desc_type_node,
16955         __class_desc_type_node, __ptr_desc_type_node,
16956         __attr_desc_type_node, __func_desc_type_node,
16957         __ptmf_desc_type_node, __ptmd_desc_type_node): Remove #defines.
16958         (ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
16959         ref_desc_type_node, ary_desc_type_node, func_desc_type_node,
16960         enum_desc_type_node, class_desc_type_node,
16961         si_class_desc_type_node, vmi_class_desc_type_node,
16962         ptmd_desc_type_node, base_desc_type_node): New #defines.
16963         (tinfo_fn_id, tinfo_fn_type): Rename to ...
16964         (tinfo_decl_id, tinfo_decl_type): ... here. Adjust.
16965         (tinfo_var_id): New enumeration.
16966         (DECL_TINFO_FN_P): Augment comment.
16967         * decl.c (cp_global_trees): Adjust documentation.
16968         * rtti.c (init_rtti_processing): Adjust for tinfo_decl_id,
16969         tinfo_decl_type and tinfo_var_id.
16970         (get_tinfo_decl_dynamic): Adjust for tinfo_decl_type.
16971         (build_typeid): Remove unused variable.
16972         (get_tinfo_var): Use tinfo_var_id.
16973         (tinfo_name): New static function.
16974         (get_tinfo_decl): Adjust for tinfo_decl_id and tinfo_decl_type.
16975         (tinfo_from_decl): Likewise.
16976         (get_base_offset): New static function, broken out of
16977         expand_class_desc.
16978         (expand_si_desc): Use tinfo_name.
16979         (expand_class_desc): Likewise. Lose local static variable.
16980         Use base_desc_type_node. Use get_base_offset.
16981         (expand_ptr_desc): Use tinfo_name.
16982         (expand_attr_desc): Likewise.
16983         (expand_generic_desc): Likewise.
16984
16985         * tinfo.cc (__GXX_ABI_VERSION): Test value and existence.
16986         * tinfo.h (__GXX_ABI_VERSION): Test value and existence.
16987
16988 2000-01-23  Mark Mitchell  <mark@codesourcery.com>
16989
16990         * cp-tree.h (__eprintf): Remove declaration.
16991         * tree.c (__eprintf): Remove definition.
16992
16993 2000-01-23  Zack Weinberg  <zack@rabi.columbia.edu>
16994             Mark Mitchell  <mark@codesourcery.com>
16995
16996         * cp-tree.h (CLASSTYPE_MARKED_N, SET_CLASSTYPE_MARKED_N,
16997         CLEAR_CLASSTYPE_MARKED_N): Avoid signed vs. unsigned warnings.
16998
16999 2000-01-23  Brad Lucier  <lucier@math.purdue.edu>
17000
17001         * class.c (dump_class_hierarchy): Print HOST_WIDE_INT properly.
17002
17003 2000-01-23  Mark Mitchell  <mark@codesourcery.com>
17004
17005         * cp-tree.h (register_dtor_fn): New function.
17006         * decl.c (destroy_local_static): Rename to ...
17007         (register_dtor_fn): ... this.  Give it external linkage.
17008         (expand_static_init): Use it.
17009         * decl2.c (do_static_initialization): Likewise, if using
17010         __cxa_atexit.
17011         (do_static_destruction): Check that __cxa_atexit is not in use.
17012         (finish_file): Don't call do_static_destruction if using
17013         __cxa_atexit.
17014
17015         * typeck.c (convert_arguments): Restore two-message error
17016         reporting.
17017
17018 2000-01-20  Nathan Sidwell  <sidwell@codesourcery.com>
17019
17020         Remap dynamic cast hint values to be consistent across ABIs.
17021         * search.c (dynamic_cast_base_recurse): Remap generated value.
17022         (get_dynamic_cast_base_type): Adjust documentation.
17023         * tinfo.h (__user_type_info::dyncast): Likewise.
17024         (__user_type_info::find_public_subobj): Remap BOFF meaning.
17025         * tinfo.cc (__si_type_info::do_dyncast): Remap BOFF meaning.
17026         (__class_type_info::do_dyncast): Likewise.
17027         (__class_type_info::do_find_public_subobj): Likewise.
17028         * tinfo2.cc (__dynamic_cast): Remap BOFF parameter.
17029
17030 2000-01-19  Gabriel Dos Reis  <gdr@codesourcery.com>
17031
17032         * typeck.c (build_unary_op): Use cp_pedwarn, not pedwarn.
17033
17034         * typeck2.c (incomplete_type_error): Restore previous
17035         cp_error and cp_error_at call sequence.
17036
17037 2000-01-20  Brad Lucier  <lucier@math.purdue.edu>
17038
17039         * class.c (dump_class_hierarchy): Make format agree with argument;
17040         cast pointer to unsigned long and print with %lx.
17041
17042 2000-01-19  Gabriel Dos Reis  <gdr@codesourcery.com>
17043
17044         * decl2.c (lang_decode_option): Set default line-wrap length to 72.
17045
17046         * typeck.c (composite_pointer_type, common_type,
17047         comp_target_parms, c_sizeof, expr_sizeof, build_array_ref,
17048         build_function_call_real, convert_arguments,
17049         build_binary_op_nodefault, pointer_int_sum, pointer_diff,
17050         build_unary_op, mark_addressable, build_compound_expr,
17051         build_static_cast, build_reinterpret_cast, build_const_cast,
17052         build_c_cast, build_modify_expr, get_delta_difference,
17053         build_ptrmemfunc, check_return_expr): Replace 'ANSI C++' with
17054         'ISO C++'.  Fusion consecutive calls to diagnostic message routines
17055         into a single one.
17056         * typeck2.c (readonly_error, abstract_virtuals_error,
17057         process_init_constructor, check_for_new_type): Likewise.
17058
17059 2000-01-19  Mark Mitchell  <mark@codesourcery.com>
17060
17061         * tree.c (bot_manip): Set DECL_CONTEXT for newly created
17062         VAR_DECLs.
17063
17064 2000-01-18  Nathan Sidwell  <sidwell@codesourcery.com>
17065
17066         * cp-tree.h (get_tinfo_fn_dynamic): Remove prototype.
17067         (build_x_typeid): Likewise.
17068         (get_tinfo_fn): Likewise.
17069         (get_tinfo_fn_unused): Rename to ...
17070         (get_tinfo_decl): ... here.
17071         * rtti.c (build_headof): Replace logic error with assertion.
17072         (get_tinfo_fn_dynamic): Rename to ...
17073         (get_tinfo_decl_dynamic): ... here. Make static. Use
17074         complete_type_or_else.
17075         (build_x_typeid): Move into ...
17076         (build_typeid): ... here. Adjust call to
17077         get_tinfo_decl_dynamic. Use tinfo_from_decl. Simplify
17078         throw_bad_typeid expression.
17079         (get_tinfo_fn_unused): Rename to ...
17080         (get_tinfo_decl): ... here. Adjust comment.
17081         (get_tinfo_fn): Delete.
17082         (tinfo_from_decl): New static function.
17083         (get_typeid_1): Call get_tinfo_decl and tinfo_from_decl.
17084         (get_typeid): Use complete_type_or_else.
17085         (build_dynamic_cast_1): Adjust calls to
17086         get_tinfo_decl_dynamic. Simplify throw_bad_cast expression.
17087         * parse.y (primary): Adjust call to build_typeid.
17088         * except.c (build_eh_type_type_ref): Adjust call to
17089         get_tinfo_decl. Mark as used.
17090         * class.c (set_rtti_entry): Adjust call to get_tinfo_decl.
17091         * decl2.c (build_expr_from_tree): Adjust call to build_typeid.
17092         * parse.c: Regenerated.
17093
17094 2000-01-17  Mark Mitchell  <mark@codesourcery.com>
17095
17096         * class.c (fixed_type_or_null): Don't clear NONNULL.  Document
17097         calling convention.
17098         (resolves_to_fixed_type_p): Document calling convention.
17099         * rtti.c (build_x_typeid): Initialize NONNULL.
17100
17101         * cp-tree.h (build_shared_int_cst): New function.
17102         * call.c (build_over_call): Use DECL_VIRTUAL_CONTEXT, for clarity.
17103         * class.c (modify_vtable_entry): Likewise.
17104         (add_virtual_function): Split out code to generated shared
17105         INTEGER_CSTs to build_share_int_cst.
17106         (modify_all_vtables): Handle all the overridden functions here.
17107         Add overridden functions from non-primary virtual bases to the
17108         primary vtable.
17109         (finish_struct_1): Adjust call to modify_all_vtables.  Add
17110         overridden functions from non-primary bases to the vtable.
17111         * tree.c (build_shared_int_cst): New function.
17112
17113         * cp-tree.h (scratchalloc): Remove.
17114         (build_scratch_list): Likewise.
17115         * call.c (convert_class_to_reference): Replace build_scratch_list
17116         and build_expr_list with build_tree_list.
17117         (add_candidate): Replace scratchalloc with expralloc.  Note memory
17118         leak.
17119         (build_user_type_conversion_1):  Replace build_scratch_list
17120         and build_expr_list with build_tree_list.
17121         (build_new_op): Likewise.
17122         (build_op_delete_call): Likewise.
17123         (convert_like): Likewise.
17124         * cvt.c (ocp_convert): Likewise.
17125         * decl.c (start_decl): Likewise.
17126         (start_function): Likewise.
17127         (finish_destructor_body): Likewise.
17128         (maybe_build_cleanup_1): Likewise.
17129         * decl2.c (reparse_decl_as_expr): Likewise.
17130         * init.c (perform_member_init): Likewise.
17131         (expand_cleanup_for_base): Likewise.
17132         (build_builtin_delete_call): Likewise.
17133         (build_new_1): Likewise.
17134         (build_delete): Likewise.
17135         * method.c (do_build_assign_ref): Likewise.
17136         * parse.y (already_scoped_stmt): Likewise.
17137         (nontrivial_exprlist): Likewise.
17138         (net_initializer): Likewise.
17139         (initlist): Likewise.
17140         * parse.c: Regenerated.
17141         * rtti.c (build_x_typeid): Likewise.
17142         (build_dynamic_cast_1): Likewise.
17143         * typeck.c (build_x_compound_expr): Likewise.
17144         (build_static_cast): Likewise.
17145         (build_modify_expr): Likewise.
17146
17147         * cp-tree.h (DECL_VINDEX): Add documentation.
17148         * class.c (build_vtable_entry): Likewise.
17149         (start_vtable): Add comment.
17150         (add_virtual_function): Replace pending_hard_virtuals with
17151         overridden_virtuals and pending_virtuals with new_virtuals.
17152         Replace redundant assignments with assertions.
17153         (check_for_override): Add comment.
17154         (check_bases_and_members): Replace pending_hard_virtuals with
17155         overridden_virtuals and pending_virtuals with new_virtuals.
17156         (create_vtbl_ptr): Likewise.
17157         (layout_class_type): Likewise.
17158         (finish_struct_1): Likewise.  Add comments.
17159
17160 2000-01-16  Mark Mitchell  <mark@codesourcery.com>
17161
17162         * class.c (finish_struct_1): Replace redundant code with
17163         assertions.
17164
17165         * cp-tree.h (flag_new_abi): Move.
17166         (flag_use_cxa_atexit): Likewise.
17167         (flag_honor_std): Likewise.
17168         (flag_rtti): Likewise.
17169         (vbase_offsets_in_vtable_p): Define.
17170         (vptrs_present_everywhere_p): Likewise.
17171         (TYPE_CONTAINS_VPTR_P): Likewise.
17172         (dfs_walk_real): Declare.
17173         * class.c (build_vbase_pointer_fields): Check
17174         vbase_offsets_in_vtable_p.
17175         (dfs_build_vbase_offset_vtbl_entries): Record the vbase indices in
17176         BINFO_VPTR_FIELD.
17177         (build_vbase_offset_vtbl_entries): Simplify.
17178         (build_vbase_offset_vtbl_entries): Adjust.
17179         (build_vbase_pointer): Add ability to look up vbase offsets in
17180         vtable.
17181         (start_vtable): New function.
17182         (add_virtual_function): Use it.
17183         (determine_primary_base): Use TYPE_CONTAINS_VPTR_P.
17184         (num_extra_vtbl_entries): Use vbase_offsets_in_vtable_p.
17185         (build_vtbl_initializer): Take the type of the complete object as
17186         input.  Use it to correctly calculate vbase offsets.
17187         (dfs_finish_vtbls): Pass the complete type to
17188         build_vtbl_initializer.
17189         (check_bases_and_members): Use TYPE_CONTAINS_VPTR_P.
17190         (create_vtable_ptr): Create a vtable even if there are no
17191         new virtual functions, under the new ABI.
17192         (finish_struct_1): Likewise.
17193         (get_vfield_name): Use TYPE_CONTAINS_VPTR_P.
17194         * decl.c (exapnd_static_init): Remove call to
17195         preserve_initializer.
17196         * decl2.c (mark_vtable_entries): Tweak to handle vbase offsets in
17197         vtables.
17198         * init.c (initialize_vtbl_ptrs): Initialize them in pre-order.
17199         (expand_virtual_init): Use vbase_offsets_in_vtable_p.
17200         (construct_virtual_bases): Don't initialize virtual base pointers
17201         under the new ABI.
17202         (build_aggr_init): Clean up comment.
17203         (expand_aggr_init_1): Likewise.
17204         * rtti.c (expand_class_desc): Store the virtual function table
17205         index where the vbase offset lives in the offset field.
17206         * search.c (dfs_walk_real): Make it global.
17207         (dfs_debug_mark): Use TYPE_CONTAINS_VPTR_P.
17208         * tree.c (make_binfo): Don't clear BINFO_VPTR_FIELD.
17209
17210         * tinfo.h (USItype): Make it signed under the new ABI.
17211         * tinfo.cc (convert_to_base): New function.  Encapsulate base
17212         conversion logic here.
17213         (__class_type_info::do_upcast): Use it.
17214         (__class_type_info::do_dyncast): Likewise.
17215         (__class_type_info::do_find_public_subobj): Likewise.
17216
17217         * init.c (construct_virtual_bases): Don't look up the addresses of
17218         virtual bases at run-time.
17219
17220         * class.c (build_vbase_pointer): Relocate.
17221         (build_vbase_pointer_fields): Likewise.
17222         (dfs_build_vbase_offset_vtbl_entries): Likewise.
17223         (build_vbase_offset_vtbl_entries): Likewise.
17224
17225         * decl.c (init_decl_processing): Complain if -fnew-abi
17226         -fno-vtable-thunks is used.
17227
17228         * decl2.c (lang_decode_option): Don't couple flag_honor_std to
17229         flag_new_abi.
17230
17231 2000-01-15  Mark Mitchell  <mark@codesourcery.com>
17232
17233         * cp-tree.h (num_extra_vtbl_entries): New function.
17234         (size_extra_vtbl_entries): Likewise.
17235         (dfs_vtable_path_unmark): Likewise.
17236         (dfs_vtable_path_unmarked_real_bases_queue_p): Likewise.
17237         (dfs_vtable_path_marked_real_bases_queue_p): Likewise.
17238         * class.c (num_extra_vtbl_entries): New function.
17239         (size_extra_vtbl_entries): Likewise.
17240         (dfs_build_vbase_offset_vtbl_entries): New function.
17241         (build_vbase_offset_vtbl_entries): Likewise.
17242         (build_vtbl_initializer): Use it.
17243         (finish_struct_1): Adjust vtable sizes (using
17244         num_extra_vtbl_entries).
17245         * expr.c (cplus_expand_expr): Assert that the DECL_RTL for a
17246         THUNK_DECL is non-NULL before expanding it.
17247         * init.c (expand_virtual_init): Adjust the vtable pointer by
17248         size_extra_vtbl_entries before storing it.
17249         * search.c (get_shared_vase_if_not_primary): Adjust prototype.
17250         Handle TREE_LIST parameters here, not in the dfs_* functions.
17251         (dfs_unmarked_real_bases_queue_p): Adjust.
17252         (dfs_marked_real_bases_queue_p): Likewise.
17253         (dfs_vtable_path_unmarked_real_bases_queue_p): New function.
17254         (dfs_vtable_path_marked_real_bases_queue_p): New function.
17255         (dfs_vtable_path_unmark): Likewise.
17256
17257 2000-01-14  Mark Mitchell  <mark@codesourcery.com>
17258
17259         * optimize.c (copy_body_r): Clear the operand three of a
17260         TARGET_EXPR when copying it.
17261
17262 2000-01-14  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
17263
17264         * method.c (build_decl_overload_real): Check whether we are in ::
17265         before returning __builtin_new/delete.
17266
17267 2000-01-13  Mark Mitchell  <mark@codesourcery.com>
17268
17269         * pt.c (tsubst_friend_function): Improve comment.
17270         (instantiate_decl): Avoid crashing when a "nested" function is
17271         instantiated from the top level.
17272
17273         * dump.c (dqeueue_and_dump): Dump
17274         DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION.
17275
17276 2000-01-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17277
17278         * call.c: If GATHER_STATISTICS, declare `n_build_method_call'.
17279
17280 2000-01-13  Nathan Sidwell  <sidwell@codesourcery.com>
17281
17282         * g++spec.c (lang_specific_driver): Add -fnew-abi if
17283         ENABLE_NEW_GXX_ABI defined.
17284         * Make-lang.in (tinfo.o, tinfo2.o, exception.o, new.o,
17285         opnew.o, opnewnt.o, opvnew.o, opvnewnt.o, opdel.o, opdelnt.o,
17286         opvdel.o, opvdelnt.o): Use GXX_ABI_FLAG switch.
17287
17288 2000-01-12  Mark Mitchell  <mark@codesourcery.com>
17289
17290         * decl.c (start_cleanup_fn): Call pushdecl.
17291
17292         * call.c (convert_class_to_reference): Fix typos.
17293         (build_conditional_expr): Handle errors gracefully.
17294         * class.c (push_nested_class): Likewise.
17295         * cp-tree.h (VAR_FUNCTION_OR_PARM_DECL_CHECK): New macro.
17296         (DECL_THIS_EXTERN): Use it.
17297         (DECL_THIS_STATIC): Likewise.
17298         * cvt.c (convert_to_void): Handle errors gracefully.
17299         (build_expr_type_conversion): Likewise.
17300         * decl.c (maybe_push_decl): Likewise.
17301         (start_decl_1): Likewise.
17302         (require_complete_types_for_parms): Likewise.
17303         * parse.y (structsp): Likewise.
17304         (base_class): Likewise.
17305         * parse.c: Regenerated.
17306         * pt.c (finish_member_template_decl): Likewise.
17307         * typeck.c (decay_conversion): Likewise.
17308
17309         * cp-tree.h (dfs_skip_vbases): New function.
17310         (find_vbase_instance): Likewise.
17311         * class.c (determine_primary_base): Allow a nearly empty base to
17312         serve as a primary base class under the new ABI.
17313         (get_class_offset_1): Rename to ...
17314         (dfs_get_class_offset): ... this.  Simplify.  Don't issue error
17315         messages here.
17316         (get_class_offset): Use it.  Issue error messages here.
17317         (dfs_modify_vtables): Rely on dfs_unmarked_real_bases_queue_p to
17318         find the right copies of virtual bases.
17319         (fixup_vtable_deltas1): Rename to ...
17320         (dfs_fixup_vtable_deltas): ... this.  Adjust to handle virtual
17321         bases as primary bases.
17322         (fixup_vtable_deltas): Remove.
17323         (override_one_vtable): Handle virtual bases as primary bases.
17324         (merge_overrides): Likewise.
17325         (finish_struct_1): Likewise.
17326         (dump_class_hierarchy): Dump primary-ness of bases as well.
17327         * search.c (mark_primary_bases): Use a pre-order traversal to
17328         handle primary virtual bases.
17329         (dfs_skip_vbases): New fiunction.
17330         (expand_upcast_fixups): Adjust to handle primary virtual bases.
17331         (fixup_virtual_upcast_offsets): Likewise.
17332         (fixup_all_virtual_upcast_offsets): Likewise.
17333         (dfs_find_vbase_instances): New function.
17334         (find_vbase_instance): Likewise.
17335
17336 2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>
17337
17338         * lex.c (DIR_SEPARATOR): Delete macro.
17339
17340 2000-01-12  Gabriel Dos Reis  <gdr@codesourcery.com>
17341
17342        * decl2.c (lang_decode_option): Handle automatic line wrapping
17343        option.
17344
17345 2000-01-11  Mark Mitchell  <mark@codesourcery.com>
17346
17347         * friend.c (do_friend): Don't resolve scopes when processing
17348         template declarations, even if the qualifying scope doesn't
17349         involve template parameters.
17350
17351 2000-01-10  Mark Mitchell  <mitchell@dumbledore.codesourcery.com>
17352
17353         * class.c (dfs_modify_vtables_queue_p): Remove.
17354         (modify_all_vtables): Use dfs_unmarked_real_bases_queue_p
17355         and dfs_marked_real_bases_queue_p instead of
17356         dfs_modify_vtables_queue_p.
17357
17358         * class.c (build_vbase_path): Simplify.
17359         (dfs_propagate_binfo_offsets): New function.
17360         (propagate_binfo_offsets): Use it.
17361         (remove_base_field): Simplify.
17362         (dfs_set_offset_for_vbases): Remove.
17363         (dfs_set_offset_for_shared_vbases): New function.
17364         (dfs_set_offset_for_unshared_vbases): Likewise.
17365         (layout_virtual_bases): Use them.
17366         (layout_basetypes): Don't call propagate_binfo_offsets.
17367         * search.c (dfs_get_vbase_types): Clone completely fresh binfos
17368         for the vbases.
17369
17370         * class.c (build_base_field): New function, split out from ...
17371         (build_base_fields): ... here.  Use it.  Allocate primary bases
17372         first, under the new ABI.
17373         (get_vtable_entry): Remove.
17374         (remove_base_field): New function, split out from ...
17375         (remove_base_fields): ... here.  Adjust since primary bases come
17376         first under the new ABI.
17377
17378         * cp-tree.h (expand_direct_vtbls_init): Remove declaration.
17379         (initialize_vtbl_ptrs): New function.
17380         (expand_indirect_vtbls_init): Change prototype.
17381         (convert_pointer_to_vbase): Declare.
17382         * init.c (expand_direct_vtbls_init): Remove.
17383         (dfs_initialize_vtbl_ptrs): New function.
17384         (initialize_vtbl_ptrs): Likewise.
17385         (emit_base_init): Use initialize_vtbl_ptrs.
17386         * search.c (convert_pointer_to_vbase): Make it global.
17387         (expand_indirect_vtbls_init): Remove vtable initialization code.
17388         * semantics.c (setup_vtbl_ptr): Use initialize_vtbl_ptrs.
17389
17390         * class.c (dfs_finish_vtbls): New function.
17391         (finish_vtbls): Use it.
17392         (dump_class_hierarchy): New function.
17393
17394         * cp-tree.h (BINFO_PRIMARY_MARKED_P): Change definition.
17395         (BINFO_VBASE_PRIMARY_P): New macro.
17396         (BINFO_VIRTUALS): Add to documentation.
17397         (SET_BINFO_PRIMARY_MARKED_P): Remove.
17398         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
17399         (dfs_mark_primary_bases_queue_p): Likewise.
17400         (dfs_unmarked_real_bases_queue_p): New function.
17401         (dfs_marked_real_bases_queue_p): Likewise.
17402         * search.c (dfs_mark_primary_bases): Adjust.
17403         (mark_primary_bases): Likewise.
17404         (get_shared_vbase_if_not_primary): New function.
17405         (dfs_unmarked_real_bases_queue_p): Likewise.
17406         (dfs_marked_real_bases_queue_p): Likewise.
17407         (dfs_get_pure_virtuals): Simplify.
17408         (get_pure_virtuals): Likewise.
17409
17410 2000-01-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17411
17412         * lex.c: Include tm_p.h.
17413
17414 2000-01-07  Nathan Sidwell  <sidwell@codesourcery.com>
17415
17416         * lang-specs.h (__GXX_ABI_VERSION): New preprocessor macro.
17417
17418 2000-01-06  Jason Merrill  <jason@casey.cygnus.com>
17419
17420         * decl2.c (comdat_linkage): Don't set DECL_DEFER_OUTPUT.
17421         * pt.c (instantiate_decl): Defer comdat templates that might not be
17422         needed.
17423
17424         * cp-tree.h (DECL_NEEDED_P): Also true if !DECL_COMDAT.
17425         * decl2.c (finish_vtable_vardecl): Don't check !DECL_COMDAT.
17426         (finish_file): Likewise.
17427
17428         * decl2.c (import_export_class): Undo 12/14 change.
17429
17430         * error.c (dump_decl): operator new, not operatornew.
17431
17432         * class.c (field_decl_cmp): A nontype is "greater" than a type.
17433         * search.c (lookup_field_1): Look for the last field with the
17434         desired name.
17435
17436 2000-01-05  Nathan Sidwell  <nathan@acm.org>
17437
17438         * decl2.c (lookup_arg_dependent): Deal with FNS not being a
17439         FUNCTION_DECL.
17440
17441 2000-01-05  Nathan Sidwell  <nathan@acm.org>
17442
17443         * typeck.c (build_static_cast): Don't strip target qualifiers
17444         when casting from a class.
17445
17446 2000-01-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17447
17448         * class.c (warn_hidden): Initialize variable `fndecl'.
17449
17450 2000-01-03  Ulrich Drepper  <drepper@cygnus.com>
17451
17452         * decl.c (flag_isoc9x): New variable to be able to use code in
17453         c-common.c.  For now always zero.
17454
17455 2000-01-03  Mark Mitchell  <mark@codesourcery.com>
17456
17457         * cp-tree.h (CLASSTYPE_VBASECLASSES): Improve documentation.
17458         * class.c (layout_basetypes): Don't set BINFO_INHERITANCE_CHAIN
17459         or unshare_base_binfos for virtual bases here.
17460         * search.c (dfs_get_vbase_types): Do it here.
17461         (get_vbase_types): Adjust.
17462
17463 2000-01-02  Mark Mitchell  <mark@codesourcery.com>
17464
17465         * cp-tree.h (CLASSTYPE_VFIELDS): Move definition.
17466         (BINFO_PRIMARY_MARKED_P): Use flag 5.
17467         (SET_BINFO_PRIMARY_MARKED_P): Likewise.
17468         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
17469         (unmark_primary_bases): Remove declaration.
17470         (unmarkedp): Declare.
17471         (dfs_vbase_unmark): Likewise.
17472         * class.c (determine_primary_base): Return immediately if there
17473         are no base classes.  Call mark_primary_bases here.
17474         (modify_all_direct_vtables): Remove.
17475         (modify_all_indirect_vtables): Remove.
17476         (dfs_modify_vtables_queue_p): New function.
17477         (dfs_modify_vtables): New function.
17478         (modify_all_vtables): Use them.
17479         (build_base_fields): Build FIELD_DECLs for primary virtual base
17480         classes.
17481         (create_vtable_ptr): Don't call determine_primary_base here.
17482         (dfs_mark_primary_bases_and_set_vbase_offsets): Rename to ...
17483         (dfs_set_offset_for_vbases): ... this.
17484         (layout_virtual_bases): Use it.
17485         (layout_class_type): Call determine_primary_base here.
17486         * search.c (unmarkedp): Make it global.
17487         (shared_marked_p): Simplify.
17488         (shared_unmarked_p): Likewise.
17489         (dfs_primary_bases_queue_p): Remove.
17490         (dfs_unmark_primary_bases): Likewise.
17491         (unmark_primary_bases): Likewise.
17492         (mark_primary_bases): Simplify.
17493         (get_pure_virtuals): Don't call mark_primary_bases here.
17494         (dfs_vbase_unmark): New function.
17495         (get_vbase_types): Simplify.
17496
17497         * class.c (struct base_info): Remove.
17498         (determine_primary_base): Take has_virtual_p rather than a
17499         base_info as input.  Don't calculate max_has_virtual.
17500         (finish_struct_bits): Remove max_has_virtual argument.
17501         (create_vtable_ptr): Remove max_has_virtual_p argument.
17502         (layout_virtual_bases): Remove max argument.
17503         (layout_basetypes): Likewise.
17504         (layout_class_type): Remove max_has_virtual_p argument.
17505         (finish_struct_1): Remove max_has_virtual.
17506
17507         * cp-tree.h (dfs_mark_primary_bases_queue_p): New function.
17508         (layout_basetypes): Remove.
17509         * class.c (propagate_binfo_offsets): Moved here from tree.c.
17510         Update to handle primary virtual bases.
17511         (remove_base_fields): New function, split out from
17512         layout_basetypes.
17513         (dfs_mark_primary_bases_and_set_vbase_offsets): New function.
17514         (layout_virtual_bases): New function, split out from
17515         layout_basetypes.  Update to handle primary virtual bases.
17516         (layout_basetypes): Moved here from tree.c.  Use
17517         remove_base_fields and layout_virtual_bases.
17518         * search.c (dfs_mark_primary_bases_queue_p): New function.
17519         (mark_primary_bases): Use it.
17520         * tree.c (CEIL): Remove.
17521         (propagate_binfo_offsets): Remove.
17522         (layout_basetypes): Remove.
17523
17524 2000-01-01  Mark Mitchell  <mark@codesourcery.com>
17525
17526         * cp-tree.h (CLASSTYPE_N_BASECLASSES): Use BINFO_N_BASETYPES.
17527         (BINFO_PRIMARY_MARKED_P): New macro.
17528         (SET_BINFO_PRIMARY_MARKED_P): Likewise.
17529         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
17530         (mark_primary_bases): New function.
17531         (unmark_primary_bases): Likewise.
17532         * search.c (get_abstract_virtuals_1): Remove.
17533         (dfs_mark_primary_bases): New function.
17534         (mark_primary_bases): Likewise.
17535         (dfs_unmark_primary_bases): Likewise.
17536         (unmark_primary_bases): Likewise.
17537         (dfs_get_pure_virtuals): Likewise.
17538
17539 2000-01-01  Mark Mitchell  <mark@codesourcery.com>
17540
17541         * cp-tree.h (skip_rtti_stuff): Adjust prototype.
17542         * class.c (skip_rtti_stuff): Reorganize parameters and return value.
17543         (modify_one_vtable): Adjust.
17544         (fixup_vtable_deltas1): Likewise.
17545         (override_one_vtable): Likewise.
17546         * search.c (get_abstract_virtuals_1): Likewise.
17547         (get_pure_virtuals): Likewise.
17548         (expand_upcast_fixups): Likewise.
17549         * tree.c (debug_binfo): Likewise.
17550
17551         * class.c (build_vtable): Don't return a value.  Don't rebuild
17552         vtables for bases that have already been handled.
17553         (prepare_fresh_vtable): Don't rebuild vtables for bases that have
17554         already been handled.
17555         (modify_one_vtable): Adjust accordingly.
17556         (fixup_vtable_deltas1): Likewise.
17557         (finish_struct_1): Likewise.
17558
17559 2000-01-01  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
17560
17561         * call.c (build_new_method_call): Also check destructors.