OSDN Git Service

2c9b1e55df235156b72ba10189f7f0cf323c2d83
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2002-03-14  Richard Henderson  <rth@redhat.com>
2
3         * decl.c: Include c-pragma.h.
4         (start_decl, start_function): Invoke maybe_apply_pragma_weak.
5         * Make-lang.in: Update dependencies.
6
7 2002-03-14  Jakub Jelinek  <jakub@redhat.com>
8
9         PR c++/5908
10         * call.c (build_over_call): Set TREE_NO_UNUSED_WARNING too.
11         * cvt.c (convert_to_void): Preserve TREE_NO_UNUSED_WARNING.
12
13 2002-03-12  Richard Sandiford  <rsandifo@redhat.com>
14
15         * mangle.c (write_builtin_type): Handle 128-bit integers even if
16         they are not a standard integer type.
17
18 2002-03-12  Richard Sandiford  <rsandifo@redhat.com>
19
20         * cp-tree.h (init_init_processing): Remove declaration.
21         * init.c (BI_header_type, init_init_processing): Remove old ABI stuff.
22         * decl.c (cxx_init_decl_processing): Don't call init_init_processing.
23
24 2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25
26         * cp-lang.c (tree_code_type, tree_code_length, tree_code_name):
27         Define.
28         * decl.c (duplicate_decls): Use TREE_CODE_LENGTH, not
29         tree_code_length.
30         * lex.c (cplus_tree_code_type, cplus_tree_code_length,
31         cplus_tree_code_name): Delete.
32         (cxx_init): Don't call add_c_tree_codes, instead set
33         lang_unsafe_for_reeval.  Don't try to copy into the various
34         tree_code arrays.
35
36 2002-03-12  Nathan Sidwell  <nathan@codesourcery.com>
37
38         PR c++/5659
39         * decl.c (xref_tag): Don't set CLASSTYPE_DECLARED_CLASS here.
40         * decl2.c (handle_class_head): Set CLASSTYPE_DECLARED_CLASS for
41         definitions.
42
43 2002-03-11  Nathan Sidwell  <nathan@codesourcery.com>
44
45         Revert 2001-03-26  Nathan Sidwell  <nathan@codesourcery.com>,
46         DR209 is now not a defect.
47         * cp-tree.h (skip_type_access_control): Remove.
48         * decl.c (grokdeclarator): Do type access control for friend
49         declarations.
50         * semantics.c (decl_type_access_control): Don't reset
51         current_type_lookups.
52         (save_type_access_control): Always save the lookups.
53         (skip_type_access_control): Remove.
54         (finish_class_definition): Don't change type_lookups.
55
56 2002-03-11  Nathan Sidwell  <nathan@codesourcery.com>
57
58         Revert 2000-12-01  Nathan Sidwell  <nathan@codesourcery.com>,
59         It is incorrect.
60         * typeck.c (build_static_cast): Compare non-qualified types
61         with pointer to member conversions.
62
63 2002-03-11  Dan Nicolaescu  <dann@ics.uci.edu>
64             Daniel Berlin  <dan@dberlin.org>
65
66         * cp-lang.c (ok_to_generate_alias_set_for_type): New function.
67         (cxx_get_alias_set): Use it.
68
69 2002-03-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
70
71         * cp-tree.h (stabilize_expr): Prototype.
72
73 2002-03-08  Craig Rodrigues  <rodrigc@gcc.gnu.org>
74
75         * cp-tree.h (CLEAR_BINFO_MARKED): Make both parts of
76         conditional return void.
77
78 2002-03-08  Neil Booth  <neil@daikokuya.demon.co.uk>
79
80         * cp-lang.c (LANG_HOOKS_UNSAVE): Redefine.
81         * cp-tree.h (cxx_unsave): New.
82         * tree.c (cp_unsave): Rename cxx_unsave, update prototype.
83         (init_tree): Update.
84
85 2002-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
86
87         * decl.c (cxx_init_decl_processing): Use ARRAY_SIZE in lieu of
88         explicit sizeof/sizeof.
89         * decl2.c (cxx_decode_option): Likewise.
90         * lex.c (init_reswords, REDUCE_LENGTH, TOKEN_LENGTH): Likewise.
91
92 2002-03-02  Nathan Sidwell  <nathan@codesourcery.com>
93
94         PR c++/775
95         * decl.c (lookup_tag): Only reject enum/class mismatch, not
96         class/union mismatch.
97         * parse.y (check_class_key): New function.
98         (structsp): Call it.
99
100 2002-03-01  Michael Matz  <matz@suse.de>
101
102         * typeck.c (cp_pointer_int_sum): Complete inner type which is
103         used later by size_in_bytes().
104
105 2002-03-01  Phil Edwards  <pme@gcc.gnu.org>
106
107         * cp-tree.h:  Require __GNUC__ to be #defined.
108         (build_init):  Add missing prototype.
109
110 2002-03-01  Jason Merrill  <jason@redhat.com>
111
112         * except.c: Don't include decl.h or obstack.h.  Do include
113         tree-inline.h.
114         (build_throw): Destroy temporaries from the thrown
115         expression before calling __cxa_throw.  Construct a thrown 
116         temporary directly into the exception object.
117         (stabilize_throw_expr): New function.
118         (wrap_cleanups_r): New function.
119         * tree.c (stabilize_expr): New function.
120         * init.c (build_init): New function.
121         * Make-lang.in (cp/except.o): Adjust .h deps.
122
123 2002-02-28  Jason Merrill  <jason@redhat.com>
124
125         * search.c (lookup_base_r): Don't clear is_non_public just because
126         we found a friendly scope.
127
128         * decl.c (finish_function): Only warn about missing return
129         statement with -Wreturn-type.
130
131 2002-02-28  Neil Booth  <neil@daikokuya.demon.co.uk>
132
133         * class.c (build_clone): Update.
134         * cp-lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
135         * cp-tree.h (cxx_dup_lang_specific_decl): New.
136         * lex.c (copy_lang_decl): Rename cxx_dup_lang_specific_decl.
137         (copy_decl): Update.
138         * method.c (make_thunk): Update.
139
140 2002-02-27  Zack Weinberg  <zack@codesourcery.com>
141
142         * decl2.c: Delete traditional-mode-related code copied from
143         the C front end but not used, or used only to permit the
144         compiler to link.
145
146 2002-02-24 Craig Rodrigues  <rodrigc@gcc.gnu.org> 
147
148         PR c++/4093
149         * cp-tree.h (SET_BINFO_MARKED): Cast false part of condition
150         to void.
151
152 2002-02-22  Jakub Jelinek  <jakub@redhat.com>
153
154         PR other/5746
155         * semantics.c (finish_switch_cond): Don't call get_unwidened
156         if error_mark_node.
157
158 2002-02-22  Nathan Sidwell  <nathan@codesourcery.com>
159
160         PR c++/2645, DR 295
161         * cp-tree.h (tsubst_flags_t): Add tf_ignore_bad_quals,
162         tf_keep_type_decl.
163         (make_typename_type): Use tsubst_flags_t.
164         * decl.c (make_typename_type): Adjust. Return non-artificial
165         TYPE_DECLs, if required.
166         (grokdeclarator): Simplify CVR qualification handling. Allow bad
167         qualifiers on typedef types.
168         * decl2.c (handle_class_head): Adjust make_typename_type call.
169         * parse.y (nested_name_specifier): Likewise.
170         (typename_sub0): Likewise.
171         (typename_sub1): Likewise.
172         * pt.c (convert_template_argument): Adjust make_typename_type
173         return value.
174         (tsubst): Adjust cp_build_qualified_type_real calls.
175         (check_cv_quals_for_unify): Cope with alowing bad qualifications
176         on template type parms.
177         (instantiate_decl): Recheck substitutions to give warnings on bad
178         qualifications.
179         * tree.c (cp_build_qualified_type_real): Use tf_allow_bad_quals.
180
181 2002-02-21  Aldy Hernandez  <aldyh@redhat.com>
182
183         * cp/decl.c (duplicate_decls): Merge always_inline attribute.
184
185         * cp/tree.c (cp_cannot_inline_tree_fn): Do not inline at -O0
186         unless DECL_ALWAYS_INLINE.
187
188 2002-02-20  Jakub Jelinek  <jakub@redhat.com>
189
190         * typeck.c (cp_pointer_int_sum): Renamed from
191         pointer_int_sum, call pointer_int_sum.
192
193 2002-02-20  Jakub Jelinek  <jakub@redhat.com>
194
195         * decl.c (duplicate_decls): Return 0 if issued error about
196         redeclaration.
197
198 2002-02-19  Jason Merrill  <jason@redhat.com>
199
200         ABI change: Mangle `void (A::*)() const' as 
201         M1AKFvvE, not MK1AFvvE.
202         * mangle.c (write_function_type): Write cv-quals for member
203         function type here.
204         (write_pointer_to_member_type): Not here.
205
206 2002-02-18  Jason Merrill  <jason@redhat.com>
207
208         * pt.c (do_type_instantiation): Don't pedwarn if in_system_header.
209         (do_decl_instantiation): Likewise.
210
211 2002-02-17  Craig Rodrigues  <rodrigc@gcc.gnu.org>
212
213         PR c++/5685
214         * decl.c (duplicate_decls): Make warning unconditional
215         if duplicate default argument declarations are present.
216
217 2002-02-17  Jakub Jelinek  <jakub@redhat.com>
218
219         * typeck.c (build_binary_op) [BIT_XOR_EXPR]: Remove explicit
220         shortening.
221
222 2002-02-15  Nathan Sidwell  <nathan@codesourcery.com>
223
224         * decl.c (grokdeclarator): Set typedef_decl for all TYPE_DECLs,
225         remove incorrect comment. Move #if 0'd code to common path. Use
226         IMPLICIT_TYPENAME_P. Simplify & reformat ARRAY_TYPE duplication.
227
228 2002-02-13  Jason Merrill  <jason@redhat.com>
229
230         * decl.c (builtin_function): Set TREE_THIS_VOLATILE on return fns.
231         (finish_function): Don't warn if current_function_returns_null.
232
233         * typeck2.c (digest_init): Do handle values of vector type.
234
235         * typeck2.c (digest_init, process_init_constructor): Treat vectors
236         like arrays.
237
238 2002-02-11  Jason Merrill  <jason@redhat.com>
239
240         * parse.y (reserved_declspecs): Don't handle attributes.
241         (reserved_typespecquals): Handle them here.
242         * Make-lang.in (parse.c): Adjust expected conflicts.
243
244 2002-02-08  Jakub Jelinek  <jakub@redhat.com>
245
246         * parse.y (primary, primary_no_id): Use compstmt_or_stmtexpr
247         instead of compstmt.
248         (compstmt_or_stmtexpr): Renamed from compstmt.
249         (compstmt): In addition to compstmt_or_stmtexpr clear last_expr_type.
250
251 2002-02-07  Nathan Sidwell  <nathan@codesourcery.com>
252
253         Rename instantiate_type_flags to tsubst_flags_t & expand use.
254         * cp-tree.h (instantiate_type_flags): Rename to ...
255         (tsubst_flags_t): ... here. Rename itf_complain to tf_error,
256         add tf_warning flag.
257         (instantiate_type): Adjust prototype.
258         (tsubst, tsubst_expr, tsubst_copy, lookup_template_class,
259         do_type_instantiation, cp_build_qualified_type_real): Likewise.
260         cp_build_qualified_type: Adjust.
261         * class.c (instantiate_type): Adjust parameter. Rename itf_* to
262         tf_*.
263         * call.c (standard_conversion): Rename itf_* to tf_*.
264         (reference_binding): Likewise.
265         (convert_like_real): Likewise.
266         * cvt.c (cp_convert_to_pointer): Likewise.
267         (convert_to_reference): Likewise.
268         * decl.c (lookup_namespace_name): Use tf_* flags.
269         (make_typename_type): Likewise.
270         (grokdeclarator): Likewise.
271         * pt.c (convert_nontype_argument): Adjust COMPLAIN usage.
272         (coerce_template_template_parms, convert_template_argument,
273         coerce_template_parms, maybe_get_template_decl_from_type_decl,
274         lookup_template_class, tsubst_friend_function, tsubst_friend_class,
275         instantiate_class_template, tsubst_template_arg_vector, 
276         tsubst_template_parms, tsubst_aggr_type, tsubst_default_argument, 
277         tsubst_decl, tsubst_arg_types, tsubst_function_type,
278         tsubst_call_declarator_parms, tsubst, tsubst_copy, tsubst_expr, 
279         instantiate_template, fn_type_unification,
280         resolve_overloaded_unification, verify_class_unification, 
281         unify, get_bindings_real, do_type_instantiation, 
282         regenerate_decl_from_template, instantiate_decl, 
283         tsubst_initializer_list, tsubst_enum,
284         get_mostly_instantiated_function_type,
285         invalid_nontype_parm_type_p): Likewise.
286         * tree.c (cp_build_qualified_type_real): Likewise.
287         * typeck.c (build_binary_op): Rename itf_* to tf_*.
288         (build_ptrmemfunc): Likewise.
289         (convert_for_assignment): Likewise.
290
291 2002-02-07  Nathan Sidwell  <nathan@codesourcery.com>
292
293         PR c++/109
294         * decl.c (grokdeclarator): Allow friend declarations from
295         dependent types.
296         * decl2.c (handle_class_head): Don't push into template parm contexts.
297         * pt.c (push_template_decl_real): Template parm contexts are never
298         being defined.
299
300 2002-02-05  Alexandre Oliva  <aoliva@redhat.com>
301
302         * class.c: Include target.h.
303         (check_bitfield_decl): Disregard EMPTY_FIELD_BOUNDARY,
304         BITFIELDS_NBYTES_LIMITED and PCC_BITFIELD_TYPE_MATTERS for MS
305         bit-field layout.
306         * Make-lang.in: Adjust deps.
307
308 2002-02-05  Jason Merrill  <jason@redhat.com>
309
310         * error.c (dump_type): Be more helpful about VECTOR_TYPE.
311
312 2002-02-04  Jakub Jelinek  <jakub@redhat.com>
313
314         * semantics.c (begin_switch_stmt): Clear SWITCH_TYPE.
315         (finish_switch_cond): Set SWITCH_TYPE.
316
317 2002-02-04  Richard Henderson  <rth@redhat.com>
318
319         * method.c (use_thunk): Always initialize the block tree.  Reindent.
320         * semantics.c (expand_body): Emit thunks after function, not before.
321
322 2002-02-04  Jason Merrill  <jason@redhat.com>
323
324         * decl.c (start_function): Call cplus_decl_attributes immediately
325         after grokdeclarator.
326
327         * decl.c (start_function): Combine DECL_RESULT handling code.
328
329 2002-02-03  Jason Merrill  <jason@redhat.com>
330
331         * xref.c: Remove.
332         * Make-lang.in (CXX_OBJS): Remove cp/xref.o
333         (cp/xref.o): Remove dependencies.
334         * class.c (finish_struct_1, check_methods): Don't call xref fns.
335         (finish_struct_1): Likewise.
336         * friend.c (make_friend_class): Likewise.
337         * lex.c (cxx_init, cxx_finish, extract_interface_info): Likewise.
338         * spew.c (read_process_identifier): Likewise.
339
340 2002-02-01  Jason Merrill  <jason@redhat.com>
341
342         PR c++/4872
343         * decl.c (finish_function): Warn about a non-void function with 
344         no return statement and no abnormal exit.
345         * cp-tree.h (struct cp_language_function): Add returns_abnormally.
346         (current_function_returns_abnormally): New macro.
347         * call.c (build_call): Set it.
348
349         * typeck.c (build_component_ref): Always complain about offsetof
350         constructs on non-PODs.  Only make it an error for members of
351         virtual bases.
352
353         * error.c (dump_scope): Don't add TFF_DECL_SPECIFIERS.
354         (dump_function_decl): Always dump parms.
355
356         * decl2.c (finish_static_data_member_decl): Complain about a local
357         class with a static data member.
358
359         PR c++/4286
360         * search.c (lookup_field_1): Don't xref a static data member
361         just because we looked it up.
362
363 2002-01-31  Jason Merrill  <jason@redhat.com>
364
365         * Make-lang.in (parse.c): Handle .output file.
366
367         PR c++/3395
368         * decl.c (xref_tag): Remember early attributes in TYPE_ATTRIBUTES,
369         not TREE_TYPE.
370         * semantics.c (finish_class_definition): Adjust.
371
372         Allow attributes in parms and casts.
373         * parse.y (named_parm): Don't strip attrs.
374         (declmods): Remove 'attributes' production.
375         (nonempty_cv_qualifiers): Accept attributes.
376         (ATTRIBUTE): Give precedence.
377         * decl.c (groktypename): Handle attributes.
378         (grokparms): Likewise.
379
380 2002-01-29  Jakub Jelinek  <jakub@redhat.com>
381
382         * decl2.c (cxx_decode_option): Pass 0 as last argument to
383         cpp_handle_option.
384         * lang-specs.h: Use cpp_unique_options instead of cpp_options
385         when used together with cc1_options.
386
387 2002-01-29  Nathan Sidwell  <nathan@codesourcery.com>
388
389         PR c++/5132
390         * typeck2.c (digest_init): Make sure non-array core type is
391         instantiated.
392         * decl2.c (reparse_absdcl_as_casts): Just store the type in the
393         constructor, rather than build a new one.
394         (build_expr_from_tree, CONSTRUCTOR case): Be careful with the
395         PURPOSE of constructor elts.
396
397 2002-01-23  Zack Weinberg  <zack@codesourcery.com>
398
399         * Make-lang.in (parse.c): Adjust expected number of
400         shift-reduce conflicts.
401         (decl.o): Depend on diagnostic.h.
402         * decl.c: Include diagnostic.h.
403         (grokdeclarator): Check for null pointer.
404         (finish_function): Don't abort when
405         current_binding_level->parm_flag != 1, if errors have
406         occurred; throw away the statement tree and extra binding
407         levels, and continue.
408         * lex.c (note_list_got_semicolon): Check for null pointer.
409         * method.c (hack_identifier): Just return error_mark_node if
410         value is error_mark_node.
411         * parse.y (primary: TYPEID(type_id)): No need to use
412         TYPE_MAIN_VARIANT here.
413         (handler_seq): Accept an empty list of catch clauses and
414         generate a fake handler block to avoid later crashes.
415         (ansi_raise_identifier): Accept the error token too.
416         * semantics.c (begin_class_definition,
417         finish_class_definition): Check for error_mark_node.
418
419 2002-01-23  Zack Weinberg  <zack@codesourcery.com>
420
421         * typeck2.c (friendly_abort): Delete definition.
422         * cp-tree.h (friendly_abort): Don't prototype.
423         (my_friendly_assert): Use fancy_abort.
424
425 2002-01-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
426
427         * cp-tree.h (my_friendly_abort): Remove.
428
429 2002-01-23  Jakub Jelinek  <jakub@redhat.com>
430
431         * spew.c (pending_inlines, pending_inlines_tail,
432         processing_these_inlines): Make static.
433         (mark_pending_inlines): Remove static.
434         (begin_parsing_inclass_inline): If in function, save pi
435         for GC to cp_function_chain->unparsed_inlines instead.
436         (process_next_inline): Likewise.
437         * cp-tree.h (struct cp_language_function): Add unparsed_inlines.
438         (mark_pending_inlines): Add prototype.
439         * decl.c (spew_debug): Remove unused extern.
440         (mark_lang_function): Call mark_pending_inlines.
441
442 2002-01-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
443
444         * call.c, class.c, decl.c, decl2.c, error.c, expr.c, friend.c,
445         init.c, lex.c, mangle.c, method.c, pt.c, repo.c, rtti.c, search.c,
446         semantics.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c:
447         Change my_fancy_abort() to abort().
448
449 2002-01-23  Jason Merrill  <jason@redhat.com>
450
451         PR c++/5453
452         * class.c (fixed_type_or_null): Fix thinko.
453
454         PR c++/3331
455         * init.c (resolve_offset_ref): Use build_indirect_ref.
456
457         * decl2.c (grokclassfn): Don't set DECL_REGISTER on 'this'.
458
459 2002-01-22  Jason Merrill  <jason@redhat.com>
460
461         * parse.y (function_body): Suppress the block for the outermost
462         curly braces.
463         * decl.c (pushdecl): Don't try to skip it.
464         (begin_function_body): Keep the block we create, not the next one.
465         * init.c (emit_base_init): Don't mess with keep_next_level.
466
467         * class.c (build_base_path): Tweak formatting.
468
469 2002-01-19  Nathan Sidwell  <nathan@codesourcery.com>
470
471         Fix regression introduced with patch for c++/775
472         * parse.y (class_head_defn): Check for template specializations
473         with a different class-key.
474
475 2002-01-17  Jason Merrill  <jason@redhat.com>
476
477         * decl.c (begin_constructor_body, begin_destructor_body): New fns.
478         (begin_function_body): Call them and keep_next_level.
479         * init.c (emit_base_init): Call keep_next_level.
480         * semantics.c (setup_vtbl_ptr): Lose.
481         * cp-tree.h (struct cp_language_function): Remove vtbls_set_up_p.
482         (vtbls_set_up_p): Lose.
483         * pt.c (tsubst_expr, CTOR_INITIALIZER): Call emit_base_init.
484         * method.c (do_build_copy_constructor): Likewise.
485         (synthesize_method): Call finish_mem_initializers.
486         * parse.y (nodecls): Likewise.
487
488         * error.c (dump_type_suffix): Print the exception specs before
489         recursing.
490         (dump_function_decl): Here, too.
491
492         * cp-tree.h (TMPL_PARMS_DEPTH): Cast to signed HOST_WIDE_INT.
493
494 2002-01-10  Ira Ruben   <ira@apple.com>
495
496         PR c++/907
497         * decl.c (start_method): Handle attrlist.
498
499 2002-01-10  Jakub Jelinek  <jakub@redhat.com>
500
501         * decl2.c (max_tinst_depth): Increase default limit to 500.
502
503 2002-01-10  Graham Stott  <grahams@redhat.com>
504
505         * spew.c (YYCHAR): Uppercase macro parameter and add
506         parenthesis.
507         (YYCODE): Likewise.
508         (NAME): Uppercase macro parameter.
509
510 2002-01-09  Graham Stott  <grahams@redhat.com>
511
512         * decl.h (grokdeclarator): Wrap long line.
513
514         * semantics.c (FINISH_COND): Uppercase macro paramaters and
515         add parenthesis.
516
517 2002-01-08  Graham Stott  <grahams@redhat.com>
518
519         * xref.c (FILE_NAME_ABSOLUTE_P): Add parenthesis.
520         (PALLOC): Uppercase macro parameter and whitespace.
521         (SALLOC): Uppercase macro parameter.
522         (SFREE): Uppercase macros parameter, add parenthese and
523         whitespace.
524         (STREQL): Uppercase macro parameter and whitespace.
525         (STRNEQ): Likewise.
526         (STRLSS): Likewise.
527         (STRLEQ): Likewise.
528         (STRGTR): Likewise.
529         (STRGEQ): Likewise.
530
531         * call.c (convert_like): Add parenthesis and wrap.
532         (convert_like_with_context): Likewise.
533         (ICS_RANK): Whitespace.
534         (NEED_TEMPORARY_P): Remove parenthesis.
535
536         * class.c (VTT_TOP_LEVEL_P): Uppercase macro parameter and
537         whitespace.
538         (VTT_MARKED_BINFO_P): Likewise.
539
540         * decl.c (BINDING_LEVEL): Add parenthesis.
541         (DEF_OPERATOR): Likewise.
542
543         * mangle.c (MANGLE_TRACE): Add parenthesis.
544         (MANGLE_TRACE_TREE): Likewise.
545         (write_signed_number): Likewise.
546         (write_unsigned_number): Likewise.
547
548         * pt.c (ccat): Uppercase macro parameter.
549         (cat): Likewise
550
551         * search.c (SET_BINFO_ACCESS): Add parenthesis.
552
553 2002-01-07  Jason Merrill  <jason@redhat.com>
554
555         * decl2.c (coerce_new_type): Downgrade error for size_t mismatch
556         to pedwarn.
557
558         PR c++/3536
559         * method.c (make_thunk): If !flag_weak, give the thunk the
560         function's linkage.
561         (use_thunk): Here, too.
562
563 2002-01-07  Graham Stott  <grahams@redhat.com>
564
565         * error.c: Update copyright date.
566         (print_scope_operator): Add parenthesis.
567         (print_left_paren): Likewise.
568         (print_right_paren): Likewise.
569         (print_left_bracket): Likewise.
570         (print_right_bracket): Likewise.
571         (print_template_argument_list_start): Likewise.
572         (print_template_argument_list_end): Likewise.
573         (print_non_consecutive_character): Likewise.
574         (print_tree_identifier): Likewise.
575         (print_identifier): Likewise.
576         (NEXT_CODE): Uppercase macro parameter.
577         (ident_fndecl): Delete unused.
578         (GLOBAL_THING): Likewise.
579
580 2002-01-06  Graham Stott  <grahams@redhat.com>
581
582         * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK): Add parenthesis.
583         (VAR_FUNCTION_OR_PARM_DECL_CHECK): Likewise.
584         (VAR_TEMPL_TYPE_OR_FUNCTION_DECL_CHECK) Likewise.
585         (RECORD_OR_UNION_TYPE_CHECK): Likewise.
586         (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Likewise.
587         (C_IS_RESERVED_WORD): Uppercase macro parameter.
588         (C_RID_YYCODE) Likewise.
589         (ptrmem_cst): Use rtx.
590         (LOCAL_BINDING_P): Add whitespace.
591         (INHERITED_VALUE_BINDING_P): Likewise.
592         (BINDING_SCOPE): Wrap long line.
593         (BINDING_HAS_LEVEL_P): Remove parenthesis.
594         (BINDING_VALUE): Wrap long line.
595         (BINDING_TYPE): Whitespace.
596         (IDENTIFIER_GLOBAL_VALUE): Add parenthesis.
597         (SET_IDENTIFIER_GLOBAL_VALUE): Likewise.
598         (IDENTIFIER_NAMESPACE_VALUE): Likewise.
599         (SET_IDENTIFIER_NAMESPACE_VALUE: Likewise.
600         (same_type_p): Uppercase macro parameters.
601         (same_type_ignoring_top_level_qualifiers_p): Likewise.
602         (OVL_FUNCTION): Wrap long line.
603         (OVL_CHAIN): Whitespace.
604         (OVL_CURRENT): Add parenthesis and whitespace.
605         (OVL_NEXT): Whitespace.
606         (OVL_USED): Likewise.
607         (IDENTIFIER_TYPE_VALUE): Likewise.
608         (REAL_IDENTIFIER_TYPE_VALUE): Remove parenthesis.
609         (SET_IDENTIFIER_TYPE_VALUE): Add parenthesis and whitespace.
610         (LANG_ID_FIELD): Whitespace.
611         (SET_LANG_ID(NODE,VALUE,NAME): Likewise.
612         (IDENTIFIER_LABEL_VALUE): Whitespace and wrap.
613         (SET_IDENTIFIER_LABEL_VALUE): Whitespace.
614         (IDENTIFIER_IMPLICIT_DECL): Whitespace and wrap.
615         (SET_IDENTIFIER_IMPLICIT_DECL); Whitespace.
616         (IDENTIFIER_ERROR_LOCUS): Whitespace and wrap.
617         (SET_IDENTIFIER_ERROR_LOCUS); Whitespace.
618         (IDENTIFIER_VIRTUAL_P): Likewise.
619         (IDENTIFIER_OPNAME_P): Likewise.
620         (IDENTIFIER_TYPENAME_P): Remove parenthesis.
621         (C_TYPE_FIELDS_READONLY): Uppercase macro parameters.
622         (C_SET_EXP_ORIGINAL_CODE): Likewise.
623         (TYPE_ASSEMBLER_NAME_STRING): Wrap long line.
624         (TYPE_ASSEMBLER_NAME_LENGTH): Likewise.
625         (IS_AGGR_TYPE): Uppercase macro parameter.
626         (CLASS_TYPE_P): Likewise.
627         (IS_AGGR_TYPE_CODE): Uppercase macro parameter and parenthesis.
628         (IS_AGGR_TYPE_2): Whitespace.
629         (TAGGED_TYPE_P): Uppercase macro parameter.
630         (TYPE_BUILT_IN): Whitespace.
631         (TYPE_FOR_JAVA): Likewise.
632         (FUNCTION_ARG_CHAIN): Remove parenthesis.
633         (FUNCTION_FIRST_USER_PARMTYPE): Add parenthesis.
634         (FUNCTION_FIRST_USER_PARAM): Likewise.
635         (PROMOTES_TO_AGGR_TYPE): Whitespace.
636         (DERIVED_FROM_P): Add parenthesis and wrap.
637         (UNIQUELY_DERIVED_FROM_P): Likewise.
638         (ACCESSIBLY_UNIQUELY_DERIVED_P): Likewise.
639         (PUBLICLY_UNIQUELY_DERIVED_P): Likewise.
640         (CLASSTYPE_USE_TEMPLATE): Whitespace.
641         (CLASSTYPE_INLINE_FRIENDS): Remove parenthesis.
642         (TYPE_GETS_DELETE): Add parenthesis.
643         (TYPE_HAS_CONVERSION): Add parenthesis and wrap.
644         (TYPE_HAS_ASSIGN_REF): Likewise,
645         (TYPE_HAS_CONST_ASSIGN_REF): Likewise.
646         (TYPE_HAS_INIT_REF): Likewise.
647         (TYPE_HAS_CONST_INIT_REF): Likewise.
648         (TYPE_BEING_DEFINED): Likewise.
649         (TYPE_LANG_SPECIFIC): Likewise.
650         (CLASSTYPE_RTTI): Likewise.
651         (TYPE_OVERLOADS_CALL_EXPR): Likewise.
652         (TYPE_OVERLOADS_ARRAY_REF): Likewise.
653         (TYPE_OVERLOADS_ARROW): Likewise.
654         (TYPE_USES_MULTIPLE_INHERITANCE): Likewise.
655         (TYPE_USES_VIRTUAL_BASECLASSES): Add parenthesis.
656         (CLASSTYPE_METHOD_VEC): Likewise.
657         (CLASSTYPE_MARKED_N): Likewise.
658         (CLASSTYPE_MARKED): Likewise.
659         (CLASSTYPE_MARKED2): Likewise.
660         (CLASSTYPE_MARKED3): Likewise.
661         (CLASSTYPE_MARKED4): Likewise.
662         (CLASSTYPE_MARKED5): Likewise.
663         (CLASSTYPE_MARKED6): Likewise.
664         (SET_CLASSTYPE_MARKED): Whitespace.
665         (CLEAR_CLASSTYPE_MARKED): Likewise.
666         (SET_CLASSTYPE_MARKED2): Likewise.
667         (CLEAR_CLASSTYPE_MARKED2): Likewise.
668         (SET_CLASSTYPE_MARKED3): Likewise.
669         (CLEAR_CLASSTYPE_MARKED3): Likewise.
670         (SET_CLASSTYPE_MARKED4): Likewise.
671         (CLEAR_CLASSTYPE_MARKED4): Likewise.
672         (SET_CLASSTYPE_MARKED5): Likewise.
673         (CLEAR_CLASSTYPE_MARKED5): Likewise.
674         (SET_CLASSTYPE_MARKED6): Likewise.
675         (CLEAR_CLASSTYPE_MARKED6): Likewise.
676         (CLASSTYPE_TAGS): Likewise.
677         (CLASSTYPE_VSIZE): Likewise.
678         (CLASSTYPE_VBASECLASSES): Likewise.
679         (CANONICAL_BINFO): Add parenthesis.
680         (CLASSTYPE_SIZE(NODE): Likewise.
681         (CLASSTYPE_SIZE_UNIT): Likewise.
682         (CLASSTYPE_ALIGN(NODE): Likewise.
683         (CLASSTYPE_USER_ALIGN): Likewise.
684         (TYPE_JAVA_INTERFACE): Likewise.
685         (CLASSTYPE_PURE_VIRTUALS): Likewise.
686         (CLASSTYPE_NEEDS_VIRTUAL_REINIT): Whitespace and wrap.
687         (TYPE_HAS_DEFAULT_CONSTRUCTOR): Likewise.
688         (CLASSTYPE_HAS_MUTABLE): Likewise.
689         (CLASSTYPE_FRIEND_CLASSES): Likewise. Likewise.
690         (CLASSTYPE_DECLARED_CLASS): Whitespace and wrap.
691         (CLASSTYPE_READONLY_FIELDS_NEED_INIT): Likewise.
692         (CLASSTYPE_REF_FIELDS_NEED_INIT): Likewise.
693         (CLASSTYPE_INTERFACE_ONLY): Likewise.
694         (CLASSTYPE_INTERFACE_KNOWN): Likewise.
695         (CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
696         (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
697         (SET_CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
698         (SET_CLASSTYPE_INTERFACE_KNOWN): Likewise.
699         (CLASSTYPE_DEBUG_REQUESTED): Whitespace and wrap.
700         (BINFO_UNSHARED_MARKED): Whitespace.
701         (BINFO_MARKED): Whitespace and wrap.
702         (SET_BINFO_MARKED): Likewise.
703         (CLEAR_BINFO_MARKED): Likewise.
704         (BINFO_VTABLE_PATH_MARKED): Likewise.
705         (SET_BINFO_VTABLE_PATH_MARKED): Likewise.
706         (CLEAR_BINFO_VTABLE_PATH_MARKED): Likewise.
707         (BINFO_SUBVTT_INDEX): Remove parenthesis.
708         (BINFO_VPTR_INDEX): Likewise.
709         (BINFO_PRIMARY_BASE_OF): Likewise,
710         (CLASSTYPE_VFIELDS): Whitespace.
711         (VF_DERIVED_VALUE): Wrap long line.
712         (NAMESPACE_LEVEL): Whitespace.
713         (CAN_HAVE_FULL_LANG_DECL_P): Remove parenthesis.
714         (DEFARG_POINTER): Whitespace.
715         (DECL_NEEDED_P): Remove parenthesis.
716         (DECL_LANGUAGE): Whitespace.
717         (SET_DECL_LANGUAGE): Add parenthesis.
718         (DECL_CONSTRUCTOR_P): Whitespace and wrap.
719         (DECL_OVERLOADED_OPERATOR_P): Remove parenthesis.
720         (DECL_IN_AGGR_P): Whitespace.
721         (DECL_FRIEND_P): Likewise.
722         (DECL_BEFRIENDING_CLASSES): Likewise.
723         (DECL_STATIC_FUNCTION_P): Whitespace and wrap.
724         (DECL_NONCONVERTING_P): Whitespace.
725         (DECL_PURE_VIRTUAL_P): Likewise.
726         (DECL_NEEDS_FINAL_OVERRIDER_P): Likewise.
727         (DECL_PENDING_INLINE_INFO): Whitespace.
728         (DECL_SORTED_FIELDS): Likewise.
729         (DECL_DEFERRED_FN): Likewise.
730         (DECL_TEMPLATE_INFO): Likewise.
731         (CLASSTYPE_TEMPLATE_INFO): Whitespace and wrap.
732         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO); Likewise.
733         (SET_TYPE_TEMPLATE_INFO): Add parenthesis.
734         (TMPL_ARGS_LEVEL): Likewise.
735         (SET_TMPL_ARGS_LEVEL): Likewise.
736         (INNERMOST_TEMPLATE_PARMS): Whitespace.
737         (C_TYPEDEF_EXPLICITLY_SIGNED): Uppercase macro parameter.
738         (INTEGRAL_CODE_P(CODE): Add parenthesis.
739         (CP_INTEGRAL_TYPE_P): Remove parenthesis.
740         (TYPE_HAS_CONSTRUCTOR): Whitespace.
741         (TREE_HAS_CONSTRUCTOR): Likewise.
742         (TYPE_HAS_DESTRUCTOR): Likewise.
743         (TYPE_HAS_REAL_ASSIGN_REF): Likewise.
744         (TYPE_HAS_COMPLEX_ASSIGN_REF): Likewise.
745         (TYPE_HAS_ABSTRACT_ASSIGN_REF): Likewise.
746         (TYPE_HAS_COMPLEX_INIT_REF): Likewise.
747         (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Likewise.
748         (TYPE_PTRMEMFUNC_P): Likewise.
749         (TYPE_PTRMEMFUNC_FLAG): Likewise.
750         (TYPE_GET_PTRMEMFUNC_TYPE): Likewise.
751         (TYPE_SET_PTRMEMFUNC_TYPE): Likewise.
752         (TYPE_PTRMEM_CLASS_TYPE): Remove parenthesis.
753         (TYPE_PTRMEM_POINTED_TO_TYPE): Likewise.
754         (DECL_ACCESS): Whitespace.
755         (DECL_GLOBAL_CTOR_P): Remove parenthesis.
756         (DECL_GLOBAL_DTOR_P): Likewise.
757         (GLOBAL_INIT_PRIORITY): Likewise.
758         (DECL_TEMPLATE_PARMS): Likewise.
759         (DECL_TEMPLATE_RESULT): Likewise.
760         (DECL_TEMPLATE_INSTANTIATIONS): Likewise.
761         (DECL_TEMPLATE_SPECIALIZATIONS): Likewise.
762         (DECL_IMPLICIT_TYPEDEF_P): Remove parenthesis.
763         (SET_DECL_IMPLICIT_TYPEDEF_P): Likewise.
764         (PRIMARY_TEMPLATE_P): Add parenthesis.
765         (DECL_USE_TEMPLATE): Whitespace.
766         (CLASSTYPE_IMPLICIT_INSTANTIATION): Likewise.
767         (SET_CLASSTYPE_IMPLICIT_INSTANTIATION): Likewise.
768         (CLASSTYPE_EXPLICIT_INSTANTIATION): Likewise.
769         (SET_CLASSTYPE_EXPLICIT_INSTANTIATION): Likewise.
770         (CALL_DECLARATOR_PARMS): Remove parenthesis.
771         (CALL_DECLARATOR_QUALS): Likewise.
772         (CALL_DECLARATOR_EXCEPTION_SPEC): Likewise.
773         (TEMP_NAME_P): Wrap.
774         (VFIELD_NAME_P): Likewise.
775         (B_SET): Uppercase macro parameters and add parenthesis.
776         (B_CLR): Likewise.
777         (B_TST): Likewise.
778         (LOOKUP_NAMESPACES_ONLY): Uppercase macro parameters.
779         (LOOKUP_TYPES_ONLY): Uppercase macro parameters.
780         (LOOKUP_QUALIFIERS_ONLY): Uppercase macro parameters.
781         (same_or_base_type_p): Likewise.
782         (cp_deprecated): Likewise.
783
784 2002-01-05  Richard Henderson  <rth@redhat.com>
785
786         * semantics.c (expand_body): Revert last change.
787
788 2002-01-04  Jason Merrill  <jason@redhat.com>
789
790         PR c++/4122
791         * class.c (update_vtable_entry_for_fn): Set delta to zero for a
792         lost primary.
793
794         * class.c (build_vtbl_initializer): Check for a lost primary
795         before calculating the vtable entry to throw away.
796
797 2002-01-02  Jason Merrill  <jason@redhat.com>
798
799         * semantics.c (expand_body): Call outlining_inline_function when
800         emitting an inline function out of line.
801
802 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
803
804         PR c++/5116, c++/764 reversion
805         * call.c (build_new_op): Revert the instantiations. They are
806         incorrect.
807
808 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
809
810         PR c++/5089
811         * decl2.c (reparse_absdcl_as_casts): Don't warn about casts to void.
812
813 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
814
815         PR c++/3716
816         * pt.c (tsubst_aggr_type): Move pmf handling into tsubst.
817         (tsubst, case POINTER_TYPE): Handle pmfs here.
818         (tsubst, case OFFSET_TYPE): Check it is not an offset to
819         reference. If it is offset to FUNCTION_TYPE, create a METHOD_TYPE.
820
821 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
822
823         PR c++/35
824         * cp-tree.h (DECL_LANG_FLAG_0): Used for PARM_DECL too.
825         (DECL_TEMPLATE_PARM_P): A PARM_DECL might be one too.
826         * pt.c (process_template_parm): SET_DECL_TEMPLATE_PARM_P on the
827         PARM_DECL.
828         (tsubst_template_parms): Break up loop statements.
829         (tsubst_decl, case PARM_DECL): Copy DECL_TEMPLATE_PARM_P. Template
830         parm PARM_DECLs don't get promoted.
831
832 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
833
834         PR c++/5123
835         * typeck.c (build_component_ref): Cope with a TEMPLATE_ID_EXPR.
836         (build_x_function_call): Cope with a COMPONENT_REF containing a
837         TEMPLATE_ID_EXPR.
838
839 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
840
841         PR c++/5213
842         * pt.c (convert_template_argument): Be more careful determining
843         when RECORD_TYPE templates are or are not templates.
844
845 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
846
847         PR c++/775
848         * cp-tree.h (handle_class_head): Adjust prototype.
849         * decl2.c (handle_class_head): Add DEFN_P and NEW_TYPE_P
850         parameters. Use for all class heads.
851         * parse.y (named_class_head_sans_basetype, named_class_head,
852         named_complex_class_head_sans_basetype,
853         named_class_head_sans_basetype_defn,
854         unnamed_class_head): Remove.
855         (class_head, class_head_apparent_template): Recognize class heads
856         (class_head_decl, class_head_defn): New reductions. Process class
857         heads.
858         (structsp): Adjust class definition and class declaration
859         reductions.
860         (maybe_base_class_list): Give diagnostic on empty list.
861
862 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
863
864         PR c++/4379
865         * typeck.c (build_x_unary_op): Don't destroy the OFFSET_REF on a
866         single non-static member.
867         (unary_complex_lvalue): If it cannot be a pointer to member, don't
868         make it so. Check it is not pointer to reference.
869
870 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
871
872         PR c++/5132
873         * decl2.c (reparse_absdcl_as_casts): Don't digest_init if we
874         are processing a template decl.
875
876 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
877
878         PR c++/5116, c++/764
879         * call.c (build_new_op): Make sure template class operands are
880         instantiated. Simplify arglist construction.
881
882 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
883
884         * call.c (build_user_type_conversion_1): Use my_friendly_assert
885         rather than if ... abort.
886         * cvt.c (convert_to_reference): Likewise.
887         * semantics.c (setup_vtbl_ptr): Likewise.
888         * pt.c (lookup_template_class): Comment typo.
889
890 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
891
892         PR c++/5125
893         * pt.c (push_template_decl_real): Make sure DECL has
894         DECL_LANG_SPECIFIC.
895
896 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
897
898         PR c++/335
899         * init.c (resolve_offset_ref): Copy cv qualifiers of this pointer
900         for non-reference fields.
901         * typeck.c (require_complete_type): Use resolve_offset_ref).
902
903 2001-12-26  Nathan Sidwell  <nathan@codesourcery.com>
904
905         PR c++/196
906         * parse.y (bad_parm): Better diagnostic when given a SCOPE_REF.
907
908 2001-12-24  Nathan Sidwell  <nathan@codesourcery.com>
909
910         PR c++/160
911         * typeck.c (build_modify_expr): Remove old unreachable code & tidy
912         up. Don't stabilize_references when initializing a reference.
913
914 2001-12-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
915
916         * decl2.c (lang_f_options): Const-ify.
917
918 2001-12-20  Joseph S. Myers  <jsm28@cam.ac.uk>
919
920         * config-lang.in (diff_excludes): Remove.
921
922 2001-12-19  Nathan Sidwell  <nathan@codesourcery.com>
923
924         PR c++/90
925         * typeck.c (build_function_call_real): Use original function
926         expression for errors.
927
928 2001-12-18  Jason Merrill  <jason@redhat.com>
929
930         PR c++/3242
931         * class.c (add_method): Do compare 'this' quals when trying to match a
932         used function.  Don't defer to another used function.
933
934 2001-12-18  Nathan Sidwell  <nathan@codesourcery.com>
935
936         * pt.c (instantiate_clone): Remove, fold into ...
937         (instantiate_template): ... here. Simplify by removing mutual
938         recursion.
939         * typeck2.c (build_m_component_ref): Don't cv qualify the function
940         pointed to by a pointer to function.
941         * class.c (delete_duplicate_fields_1): Typo.
942
943 2001-12-18  Jason Merrill  <jason@redhat.com>
944
945         C++ ABI change: destroy value arguments in caller.
946         * semantics.c (genrtl_start_function, genrtl_finish_function): Don't
947         create an extra binding level for the parameters.
948         * decl.c (store_parm_decls): Don't do parameter cleanups.
949
950 2001-12-18  Nathan Sidwell  <nathan@codesourcery.com>
951
952         * call.c (build_new_method_call): Use '%#V'.
953         * error.c (cv_to_string): Use V parameter to determine padding.
954
955 2001-12-18  Joseph S. Myers  <jsm28@cam.ac.uk>
956
957         * call.c, decl2.c, init.c: Use "built-in" and "bit-field"
958         spellings in messages.
959
960 2001-12-17  Zack Weinberg  <zack@codesourcery.com>
961
962         * cp-tree.h: Delete #defines for cp_error, cp_warning,
963         cp_pedwarn, and cp_compiler_error.
964         * call.c, class.c, cp-tree.h, cvt.c, decl.c, decl2.c, error.c,
965         except.c, friend.c, init.c, lex.c, method.c, parse.y, pt.c,
966         rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
967         typeck2.c: Change calls to the above macros to use their
968         language-independent equivalents: error, warning, pedwarn, and
969         internal_error respectively.
970
971 2001-12-16  Neil Booth  <neil@daikokuya.demon.co.uk>
972
973         * decl2.c (finish_file): Remove back_end_hook.
974
975 2001-12-16  Joseph S. Myers  <jsm28@cam.ac.uk>
976
977         * ChangeLog.1, ChangeLog.2, ChangeLog, NEWS, call.c, class.c,
978         cp-tree.h, decl.c, decl2.c, except.c, operators.def, optimize.c,
979         pt.c, rtti.c, semantics.c, typeck.c: Fix spelling errors.
980
981 2001-12-15  Joseph S. Myers  <jsm28@cam.ac.uk>
982
983         * lang-options.h: Use American spelling in messages.
984
985 2001-12-13  Jason Merrill  <jason@redhat.com>
986
987         * Make-lang.in (parse.h): Separate rule, just depend on parse.c.
988
989         Use cleanups to run base and member destructors.
990         * init.c (push_base_cleanups): New function, split out from...
991         (build_delete): ...here.  Lose !TYPE_HAS_DESTRUCTOR code.
992         * decl.c (finish_destructor_body): Move vbase destruction code to
993         push_base_cleanups.
994         (begin_function_body, finish_function_body): New fns.
995         (finish_function): Move [cd]tor handling and call_poplevel to
996         finish_function_body.
997         (pushdecl): Skip the new level.
998         * semantics.c (genrtl_try_block): Don't call end_protect_partials.
999         (setup_vtbl_ptr): Call push_base_cleanups.
1000         * method.c (synthesize_method): Call {begin,end}_function_body.
1001         * pt.c (tsubst_expr): Handle COMPOUND_STMT_BODY_BLOCK.
1002         * cp-tree.h: Declare new fns.
1003         * parse.y (function_body, .begin_function_body): New nonterminals.
1004         (fndef, pending_inline, function_try_block): Use function_body.
1005         (ctor_initializer_opt, function_try_block): No longer has a value.
1006         (base_init): Remove .set_base_init token.
1007         (.set_base_init, compstmt_or_error): Remove.
1008         * Make-lang.in (parse.c): Expect two fewer s/r conflicts.
1009
1010         * optimize.c (maybe_clone_body): Fix parameter updating.
1011
1012 2001-12-12  Jason Merrill  <jason@redhat.com>
1013
1014         * decl.c (store_parm_decls): Remove parms_have_cleanups cruft.
1015         * semantics.c (genrtl_start_function): Don't pass
1016         parms_have_cleanups or push an extra binding level.
1017         (genrtl_finish_function): Lose cleanup_label cruft.
1018
1019         * cp-tree.h (struct cp_language_function): Remove x_ctor_label.
1020         (ctor_label): Remove.
1021         * semantics.c (finish_return_stmt): Lose ctor_label support.
1022         * decl.c (finish_constructor_body, mark_lang_function): Likewise.
1023         * typeck.c (check_return_expr): Check DECL_DESTRUCTOR_P, not
1024         dtor_label.
1025
1026         * call.c (build_new_method_call): Let resolves_to_fixed_type_p
1027         check for [cd]tors.
1028         * class.c (fixed_type_or_null, case INDIRECT_REF): Fix.
1029
1030         * decl.c (finish_function): Check VMS_TARGET, not VMS.
1031
1032         * decl.c (start_cleanup_fn): Remove redundant pushlevel.
1033         (end_cleanup_fn): And poplevel.
1034
1035         * semantics.c (setup_vtbl_ptr): Always build a CTOR_INITIALIZER
1036         if we're in a template.
1037
1038 2001-12-12  Jakub Jelinek  <jakub@redhat.com>
1039
1040         * cp-tree.h (DESTRUCTOR_DECL_PREFIX, DESTRUCTOR_NAME_P,
1041         ANON_PARMNAME_FORMAT, ANON_PARMNAME_P, DESTRUCTOR_NAME_FORMAT,
1042         THIS_NAME_P): Delete.
1043         * spew.c (read_process_identifier): Remove DESTRUCTOR_NAME_P,
1044         THIS_NAME_P and ANON_PARMNAME_P tests from warning about clash
1045         with internal naming scheme.
1046         * error.c (dump_decl): Remove DESTRUCTOR_NAME_P use.
1047
1048 2001-12-12  Nathan Sidwell  <nathan@codesourcery.com>
1049
1050         * decl.c (grokdeclarator): Deprecated implicit typename use.
1051
1052 2001-12-11  Nathan Sidwell  <nathan@codesourcery.com>
1053
1054         PR g++/51
1055         * parse.y (frob_specs): Indicate it is a language linkage which
1056         contained the extern.
1057         * decl.c (grokdeclarator): Allow extern language linkage with
1058         other specifiers.
1059
1060 2001-12-10  Nathan Sidwell  <nathan@codesourcery.com>
1061
1062         PR g++/72
1063         * decl.c (add_binding): Don't reject duplicate typedefs involving
1064         template parameters.
1065
1066 2001-12-10  Neil Booth  <neil@daikokuya.demon.co.uk>
1067
1068         * parse.y, semantics.c: Similarly.
1069
1070 2001-12-09  Nathan Sidwell  <nathan@codesourcery.com>
1071
1072         PR g++/87
1073         * cp-tree.h (DECL_COPY_CONSTRUCTOR_P): Use copy_fn_p.
1074         (copy_args_p): Rename to ...
1075         (copy_fn_p): ... here.
1076         (grok_special_member_properties): New function.
1077         (grok_op_properties): Lose VIRTUALP parameter.
1078         (copy_assignment_arg_p): Remove.
1079         * call.c (build_over_call): Use copy_fn_p.
1080         * decl.c (grokfndecl): Reformat. Adjust call to
1081         grok_op_properties.
1082         (copy_args_p): Rename to ...
1083         (copy_fn_p): ... here. Reject template functions. Check for pass
1084         by value.
1085         (grok_special_member_properties): Remember special functions.
1086         (grok_ctor_properties): Don't remember them here, just check.
1087         (grok_op_properties): Likewise.
1088         (start_method): Call grok_special_member_properties.
1089         * decl2.c (grokfield): Likewise.
1090         (copy_assignment_arg_p): Remove.
1091         (grok_function_init): Don't remember abstract assignment here.
1092         * pt.c (instantiate_class_template): Call
1093         grok_special_member_properties.
1094         (tsubst_decl): Adjust grok_op_properties call.
1095
1096 2001-12-08  Aldy Hernandez  <aldyh@redhat.com>
1097
1098         * lex.c (rid_to_yy): Add RID_CHOOSE_EXPR and
1099         RID_TYPES_COMPATIBLE_P.
1100
1101 2001-12-08  John David Anglin  <dave@hiauly1.hia.nrc.ca>
1102
1103         * semantics.c (simplify_aggr_init_exprs_r): Add DIRECT_BIND flag in
1104         call to build_aggr_init.
1105         * cp-tree.h (DIRECT_BIND): Document new use of DIRECT_BIND.
1106
1107 2001-12-08  Neil Booth  <neil@daikokuya.demon.co.uk>
1108
1109         * parse.y: Replace uses of the string non-terminal with STRING.
1110         Don't perform string concatentaion here.
1111         (string): Remove non-terminal.
1112         * semantics.c (finish_asm_stmt): Don't concatenate strings here.
1113
1114 2001-12-05  Jason Merrill  <jason@redhat.com>
1115
1116         * cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Define.
1117         (LANG_HOOKS_TREE_INLINING_END_INLINING): Define.
1118         * tree.c (cp_start_inlining, cp_end_inlining): New fns.
1119         * pt.c (push_tinst_level): No longer static.
1120         * cp-tree.h: Declare them.
1121
1122         * init.c (resolve_offset_ref): Don't check access for the base
1123         conversion to access a FIELD_DECL.
1124
1125         * cp-tree.h (TYPE_REFFN_P): New macro.
1126         * decl.c (bad_specifiers): Check it, too.
1127
1128         * rtti.c (create_pseudo_type_info): Set CLASSTYPE_INTERFACE_ONLY
1129         on the __*_type_info type if we haven't seen a definition.
1130
1131 2001-12-05  Neil Booth  <neil@daikokuya.demon.co.uk>
1132
1133         * decl.c: Include c-common.h.
1134         (shadow_warning): Move to c-common.c.
1135
1136 Wed Dec  5 17:00:49 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1137
1138         * decl.c (duplicate_decls): Don't copy DECL_NO_CHECK_MEMORY_USAGE.
1139
1140 2001-12-04  Nathan Sidwell  <nathan@codesourcery.com>
1141
1142         * pt.c (end_template_parm_list): Clear TREE_CHAIN of each parm.
1143
1144 2001-12-04  Nathan Sidwell  <nathan@codesourcery.com>
1145
1146         PR g++/164
1147         * init.c (sort_base_init): Allow binfos to be directly specified.
1148         * method.c (do_build_copy_constructor): Explicitly convert to the
1149         base instance.
1150         (do_build_assign_ref): Likewise.
1151
1152 2001-12-03  Hans-Peter Nilsson  <hp@bitrange.com>
1153
1154         * decl.c (xref_basetypes): Don't use C99 construct in tag_code
1155         declaration and initialization.
1156
1157 2001-12-03  Neil Booth  <neil@daikokuya.demon.co.uk>
1158
1159         * typeck2.c: Remove leading capital from diagnostic messages, as
1160         per GNU coding standards.
1161
1162 2001-12-03  Mumit Khan  <khan@nanotech.wisc.edu>
1163
1164         PR c++/3394
1165         * decl.c (xref_basetypes): Handle attributes between
1166         'class' and name.
1167
1168 2001-12-03  Nathan Sidwell  <nathan@codesourcery.com>
1169
1170         PR g++/3381
1171         * parse.y (named_complex_class_head_sans_basetype): Add new
1172         reduction.
1173         * Make-lang.in (parse.c): Adjust expected conflict count.
1174
1175 2001-12-03  Jason Merrill  <jason@redhat.com>
1176
1177         * class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the
1178         immediate binfos for our virtual bases.
1179
1180 2001-12-02  Neil Booth  <neil@daikokuya.demon.co.uk>
1181
1182         * call.c (build_java_interface_fn_ref): Similarly.
1183         * except.c (is_admissible_throw_operand): Similarly.
1184         * init.c (build_java_class_ref): Similarly.
1185         * xref.c (open_xref_file): Similarly.
1186
1187 2001-12-01  Neil Booth  <neil@daikokuya.demon.co.uk>
1188
1189         * class.c (finish_struct): Remove trailing periods from messages.
1190         * decl.c (check_tag_decl): Similarly.
1191         * lex.c (cxx_set_yydebug): Similarly.
1192         * typeck2.c (friendly_abort): Similarly.
1193
1194 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
1195
1196         PR c++/3048
1197         * cp-tree.h (ovl_member): Remove.
1198         * decl2.c (merge_functions): Handle extern "C" functions
1199         specially.
1200         * tree.c (ovl_member): Remove.
1201
1202 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
1203
1204         PR c++/4842
1205         * class.c (get_basefndecls): Take an IDENTIFIER_NODE, not a
1206         FUNCTION_DECL, as input.
1207         (mark_overriders): Remove.
1208         (warn_hidden): Rework for the new ABI.
1209
1210 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
1211
1212         PR c++/3471
1213         * call.c (convert_like_real): Do not build additional temporaries
1214         for rvalues of class type.
1215
1216 2001-11-28  Nathan Sidwell  <nathan@codesourcery.com>
1217
1218         * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Use lookup base.
1219         (ACCESSIBLY_UNIQUELY_DERIVED_FROM_P): Likewise.
1220         (PUBLICLY_UNIQUELY_DERIVED_FROM_P: Likewise.
1221         (DERIVED_FROM_P): Likewise.
1222         (enum base_access): Renumber, add ba_quiet bit mask.
1223         (get_binfo): Remove.
1224         (get_base_distance): Remove.
1225         (binfo_value): Remove.
1226         (ACCESSIBLY_DERIVED_FROM_P): Remove.
1227         * call.c (standard_conversion): Use lookup_base.
1228         * class.c (strictly_overrides): Likewise.
1229         (layout_virtual_bases): Likewise.
1230         (warn_about_ambiguous_direct_bases): Likewise.
1231         (is_base_of_enclosing_class): Likewise.
1232         (add_vcall_offset_vtbl_entries_1): Likewise.
1233         * cvt.c (build_up_reference): Adjust comment.
1234         * init.c (build_member_call): Reformat.
1235         * search.c (get_binfo): Remove.
1236         (get_base_distance_recursive): Remove.
1237         (get_base_distance): Remove.
1238         (lookup_base_r): Tweak.
1239         (lookup_base): Add ba_quiet control. Complete the types here.
1240         (covariant_return_p): Use lookup_base.
1241         * tree.c (binfo_value): Remove.
1242         (maybe_dummy_object): Use lookup_base.
1243         * typeck.c (build_static_cast): Use lookup_base.
1244         (get_delta_difference): Likewise.
1245         * typeck2.c (binfo_or_else): Use lookup_base.
1246         (build_scoped_ref): Add back error_mark_check.
1247         (build_m_component_ref): Use lookup_base.
1248
1249 2001-11-29  Joseph S. Myers  <jsm28@cam.ac.uk>
1250
1251         * Make-lang.in (c++.generated-manpages): New dummy target.
1252
1253 Tue Nov 27 09:03:47 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1254
1255         * Make-lang.in (cp-lang.o): Depends on c-common.h.
1256         * cp-lang.c (c-common.h): Include.
1257         (LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_SAFE_FROM_P): New hooks.
1258         * decl.c (cxx_init_decl_processing): Don't set lang_safe_from_p.
1259         * expr.c (init_cplus_expand): Don't set lang_expand_constant.
1260
1261 2001-11-26  Neil Booth  <neil@daikokuya.demon.co.uk>
1262
1263         * decl2.c (c_language): Move to c-common.c.
1264         * lex.c (cxx_post_options, cxx_init_options): Use c-common.c
1265         functions.
1266         (cxx_init): Update.
1267
1268 2001-11-26  Jason Merrill  <jason@redhat.com>
1269
1270         * call.c (joust): Remove COND_EXPR hack.
1271
1272 2001-11-25  Aldy Hernandez  <aldyh@redhat.com>
1273
1274         * search.c (lookup_base_r): Declare bk in variable declaration
1275         space.
1276
1277 2001-11-25  Nathan Sidwell  <nathan@codesourcery.com>
1278
1279         PR g++/3145
1280         * class.c (build_vbase_pointer): Remove.
1281         (build_vbase_path): Remove.
1282         (build_base_path): New function.
1283         * cp-tree.h (base_access, base_kind): New enumerations.
1284         (build_base_path): Declare.
1285         (convert_pointer_to_real): Remove.
1286         (convert_pointer_to): Remove.
1287         (lookup_base): Declare.
1288         (convert_pointer_to_vbase): Remove.
1289         * call.c (build_scoped_method_call): Use lookup_base &
1290         build_base_path instead of convert_pointer_to_real,
1291         get_base_distance & get_binfo.
1292         (build_over_call): Likewise.
1293         * cvt.c (cp_convert_to_pointer): Likewise.
1294         (convert_to_pointer_force): Likewise.
1295         (build_up_reference): Likewise.
1296         (convert_pointer_to_real): Remove.
1297         (convert_pointer_to): Remove.
1298         * init.c (dfs_initialize_vtbl_ptrs): Use build_base_path
1299         instead of convert_pointer_to_vbase & build_vbase_path.
1300         (emit_base_init): Use build_base_path instead of
1301         convert_pointer_to_real.
1302         (expand_virtual_init): Lose unrequired conversions.
1303         (resolve_offset_ref): Use lookup_base and build_base_path
1304         instead of convert_pointer_to.
1305         * rtti.c (build_dynamic_cast_1): Use lookup_base &
1306         build_base_path instead of get_base_distance & build_vbase_path.
1307         * search.c (get_vbase_1): Remove.
1308         (get_vbase): Remove.
1309         (convert_pointer_to_vbase): Remove.
1310         (lookup_base_r): New function.
1311         (lookup_base): New function.
1312         * typeck.c (require_complete_type): Use lookup_base &
1313         build_base_path instead of convert_pointer_to.
1314         (build_component_ref): Likewise.
1315         (build_x_function_call): Likewise.
1316         (get_member_function_from_ptrfunc): Likewise.
1317         (build_component_addr): Likewise.
1318         * typeck2.c (build_scoped_ref): Likewise.
1319
1320 2001-11-22  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
1321
1322         * cp-tree.h (CP_TYPE_QUALS): Removed.
1323         * decl.c (cxx_init_decl_processing): Don't set lang_dump_tree.
1324         * cp-lang.c: Set LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN and
1325         LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN.
1326         * dump.c (cp_dump_tree): Use void* dump_info argument to match
1327         lang-hooks prototype.
1328         * call.c, cp-tree.h, cvt.c, decl.c, init.c, mangle.c, method.c, pt.c,
1329         rtti.c, semantics.c, tree.c, typeck.c, typeck2.c: All references to
1330         CP_TYPE_QUALS changed to cp_type_quals.
1331         * Make-lang.in: References to c-dump.h changed to tree-dump.h.
1332         (CXX_C_OBJS): Remove c-dump.o.
1333
1334 2001-11-21  Mark Mitchell  <mark@codesourcery.com>
1335
1336         PR c++/3637
1337         * pt.c (lookup_template_class): Ensure that all specializations
1338         are registered on the list corresponding to the most general
1339         template.
1340
1341 2001-11-20  Mark Mitchell  <mark@codesourcery.com>
1342
1343         * call.c (non_reference): Add documentation.
1344         (convert_class_to_reference): Do not strip reference types
1345         from conversion operators.
1346         (maybe_handle_ref_bind): Simplify.
1347         (compare_ics): Correct handling of references.
1348
1349 2001-11-19  John Wilkinson <johnw@research.att.com>
1350
1351         * dump.c (dump_op): New function.
1352         (cp_dump_tree): Dump CLASSTYPE_TEMPLATE_SPECIALIZATION.  Use
1353         dump_op.  Dump DECL_MUTABLE, access and staticness for VAR_DECLs.
1354         DECL_PURE_VIRTUAL_P, DECL_VIRTUAL_P,
1355
1356 2001-11-19  Mark Mitchell  <mark@codesourcery.com>
1357
1358         PR4629
1359         * semantics.c (finish_sizeof): Make sure that expression created
1360         while processing a template do not have a type.
1361         (finish_alignof): Likewise.
1362         * typeck.c (c_sizeof): Likewise.
1363         (expr_sizeof): Likewise.
1364
1365 2001-11-18  Neil Booth  <neil@daikokuya.demon.co.uk>
1366
1367         * lex.c (cxx_finish): Call c_common_finish.
1368         (finish_parse): Remove.
1369
1370 2001-11-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1371
1372         * decl.c (create_array_type_for_decl): Check if NAME is NULL_TREE
1373         when displaying error message about missing array bounds.
1374
1375 2001-11-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1376
1377         * mangle.c (write_expression): Handle CAST_EXPR, STATIC_CAST_EXPR,
1378         CONST_CAST_EXPR.
1379         * operators.def: Add CAST_EXPR, STATIC_CAST_EXPR, CONST_CAST_EXPR.
1380
1381 2001-11-16  Neil Booth  <neil@daikokuya.demon.co.uk>
1382
1383         * cp-tree.h (print_class_statistics): Restore.
1384
1385 2001-11-15  Jason Merrill  <jason@redhat.com>
1386
1387         * method.c (use_thunk): Don't emit debugging information for thunks.
1388
1389         * parse.y: Add ... IDENTIFIER SCOPE and ... PTYPENAME SCOPE expansions.
1390         * decl.c (make_typename_type): Handle getting a class template.
1391         * search.c (lookup_field_r): A class template is good enough for
1392         want_type.
1393
1394         * call.c (convert_like_real): Only use cp_convert for the bad part.
1395         (standard_conversion): Also allow bad int->enum.
1396         * typeck.c (ptr_reasonably_similar): Also allow functions to
1397         interconvert.  Pointers to same-size integers are reasonably
1398         similar.
1399
1400         * cvt.c (convert_to_void): If we build a new COND_EXPR, always
1401         give it void type.
1402
1403 2001-11-15  Nathan Sidwell  <nathan@codesourcery.com>
1404
1405         PR g++/3154
1406         * init.c (sort_base_init): Remove unreachable code.
1407         (expand_member_init): Adjust comment to reflect reality. Simplify
1408         and remove unreachable code.
1409
1410 2001-11-15  Neil Booth  <neil@daikokuya.demon.co.uk>
1411
1412         * cp-tree.h (init_reswords, cxx_init_decl_processing): New.
1413         (cxx_init): Update prototype.
1414         * decl.c (init_decl_processing): Rename.  Move null node init
1415         to its creation time.
1416         * lex.c (cxx_init_options): Update.
1417         (cxx_init): Combine with old init_parse; also call
1418         cxx_init_decl_processing.
1419
1420 2001-11-14  Richard Sandiford  <rsandifo@redhat.com>
1421
1422         * decl.c (check_initializer): Try to complete the type of an
1423         array element before checking whether it's complete.  Don't
1424         complain about arrays with complete element types but an
1425         unknown size.
1426         (cp_finish_decl): Build the hierarchical constructor before
1427         calling maybe_deduce_size_from_array_init.
1428
1429 2001-11-14  Joseph S. Myers  <jsm28@cam.ac.uk>
1430
1431         * Make-lang.in: Change all uses of $(manext) to $(man1ext).
1432
1433 2001-11-13  Nathan Sidwell  <nathan@codesourcery.com>
1434
1435         PR g++/4206
1436         * parse.y (already_scoped_stmt): Remove.
1437         (simple_stmt, WHILE & FOR): Use implicitly_scoped_stmt.
1438
1439 2001-11-12  H.J. Lu <hjl@gnu.org>
1440
1441         * cvt.c (ocp_convert): Don't warn the address of a weak
1442         function is always `true'.
1443
1444 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
1445
1446         * cp-lang.c (LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
1447         LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
1448         LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): Override.
1449         * cp-tree.h (print_class_statistics): Remove.
1450         (cxx_print_statistics, cxx_print_xnode, cxx_print_decl, cxx_print_type,
1451         cxx_print_identifier, cxx_set_yydebug): New.
1452         * lex.c (set_yydebug): Rename c_set_yydebug.
1453         * ptree.c (print_lang_decl, print_lang_type, print_lang_identifier,
1454         lang_print_xnode): Rename.
1455         * tree.c (print_lang_statistics): Rename.
1456
1457 2001-11-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1458
1459         * class.c (dump_array): Fix format specifier warning.
1460
1461 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
1462
1463         * cp-lang.c (LANG_HOOKS_NAME): Override.
1464         (struct lang_hooks): Constify.
1465         * lex.c (cxx_init_options): Update.
1466         (lang_identify): Remove.
1467         * parse.y (language_string): Remove.
1468
1469 2001-11-08  Andreas Franck  <afranck@gmx.de>
1470
1471         * Make-lang.in (CXX_INSTALL_NAME, GXX_CROSS_NAME,
1472         DEMANGLER_CROSS_NAME): Handle program_transform_name the way
1473         suggested by autoconf.
1474         (GXX_TARGET_INSTALL_NAME, CXX_TARGET_INSTALL_NAME): Define.
1475         (c++.install-common): Use the transformed target alias names.
1476
1477 2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
1478
1479         * Make-lang.in: Update.
1480         * cp-lang.c: Include langhooks-def.h.
1481
1482 2001-11-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1483
1484         * pt.c (tsubst_copy): Call tsubst for TYPEOF_EXPR.
1485
1486 2001-11-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1487
1488         * lex.c (copy_lang_type): Add static prototype.
1489
1490 2001-11-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1491
1492         * pt.c (unify): Handle SCOPE_REF.
1493
1494 2001-11-01  Jakub Jelinek  <jakub@redhat.com>
1495
1496         * tree.c (cp_copy_res_decl_for_inlining): Adjust
1497         DECL_ABSTRACT_ORIGIN for the return variable.
1498
1499 2001-10-31  Zack Weinberg  <zack@codesourcery.com>
1500
1501         *  Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
1502
1503 2001-10-28  Joseph S. Myers  <jsm28@cam.ac.uk>
1504
1505         * ChangeLog.1, ChangeLog.2, ChangeLog, class.c, decl2.c, search.c,
1506         semantics.c, spew.c: Fix spelling errors.
1507
1508 2001-10-27  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1509
1510         * decl2.c (validate_nonmember_using_decl): Handle NAMESPACE_DECL.
1511
1512 2001-10-25  Zack Weinberg  <zack@codesourcery.com>
1513
1514         * cp-lang.c: Redefine LANG_HOOKS_CLEAR_BINDING_STACK to
1515         pop_everything.
1516
1517 Tue Oct 23 14:00:20 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1518
1519         * cp-lang.c (cxx_get_alias_set): New function.
1520         Point LANG_HOOKS_GET_ALIAS_SET to it.
1521
1522 2001-10-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1523
1524         * cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
1525         * cp-tree.h (make_unbound_class_template): Prototype new function.
1526         * decl.c (make_unbound_class_template): New function.
1527         * decl2.c (arg_assoc_template_arg): Handle UNBOUND_CLASS_TEMPLATE.
1528         * error.c (dump_type): Likewise.
1529         * mangle.c (write_type): Likewise.
1530         * parse.y (template_parm): Likewise.
1531         (template_argument): Use make_unbound_class_template.
1532         * pt.c (convert_template_argument): Handle UNBOUND_CLASS_TEMPLATE.
1533         (tsubst): Likewise.
1534         (tsubst_copy): Likewise.
1535         (unify): Likewise.
1536         * tree.c (walk_tree): Likewise.
1537         * typeck.c (comptypes): Likewise.
1538
1539 2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1540
1541         * xref.c (GNU_xref_member): Use safe-ctype macros and/or fold
1542         extra calls into fewer ones.
1543
1544 2001-10-18  Alexandre Oliva  <aoliva@redhat.com>
1545
1546         * decl.c (duplicate_decls): Propagate DECL_UNINLINABLE.
1547         Warn when merging inline with attribute noinline.
1548         (start_decl, start_function): Warn if inline and attribute
1549         noinline appear in the same declaration.
1550
1551 2001-10-16  H.J. Lu <hjl@gnu.org>
1552
1553         * cp-tree.h (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Defined
1554         for tree checking disabled.
1555
1556 2001-10-16  Hans-Peter Nilsson  <hp@axis.com>
1557
1558         * cp-tree.h (VFIELD_NAME_FORMAT) [NO_DOLLAR_IN_LABEL &&
1559         NO_DOT_IN_LABEL]: Adjust to match VFIELD_NAME.
1560
1561 2001-10-15  Richard Sandiford  <rsandifo@redhat.com>
1562
1563         * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Define.
1564         (unify): Only handle MINUS_EXPR specially if the above flag is set
1565         and the subtracted constant is 1.  Clear the flag on recursive calls.
1566         Set it when unifying the maximum value in an INTEGER_TYPE's range.
1567
1568 2001-10-15  Richard Sandiford  <rsandifo@redhat.com>
1569
1570         * decl.c (bad_specifiers): Don't allow exception specifications
1571         on any typedefs.
1572
1573 2001-10-14  Neil Booth  <neil@daikokuya.demon.co.uk>
1574
1575         * cp/lex.c (init_cp_pragma): Similarly.
1576
1577 2001-10-13  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1578
1579         * pt.c (lookup_template_class): Build complete template arguments
1580         for BOUND_TEMPLATE_TEMPLATE_PARM.
1581
1582 2001-10-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1583
1584         * cp-tree.h (TYPE_BINFO): Update comment.
1585         (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): New macro.
1586         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Use template_info.
1587         (TYPENAME_TYPE_FULLNAME): Use TYPE_FIELDS.
1588         (copy_type): Prototype new function.
1589         * lex.c (copy_lang_decl): Gather tree node statistics.
1590         (copy_lang_type): New function.
1591         (copy_type): Likewise.
1592         (cp_make_lang_type): Create lang_type for
1593         BOUND_TEMPLATE_TEMPLATE_PARM.  Set TYPE_BINFO for TYPENAME_TYPE
1594         and BOUND_TEMPLATE_TEMPLATE_PARM.
1595         * pt.c (tsubst): Use copy_type instead of copy_node.
1596         * search.c (lookup_field_1): Ignore TYPENAME_TYPE.
1597
1598 2001-10-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1599
1600         * pt.c (determine_specialization): Ignore functions without
1601         DECL_TEMPLATE_INFO.
1602
1603 2001-10-12  Nathan Sidwell  <nathan@codesourcery.com>
1604
1605         PR g++/4476
1606         * typeck2.c (abstract_virtuals_error): Ignore incomplete classes.
1607
1608 2001-10-11  Jason Merrill  <jason_merrill@redhat.com>
1609
1610         * typeck2.c (store_init_value): Don't re-digest a bracketed
1611         initializer.
1612
1613         * class.c (finish_struct_anon): Use TYPE_ANONYMOUS_P instead of
1614         ANON_AGGR_TYPE_P.
1615
1616 2001-10-11  Richard Henderson  <rth@redhat.com>
1617
1618         * class.c (build_vtable_entry_ref): Create a VTABLE_REF instead
1619         of an asm statement.
1620         (build_vtbl_ref_1): Split out from build_vtbl_ref.
1621         (build_vfn_ref): Use it to handle vtable descriptors before
1622         calling build_vtable_entry_ref.
1623         * decl2.c (output_vtable_inherit): Use assemble_vtable_inherit.
1624
1625 2001-10-10  Richard Henderson  <rth@redhat.com>
1626
1627         * parse.y (asm_operand): Allow named operands.
1628         * semantics.c (finish_asm_stmt): Tweek for changed location
1629         of the operand constrant.
1630
1631 2001-10-09  Jason Merrill  <jason_merrill@redhat.com>
1632
1633         * call.c (standard_conversion): Add bad conversion between
1634         integers and pointers.
1635         (convert_like_real): Don't use convert_for_initialization for bad
1636         conversions; complain here and use cp_convert.
1637         (build_over_call): Don't handle bad conversions specially.
1638         (perform_implicit_conversion): Allow bad conversions.
1639         (can_convert_arg_bad): New fn.
1640         * cp-tree.h: Declare it.
1641         * typeck.c (convert_for_assignment): Use it.
1642         (ptr_reasonably_similar): Any target type is similar to void.
1643
1644 2001-10-08  Alexandre Oliva  <aoliva@redhat.com>
1645
1646         * Make-lang.in (CXX_OBJS): Added cp-lang.o.
1647         (cp/cp-lang.o): New rule.
1648         * cp-tree.h: Declare hooks.
1649         * tree.c: Make hooks non-static.
1650         (init_tree): Don't initialize hooks here.
1651         * lex.c: Likewise.  Move definition of lang_hooks to...
1652         * cp-lang.c: ... new file.
1653
1654 2001-10-08  Richard Henderson  <rth@redhat.com>
1655
1656         * cp-tree.h (struct lang_decl_flags): Remove declared_inline.
1657         (DECL_DECLARED_INLINE_P): Use the bit in struct c_lang_decl.
1658
1659 2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1660
1661         * class.c (build_vtable_entry_ref): Const-ify.
1662         * decl.c (predefined_identifier,
1663         initialize_predefined_identifiers): Likewise.
1664         * init.c (build_new_1): Likewise.
1665         * lex.c (cplus_tree_code_type, cplus_tree_code_length, resword):
1666         Likewise.
1667
1668 2001-10-05  Alexandre Oliva  <aoliva@redhat.com>
1669
1670         * optimize.c (struct inline_data): Moved to ../tree-inline.c.
1671         (INSNS_PER_STMT): Likewise.
1672         (remap_decl, remap_block, copy_scopy_stmt, copy_body_r): Likewise.
1673         (copy_body, initialize_inlined_parameters): Likewise.
1674         (declare_return_variable, inlinable_function_p): Likewise.
1675         (expand_call_inline, expand_calls_inline): Likewise.
1676         (optimize_inline_calls, clone_body): Likewise.
1677         * tree.c (walk_tree): Moved to ../tree-inline.c.
1678         (walk_tree_without_duplicates): Likewise.
1679         (copy_tree_r, remap_save_expr): Likewise.
1680
1681 2001-10-04  Alexandre Oliva  <aoliva@redhat.com>
1682
1683         * Make-lang.in (cp/decl.o, cp/tree.o): Depend on tree-inline.h.
1684         (cp/pt.o, cp/semantics.o, cp/optimize.o): Likewise.
1685         * cp-tree.h (lang_decl): Moved inlined_fns to tree_decl.
1686         (TREE_READONLY_DECL_P, DECL_INLINED_FNS): Moved to ../tree.h.
1687         (flag_inline_trees): Moved declaration to ../tree-inline.h.
1688         (walk_tree): Moved declaration to ../tree-inline.h.
1689         (walk_tree_without_duplicates, copy_tree_r): Likewise.
1690         (remap_save_expr): Likewise.
1691         * decl.c: Include tree-inline.h.
1692         (lang_mark_tree): Don't mark inlined_fns.
1693         * decl2.c (flag_inline_trees): Moved defn to ../tree-inline.c.
1694         * optimize.c: Include tree-inline.h.
1695         (optimize_inline_calls): Move declaration to ../tree.h, as
1696         non-static.
1697         (remap_decl): Use language-independent constructs and hooks.
1698         (remap_block, copy_body_r, declare_return_variable): Likewise.
1699         (inlinable_function_p): Likewise.  Don't test for
1700         DECL_LANG_SPECIFIC before DECL_INLINED_FNS as inlined_fns is
1701         no longer language-specific.
1702         (optimize_inline_calls): Likewise.  Make it non-static.  Moved
1703         call of dump_function to...
1704         (optimize_function): Here...
1705         (clone_body): New function, extracted from...
1706         (maybe_clone_body): ... here.  Build decl_map locally and pass
1707         it on to clone_body.
1708         * pt.c, semantics.c: Include tree-inline.h.
1709         * tree.c: Likewise.
1710         (cp_walk_subtrees): New language-specific hook for tree inlining.
1711         (cp_cannot_inline_tree_fn, cp_add_pending_fn_decls,
1712         cp_is_overload_p, cp_auto_var_in_fn_p,
1713         cp_copy_res_decl_for_inlining): Likewise.
1714         (walk_tree): Move language-specific constructs into...
1715         (cp_walk_subtrees): this new function.
1716         (copy_tree_r): Use language-independent constructs and hooks.
1717         (init_tree): Initialize tree inlining hooks.
1718         (remap_save_expr): Adjust prototype so that the declaration
1719         does not require the definition of splay_tree.
1720
1721 2001-10-03  John David Anglin  <dave@hiauly1.hia.nrc.ca>
1722
1723         * rtti.c (get_tinfo_decl): Call typeinfo_in_lib_p with the type used
1724         to build the declaration instead of the declaration itself.
1725
1726 2001-10-02  Jason Merrill  <jason_merrill@redhat.com>
1727
1728         * decl2.c (cxx_decode_option): Add 'else'.
1729
1730         * spew.c (end_input): No longer static.
1731         * cp-tree.h: Declare it.
1732         * parse.y (datadef): Add "error END_OF_SAVED_INPUT" expansion.
1733
1734 2001-10-02  Joseph S. Myers  <jsm28@cam.ac.uk>
1735
1736         * call.c (build_over_call), typeck.c (build_function_call_real):
1737         Pass type attributes to check_function_format rather than name or
1738         assembler name.  Don't require there to be a name or assembler
1739         name to check formats.
1740
1741 2001-10-02  Joseph S. Myers  <jsm28@cam.ac.uk>
1742
1743         * decl.c (init_decl_processing): Don't call
1744         init_function_format_info.  Initialize lang_attribute_table
1745         earlier.
1746         (builtin_function): Call decl_attributes.
1747         (insert_default_attributes): New.
1748
1749 2001-10-01  Jason Merrill  <jason_merrill@redhat.com>
1750
1751         * decl.c (grokdeclarator): Copy array typedef handling from C
1752         frontend.
1753
1754         * decl.c (grokdeclarator): Copy too-large array handling from C
1755         frontend.
1756
1757 2001-09-29  Alexandre Oliva  <aoliva@redhat.com>
1758
1759         * config-lang.in (target_libs): Added target-gperf, so that we
1760         don't try to build it if C++ is disabled.
1761
1762 2001-09-23  Zack Weinberg  <zack@codesourcery.com>
1763
1764         * Make-lang.in (CXX_OBJS): Take out cp/errfn.o.
1765         (cp/errfn.o): Delete rule.
1766         (cp/error.o): Depend on flags.h.
1767         * errfn.c: Delete file.
1768         * cp-tree.h: Declare warn_deprecated.  Remove definitions of
1769         TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS,
1770         and TFF_TEMPLATE_DEFAULT_ARGUMENTS. #define cp_error, cp_warning,
1771         cp_pedwarn, and cp_compiler_error to error, warning, pedwarn, and
1772         internal_error respectively.  Make cp_deprecated into a macro.
1773         Don't define cp_printer typedef or declare cp_printers.
1774         * error.c: Include flags.h.
1775         Delete: struct tree_formatting_info, print_function_argument_list,
1776         print_declaration, print_expression, print_function_declaration,
1777         print_function_parameter, print_type_id, print_cv_qualifier_seq,
1778         print_type_specifier_seq, print_simple_type_specifier,
1779         print_elaborated_type_specifier, print_rest_of_abstract_declarator,
1780         print_parameter_declaration_clause, print_exception_specification,
1781         print_nested_name_specifier, and definition of cp_printers.
1782         (locate_error): New function.
1783         (cp_error_at, cp_warning_at, cp_pedwarn_at): Moved here and
1784         rewritten in terms of locate_error and diagnostic.c.
1785         (cp_tree_printer): Rename cp_printer; wire up to *_to_string
1786         instead of deleted print_* routines.  Handle %C, %L, %O, %Q also.
1787         (init_error): Adjust to match.
1788
1789 Sat Sep 22 09:15:31 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1790
1791         * Make-lang.in (CXX_C_OBJS): Add attribs.o.
1792
1793 2001-09-21  Richard Henderson  <rth@redhat.com>
1794
1795         * class.c (set_vindex): Mind TARGET_VTABLE_USES_DESCRIPTORS.
1796         (build_vtbl_initializer): Likewise.
1797         (build_vfn_ref): New.
1798         * cp-tree.h: Declare it.
1799         * call.c (build_over_call): Use it.
1800         * decl2.c (mark_vtable_entries): Mark FDESC_EXPR.
1801         * typeck.c (get_member_function_from_ptrfunc): Mind descriptors.
1802
1803 Fri Sep 21 08:16:19 2001  J"orn Rennecke <amylaar@redhat.com>
1804
1805         * decl.c (grokdeclarator): Use C syntax for attr_flags declaration.
1806
1807 2001-09-21  Joseph S. Myers  <jsm28@cam.ac.uk>
1808
1809         Table-driven attributes.
1810         * decl.c: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
1811         * decl2.c (cplus_decl_attributes): Only take one attributes
1812         parameter.
1813         * cp-tree.c (cplus_decl_attributes): Update prototype.
1814         * class.c (finish_struct), decl.c (start_decl, start_function),
1815         decl2.c (grokfield), friend.c (do_friend), parse.y
1816         (parse_bitfield): Update calls to cplus_decl_attributes.
1817         * decl.c (grokdeclarator): Take a pointer to a single ordinary
1818         attribute list.
1819         * decl.h (grokdeclarator): Update prototype.
1820         * decl2.c (grokfield): Take a single ordinary attribute list.
1821         * friend.c (do_friend): Likewise.
1822         * decl.c (shadow_tag, groktypename, start_decl,
1823         start_handler_parms, grokdeclarator, grokparms, start_function,
1824         start_method), decl2.c (grokfield, grokbitfield, grokoptypename),
1825         parse.y (parse_field, parse_bitfield, component_decl_1), pt.c
1826         (process_template_parm, do_decl_instantiation): Pass single
1827         ordinary attribute lists around.
1828         * decl.c (grokdeclarator): Correct handling of nested attributes.
1829         Revert the patch
1830         1998-10-18  Jason Merrill  <jason@yorick.cygnus.com>
1831                 * decl.c (grokdeclarator): Embedded attrs bind to the right,
1832                 not the left.
1833         .
1834         * cp-tree.h (cp_valid_lang_attribute): Remove declaration
1835         (cp_attribute_table): Declare.
1836         * decl.c (valid_lang_attribute): Don't define.
1837         (lang_attribute_table): Define.
1838         (init_decl_processing): Initialize lang_attribute_table instead of
1839         valid_lang_attribute.
1840         * tree.c (cp_valid_lang_attribute): Remove.
1841         (handle_java_interface_attribute, handle_com_interface_attribute,
1842         handle_init_priority_attribute): New functions.
1843         (cp_attribute_table): New array.
1844         * decl2.c (import_export_class): Don't use
1845         targetm.valid_type_attribute.
1846
1847 2001-09-15  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
1848
1849         * Make-lang.in (cp/error.o): Depend on real.h
1850         * error.c: #include "real.h"
1851
1852 2001-09-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1853
1854         * mangle.c (mangle_conv_op_name_for_type): Use concat in lieu of
1855         xmalloc/strcpy/strcat.
1856
1857 2001-09-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1858
1859         * decl.c (warn_extern_redeclared_static, cp_make_fname_decl):
1860         Const-ification.
1861         * pt.c (tsubst_decl): Likewise.
1862
1863 2001-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1864
1865         * decl2.c (lang_f_options): Const-ification.
1866         * lex.c (cplus_tree_code_name): Likewise.
1867         * spew.c (yyerror): Likewise.
1868
1869 2001-09-06  Nathan Sidwell  <nathan@codesourcery.com>
1870
1871         PR c++/3986
1872         * class.c (force_canonical_binfo_r): Check & move an indirect
1873         primary base first.
1874         (force_canonical_binfo): Check that it's not already
1875         canonical.
1876         (mark_primary_virtual_base): Remove BINFO parameter.
1877         (mark_primary_bases): Adjust, set BINFO_LOST_PRIMARY_P here.
1878
1879 2001-09-06  Nathan Sidwell  <nathan@codesourcery.com>
1880
1881         Remove TYPE_NONCOPIED_PARTS.
1882         * cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Map onto
1883         CLASSTYPE_PURE_VIRTUALS.
1884         (TYPE_RAISES_EXCEPTIONS): Map onto TYPE_BINFO.
1885         * class.c (duplicate_tag_error): Remove TYPE_NONCOPIED_PARTS.
1886         (layout_class_type): Don't call fixup_inline_methods here ...
1887         (finish_struct_1): ... call it here.
1888
1889 2001-09-04  Mark Mitchell  <mark@codesourcery.com>
1890
1891         * decl.c (duplicate_decls): Remove code deadling with
1892         DECL_SAVED_INSNS.
1893         * decl2.c (finish_file): Likewise.
1894         * pt.c (instantiate_decl): Likewise.
1895         * semantics.c (expand_body): Don't defer local functions if
1896         they wouldn't be deferred for some other reason.  Don't
1897         generate RTL for functions that will not be emitted.
1898         (genrtl_start_function): Remove code deadling with
1899         DECL_SAVED_INSNS.
1900         (genrtl_finish_function): Likewise.
1901
1902 2001-09-04  Nathan Sidwell  <nathan@codesourcery.com>
1903
1904         PR c++/4203
1905         * call.c (build_over_call): Do not optimize any empty base
1906         construction.
1907
1908 2001-08-31  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1909
1910         * error.c (dump_template_decl): Output template parameters
1911         together with their specifiers.
1912         Output `class' prefix for template template parameter.
1913         (dump_decl): Fix formatting.
1914
1915 2001-08-30  Kurt Garloff  <garloff@suse.de>
1916
1917         * optimize.c (inlinable_function_p): Allow only smaller single
1918         functions. Halve inline limit after reaching recursive limit.
1919
1920 2001-08-30  Joern Rennecke <amylaar@redhat.com>
1921             Jason Merrill  <jason_merrill@redhat.com>
1922
1923         * class.c (build_vtable_entry_ref): Subtract in char*, not
1924         ptrdiff_t.
1925
1926 2001-08-23  Jason Merrill  <jason_merrill@redhat.com>
1927
1928         * tree.c (cp_build_qualified_type_real): Use get_qualified_type.
1929         (build_cplus_array_type): Use cp_build_qualified_type, not
1930         TYPE_MAIN_VARIANT, to get an unqualified version.
1931
1932         * decl2.c (grok_alignof): Lose.
1933         (build_expr_from_tree): Use expr_sizeof and c_alignof_expr.
1934         * typeck.c (c_alignof): Lose.
1935         * semantics.c (finish_sizeof, finish_alignof): New.
1936         * parse.y: Use them.
1937         * cp-tree.h: Declare them.
1938
1939 2001-08-22  Jason Merrill  <jason_merrill@redhat.com>
1940
1941         * pt.c (tsubst_expr): Hand off to the TREE_CHAIN of a statement.
1942         Don't loop in COMPOUND_STMT, FOR_STMT or TRY_BLOCK.
1943         * tree.c (cp_statement_code_p): A TAG_DEFN is a statement.
1944
1945 2001-08-19  Jakub Jelinek  <jakub@redhat.com>
1946
1947         * typeck2.c (add_exception_specifier): Only require complete type if
1948         not in processing template declaration.
1949
1950 2001-08-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1951
1952         * decl.c: Cast argument to size_t, not HOST_WIDE_INT, in calls to
1953         GNU_xref_start_scope and GNU_xref_end_scope.
1954
1955         * tree.c (TYPE_HASH): Moved to ../tree.h.
1956
1957 2001-08-16  Mark Mitchell  <mark@codesourcery.com>
1958
1959         * cvt.c (convert_to_void): Preserve TREE_SIDE_EFFECTS
1960         on COMPOUND_EXPRs.
1961
1962 2001-08-14  Richard Henderson  <rth@redhat.com>
1963
1964         * class.c, cp-tree.h (build_vfn_ref): Remove.
1965         * call.c, rtti.c: Replace all refernces with build_vtbl_ref.
1966
1967 2001-08-13  Mark Mitchell  <mark@codesourcery.com>
1968
1969         * call.c (build_over_call): Mark COMPOUND_EXPRs generated for
1970         empty class assignment as having side-effects to avoid
1971         spurious warnings.
1972
1973 2001-08-13  Zack Weinberg  <zackw@panix.com>
1974
1975         * Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
1976         * except.c: Include libfuncs.h.
1977
1978 2001-08-11  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
1979
1980         * decl.c (grokdeclarator): Clarify diagnostic message.
1981
1982 2001-08-13  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1983
1984         * decl2.c (do_nonmember_using_decl): Replace using directive
1985         with using declaration in the error message.
1986
1987 2001-08-11  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1988
1989         * pt.c (maybe_fold_nontype_arg): Use TREE_TYPE of ARG as the
1990         criterion to avoid rebuilding expression tree instead of
1991         processing_template_decl.
1992
1993 2001-08-07  Jason Merrill  <jason_merrill@redhat.com>
1994
1995         Support named return value optimization for inlines, too.
1996         * decl.c (finish_function): Nullify returns here.
1997         * semantics.c (genrtl_start_function): Not here.
1998         (cp_expand_stmt): Don't mess with CLEANUP_STMTs.
1999         (nullify_returns_r): No longer static.  Just clear RETURN_EXPR.
2000         Also nullify the CLEANUP_STMT for the nrv.
2001         * cp-tree.h: Declare it.
2002         * optimize.c (declare_return_variable): Replace the nrv with the
2003         return variable.
2004         * typeck.c (check_return_expr): Be more flexible on alignment check.
2005         Ignore cv-quals when checking for a matching type.
2006
2007 2001-08-09  Richard Henderson  <rth@redhat.com>
2008
2009         * decl2.c (finish_objects): Use target hooks instead of
2010         assemble_constructor and assemble_destructor.
2011
2012 2001-08-08  John David Anglin  <dave@hiauly1.hia.nrc.ca>
2013
2014         * g++spec.c (lang_specific_driver): Quote argument after `-Xlinker'.
2015
2016 2001-08-07  Nathan Sidwell  <nathan@codesourcery.com>
2017
2018         PR c++/3820
2019         Stop using TYPE_NONCOPIED_PARTS.
2020         * call.c (build_over_call): Be careful when copy constructing
2021         or assigning to an empty class.
2022         * class.c (check_bases_and_members): It has a
2023         COMPLEX_ASSIGN_REF if it has a vptr.
2024         (layout_class_type): Don't add empty class padding to
2025         TYPE_NONCOPIED_PARTS.
2026         (finish_struct_1): Don't add the VFIELD either.
2027         * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): Mention _copy_
2028         initialization.
2029
2030 2001-08-07  Jason Merrill  <jason_merrill@redhat.com>
2031
2032         * tree.c (walk_tree): Walk siblings even if !walk_subtrees.
2033
2034 2001-08-06  Richard Henderson  <rth@redhat.com>
2035
2036         * decl2.c (finish_objects): Pass a symbol_ref and priority to
2037         assemble_{constructor,destructor}.  Remove priority handling.
2038
2039 2001-08-05  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
2040
2041         Don't allow template-id in using-declaration.
2042         * decl2.c (validate_nonmember_using_decl): Handle template-ids.
2043         (do_class_using_decl): Likewise.
2044
2045 2001-08-04  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
2046
2047         * cp/spew.c (read_token): No need to pop buffers.
2048
2049 2001-08-02  Stan Shebs  <shebs@apple.com>
2050
2051         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY): Remove, no longer used.
2052         (fnaddr_from_vtable_entry): Remove decl.
2053         * method.c (use_thunk): Update comment.
2054
2055 2001-08-01  Andrew Cagney  <ac131313@redhat.com>
2056
2057         * repo.c (get_base_filename): Change return value to const char
2058         pointer.
2059
2060 2001-08-02  Nathan Sidwell  <nathan@codesourcery.com>
2061
2062         Kill -fhonor-std.
2063         * NEWS: Document.
2064         * cp-tree.h (flag_honor_std): Remove.
2065         (CPTI_FAKE_STD): Remove.
2066         (std_node): Remove comment about it being NULL.
2067         (fake_std_node): Remove.
2068         * decl.c (in_fake_std): Remove.
2069         (walk_namespaces_r): Remove fake_std_node check.
2070         (push_namespace): Remove in_fake_std code.
2071         (pop_namespace): Likewise.
2072         (lookup_name_real): Remove fake_std_node check.
2073         (init_decl_processing): Always create std_node. Always add
2074         std:: things there.
2075         (builtin_function): Always put non '_' fns in std.
2076         * decl2.c (flag_honor_std): Remove.
2077         (lang_f_options): Remove honor-std.
2078         (unsupported_options): Add honor-std.
2079         (set_decl_namespace): Remove fake_std_node check.
2080         (validate_nonmember_using_decl): Likewise.
2081         (do_using_directive): Likewise.
2082         (handle_class_head): Likewise.
2083         * dump.c (cp_dump_tree): Likewise.
2084         * except.c (init_exception_processing): Adjust.
2085         * init.c (build_member_call): Remove fake_std_node check.
2086         (build_offset_ref): Likewise.
2087         * lang-options.h: Remove -fhonor-std, -fno-honor-std.
2088         * rtti.c (init_rtti_processing): Adjust.
2089
2090 2001-07-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
2091
2092         * tree.c (cp_tree_equal): WITH_CLEANUP_EXPR node to use its second
2093         operand while calling cp_tree_equal.
2094
2095 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
2096
2097         The 3.0 ABI no longer has vbase pointer fields.
2098         * cp-tree.h (VBASE_NAME, VBASE_NAME_FORMAT, VBASE_NAME_P,
2099         FORMAT_VBASE_NAME): Remove.
2100         * method.c (do_build_copy_constructor): Adjust.
2101         (do_build_assign_ref): Adjust.
2102         * search.c (lookup_field_r): Adjust.
2103         * typeck.c (build_component_ref): Adjust.
2104
2105         The 3.0 ABI always has a vtable pointer at the start of every
2106         polymorphic class.
2107         * rtti.c (build_headof_sub): Remove.
2108         (build_headof): Adjust.
2109         (get_tinfo_decl_dynamic): No need to check flag_rtti
2110         here. Adjust.
2111         (create_real_tinfo_var): Explain why we need a hidden name.
2112
2113 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
2114
2115         PR c++/3631
2116         * class.c (update_vtable_entry_for_fn): The fixed adjustment
2117         of a virtual thunk should be from declaring base.
2118
2119 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
2120
2121         * class.c (dfs_ctor_vtable_bases_queue_p): Always walk into
2122         the shared virtual base, so preserving inheritance graph order.
2123
2124 2001-07-30  Andreas Jaeger  <aj@suse.de>
2125
2126         * decl2.c: Remove unused var global_temp_name_counter.
2127
2128 2001-07-28  Richard Henderson  <rth@redhat.com>
2129
2130         * method.c (pending_inlines): Remove.
2131
2132 2001-07-27  Nathan Sidwell  <nathan@codesourcery.com>
2133
2134         * class.c (mark_primary_virtual_base): Don't adjust base
2135         offsets here.
2136         (dfs_unshared_virtual_bases): Adjust them here.
2137         (mark_primary_bases): Explain why we adjust at the end.
2138
2139 2001-07-27  Nathan Sidwell  <nathan@codesourcery.com>
2140
2141         * class.c (finish_struct_1): When copying the primary base's
2142         VFIELD, make sure we find it is at offset zero.
2143
2144 2001-07-26  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2145
2146         * pt.c (tsubst_template_parms): Call maybe_fold_nontype_arg and
2147         tsubst_expr for default template arguments.
2148
2149 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
2150
2151         PR c++/3621
2152         * spew.c (yylex): Only copy the token's lineno, if it is
2153         non-zero.
2154
2155 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
2156
2157         PR c++/3624
2158         * call.c (resolve_args): Simplify, call
2159         convert_from_reference.
2160         (build_new_op): Resolve and convert from reference ARG1
2161         earlier. Adjust ARG2 & ARG3 resolve and conversion.
2162
2163 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
2164
2165         * decl.c (last_function_parm_tags): Remove.
2166         (current_function_parm_tags): Remove.
2167         (init_decl_processing): Adjust.
2168         (start_function): Adjust.
2169         (store_parm_decls): Adjust.
2170
2171         PR c++/3152
2172         * decl.c (grokdeclarator): Detect when a function typedef is
2173         declaring a function, and create last_function_parms correctly.
2174
2175 2001-07-25  Jason Merrill  <jason_merrill@redhat.com>
2176
2177         * call.c (joust): Only prefer a non-builtin candidate to a builtin
2178         one if they have the same signature.
2179
2180         * cvt.c (build_up_reference): Take DECL parm.  Check TREE_STATIC on
2181         it rather than toplevel_bindings_p.  Give it a mangled name if static.
2182         (convert_to_reference): Adjust.
2183         * decl2.c (get_temp_name): Lose.
2184         * mangle.c (mangle_ref_init_variable): New fn.
2185         (mangle_guard_variable): Strip the ref-init header.
2186         * cp-tree.h: Adjust.
2187         * decl.c (cp_finish_decl): Add the DECL_STMT after processing the
2188         initializer.
2189         (grok_reference_init): Always use DECL_INITIAL.
2190
2191 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
2192
2193         PR c++/3416
2194         * call.c (build_conditional_expr): Recheck args after
2195         conversions.
2196         * cp-tree.h (build_conditional_expr): Move to correct file.
2197         * typeck.c (decay_conversion): Diagnose any unknown types
2198         reaching here.
2199         (build_binary_op): Don't do initial decay or default
2200         conversions on overloaded functions.
2201         (build_static_cast): Don't do a decay conversion here.
2202
2203 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
2204
2205         PR c++/3543
2206         * typeck.c (condition_conversion): Resolve an OFFSET_REF.
2207         * expr.c (cplus_expand_expr): An OFFSET_REF should never get here.
2208
2209 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
2210
2211         * class.c (build_vtbl_or_vbase_field): Remove, move into ...
2212         (create_vtbl_ptr): ... here.
2213
2214 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
2215
2216         * class.c (build_vbase_offset_vbtl_entries): Look for
2217         non-primary base of which we are a sub vtable.
2218
2219 2001-07-24  Phil Edwards  <pme@sources.redhat.com>
2220
2221         * semantics.c (finish_this_expr):  Remove unused code.
2222
2223 2001-07-24  Nathan Sidwell  <nathan@codesourcery.com>
2224
2225         Simplify rtti, now we've only one ABI.
2226         * cp-tree.h (cp_tree_index): Remove CPTI_TINFO_DECL_ID,
2227         CPTI_TINFO_VAR_ID.
2228         (tinfo_decl_id, tinfo_var_id): Remove.
2229         (get_typeid_1): Remove.
2230         * rtti.c
2231         (init_rtti_processing): Remove tinfo_decl_id & tinfo_var_id.
2232         (typeid_ok_p): New function.
2233         (build_type_id): Call typeid_ok_p. Don't call tinfo_from_decl.
2234         (get_tinfo_decl): Remove old abi documentation.
2235         (tinfo_from_decl): Remove.
2236         (get_type_id): Call typeid_ok_p. Absorb get_typeid_1.
2237         (get_typeid_1): Remove.
2238         (get_base_offset): Remove.
2239         (synthesize_tinfo_var): Absorb get_base_offset.
2240         (create_real_tinfo_var): Don't use tinfo_decl_id.
2241
2242 2001-07-23  Graham Stott  <grahams@redhat.com>
2243
2244         * cp/class.c (type_requires_array_cookie): Fix use of uninitialised
2245         variable has_two_argument_delete_p.
2246
2247 2001-07-21  Nathan Sidwell  <nathan@codesourcery.com>
2248
2249         Remove flag_vtable_thunk. It is always on for the 3.0 ABI.
2250         * cp-tree.h (CPTI_DELTA2_IDENTIFIER): Remove.
2251         (CPTI_INDEX_IDENTIFIER): Remove.
2252         (CPT_PFN_OR_DELTA2_IDENTIFIER): Remove.
2253         (delta2_identifier): Remove.
2254         (index_identifier): Remove.
2255         (pfn_or_delta2_identifier): Remove.
2256         (flag_vtable_thunks): Remove.
2257         (VTABLE_DELTA2_NAME): Remove.
2258         (VTABLE_INDEX_NAME): Remove.
2259         (FNADDR_FROM_VTABLE_ENTRY): Adjust.
2260         (vfunc_ptr_type_node): Adjust.
2261         (VTABLE_NAME_PREFIX): Adjust.
2262         (build_vfn_ref): Lose first parameter.
2263         (fixup_all_virtual_upcast_offsets): Remove.
2264         * decl.c (initialize_predefined_identifiers): Remove
2265         delta2_identifier, index_identifier, pfn_or_delta2_identifier.
2266         (init_decl_processing): Remove no-vtable-thunk code.
2267         * decl2.c (flag_vtable_thunks): Remove.
2268         (mark_vtable_entries): Remove no-vtable-thunk code.
2269         * error.c (dump_decl): Remove no-vtable-thunk code.
2270         (dump_expr): Adjust ptr to member function code.
2271         * init.c (initialize_vtable_ptrs): Remove no-vtable-thunk
2272         code.
2273         * rtti.c (build_headof): Remove no-vtable-thunk code.
2274         (get_tinfo_decl_dynamic): Adjust build_vfn_ref call.
2275         * search.c (get_base_distance): Remove expand_upcast_fixups case.
2276         (virtual_context) Remove.
2277         (expand_upcast_fixups): Remove.
2278         (fixup_virtual_upcast_offsets): Remove.
2279         (fixup_all_virtual_upcast_offsets): Remove.
2280         * typeck.c (get_member_function_from_ptrfunc): Remove
2281         no-vtable-thunk code.
2282         * call.c (build_over_call): Adjust call to build_vfn_ref.
2283         * class.c (build_vfn_ref): Lose first parameter. Remove
2284         no-vtable-thunk code.
2285         (build_rtti_vtbl_entries): Remove no-vtable-thunk code.
2286         (build_vtable_entry): Remove no-vtable-thunk code.
2287
2288 2001-07-20  Nathan Sidwell  <nathan@codesourcery.com>
2289
2290         Remove old-abi remnants. Remove comments about old abi
2291         behaviour. Remove references to 'new-abi' in comments.
2292         * cp-tree.h: Adjust comments.
2293         (vbase_offsets_in_vtable_p): Delete.
2294         (vcall_offsets_in_vtable_p): Delete.
2295         (vptrs_present_everywhere_p): Delete.
2296         (all_overridden_vfuns_in_vtables_p): Delete.
2297         (merge_primary_and_secondary_vtables_p): Delete.
2298         (TYPE_CONTAINS_VPTR_P): Adjust.
2299         (VTT_NAME_PREFIX): Remove.
2300         (CTOR_VTBL_NAME_PREFIX): Remove.
2301         (init_vbase_pointers): Remove.
2302         * class.c: Adjust coments.
2303         (build_vbase_pointer_fields): Delete.
2304         (build_vbase_pointer): Remove old-abi code.
2305         (build_secondary_vtable): Likewise.
2306         (modify_all_vtables): Likewise.
2307         (create_vtable_ptr): Likewise.
2308         (layout_class_type): Likewise.
2309         (finish_struct_1): Likewise.
2310         (finish_vtbls): Likewise.
2311         (dfs_finish_vtbls): Delete.
2312         (build_vbase_offset_vtbl_entries): Remove old-abi code.
2313         * cvt.c: Adjust comments.
2314         * decl.c: Adjust comments.
2315         * decl2.c: Adjust comments.
2316         * init.c: Adjust comments.
2317         (construct_virtual_bases): Remove old-abi code.
2318         * lang-specs.h: Remove -fno-new-abi.
2319         * mangle.c: Adjust comments.
2320         * rtti.c: Adjust comments.
2321         (get_base_offset): Remove old-abi-code.
2322         * search.c: Adjust comments.
2323         (dfs_init_vbase_pointers): Remove.
2324         (dfs_vtable_path_unmark): Remove.
2325         (init_vbase_pointers): Remove.
2326         * semantics.c: Adjust comments.
2327         (emit_associated_thunks): Remove old-abi code.
2328         * typeck.c: Adjust comments.
2329
2330 2001-07-20  Daniel Berlin  <dan@cgsoftware.com>
2331
2332         * Make-lang.in (cp/optimize.o): Depend on $(PARAMS_H), not
2333         params.h.
2334
2335 2001-07-19  Mark Mitchell  <mark@codesourcery.com>
2336
2337         * class.c (finish_struct_anon): Forbid nested classes.
2338
2339 2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
2340
2341         * decl2.c: Don't include dwarfout.h and dwarf2out.h.
2342         * optimize.c: Include debug.h.
2343         (maybe_clone_body): Use debug hook.
2344         * semantics.c: Include debug.h.
2345         (expand_body): Use debug hook.
2346
2347 2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
2348
2349         * spew.c (read_token, yyerror): Remove CPP_INT, CPP_FLOAT cases.
2350
2351 2001-07-18  Mark Mitchell  <mark@codesourcery.com>
2352
2353         * class.c (type_requires_array_cookie): New function.
2354         (check_methods): Don't try to figure out whether the type needs a
2355         cookie here.
2356         (check_bases_and_members): Set TYPE_VEC_NEW_USES_COOKIE here.
2357         * cp-tree.h (TYPE_VEC_DELETE_TAKES_SIZE): Remove.
2358         (TYPE_VEC_NEW_USES_COOKIE): Reimplement.
2359         * pt.c (instantiate_class_template): Don't set
2360         TYPE_VEC_DELETE_TAKES_SIZE.
2361         * NEWS: Document ABI changes from GCC 3.0.
2362
2363 2001-07-18  Xavier Delacour <xavier@fmaudio.net>,
2364             Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
2365
2366         * NEWS (Changes in GCC 3.0): Fix typo.
2367
2368 2001-07-13  Joseph S. Myers  <jsm28@cam.ac.uk>
2369
2370         * decl2.c (cplus_decl_attributes): Take a pointer to the node to
2371         which attributes are to be attached, and a flags argument.  Update
2372         call to decl_attributes.
2373         (grokfield): Update call to decl_attributes.
2374         * class.c (finish_struct): Update call to cplus_decl_attributes.
2375         * cp-tree.h (cplus_decl_attributes): Update prototype.
2376         * decl.c (start_decl, grokdeclarator, start_function): Update
2377         calls to decl_attributes and cplus_decl_attributes.
2378         * friend.c (do_friend): Update call to cplus_decl_attributes.
2379         * parse.y (parse_bitfield): Update call to cplus_decl_attributes.
2380
2381 2001-07-12  Mark Mitchell  <mark@codesourcery.com>
2382
2383         * decl.c (make_rtl_for_nonlocal_decl): Set DECL_C_HARD_REGISTER
2384         for `register' variables with an asm-specification.
2385
2386 2001-07-11  Mark Mitchell  <mark@codesourcery.com>
2387
2388         * semantics.c (finish_asm_stmt): Mark the output operands
2389         to an asm addressable, if necessary.
2390
2391 2001-07-11  Ben Elliston  <bje@redhat.com>
2392
2393         * Revert this change -- there is a subtle bug.
2394
2395         PR c++/80
2396         * decl.c (finish_enum): New "attributes" argument; pass it to
2397         cplus_decl_attributes.  Use a narrower type if the enum is packed.
2398         * cp-tree.h (finish_enum): Adjust prototype.
2399         * parse.y (enum_head): New non-terminal.
2400         (structsp): Use it. Enums now may be preceded or followed by
2401         optional attributes -- pass their chained tree to finish_enum().
2402         * pt.c (tsubst_enum): Pass NULL_TREE for the new argument.
2403
2404 2001-07-10  Mark Mitchell  <mark@codesourcery.com>
2405
2406         * pt.c (tsubst_decl): Set DECL_CONTEXT for namespace-scope
2407         variables.
2408
2409 2001-07-10  Jason Merrill  <jason_merrill@redhat.com>
2410
2411         * semantics.c (cp_expand_stmt): Fix for null
2412         current_function_return_value.
2413
2414 2001-07-10  Jan van Male  <jan.vanmale@fenk.wau.nl>
2415
2416         * call.c (build_op_delete_call): Initialize fn.
2417         (convert_like_real): Delete conditional.
2418         (joust): Initialize *w and *l.
2419         * class.c: Add prototype for binfo_ctor_vtable.
2420         (get_primary_binfo): Initialize result.
2421         * init.c (build_java_class_ref): Initialize name.
2422
2423 2001-07-09  Erik Rozendaal  <dlr@acm.org>
2424
2425         * typeck.c (unary_complex_lvalue): Do not duplicate the
2426         argument to modify, pre-, or post-increment when used as an
2427         lvalue and when the argument has side-effects.
2428
2429 2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>
2430
2431         * decl.c (start_decl): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
2432         (start_function): Don't call SET_DEFAULT_DECL_ATTRIBUTES.  Call
2433         cplus_decl_attributes even if attrs is NULL.
2434         * friend.c (do_friend): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
2435
2436 2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>
2437
2438         * decl.c (grokdeclarator), decl2.c (cplus_decl_attributes): Update
2439         calls to decl_attributes.
2440
2441 2001-07-06  Ira Ruben   <ira@apple.com>
2442
2443         * cp-tree.def (TEMPLATE_DECL): Update comment. DECL_RESULT should
2444         be DECL_TEMPLATE_RESULT.
2445
2446 2001-07-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2447
2448         * cp-tree.h (copy_template_template_parm): Rename to ...
2449         (bind_template_template_parm): ... here.
2450         * tree.c (copy_template_template_parm): Rename to ...
2451         (bind_template_template_parm): ... here.  Remove the case when
2452         NEWARGS is NULL_TREE.
2453         (copy_tree_r): Don't copy TEMPLATE_TEMPLATE_PARM and
2454         BOUND_TEMPLATE_TEMPLATE_PARM.
2455         * pt.c (lookup_template_class): Adjust.
2456
2457 2001-07-05  Jason Merrill  <jason_merrill@redhat.com>
2458
2459         * cvt.c (convert_lvalue): New fn.
2460         * cp-tree.h: Declare it.
2461         * method.c (do_build_assign_ref): Use it.
2462         (do_build_copy_constructor): Convert parm to base types
2463         before calling base constructors.
2464
2465         * typeck.c (check_return_expr): Check DECL_ALIGN instead of
2466         DECL_USER_ALIGN.  Check flag_elide_constructors instead of
2467         optimize.
2468         * semantics.c (cp_expand_stmt): Don't destroy the named return value.
2469
2470 2001-07-02  Nathan Sidwell  <nathan@codesourcery.com>
2471
2472         * optimize.c (optimize_inline_calls): New function, broken out
2473         of ...
2474         (optimize_function): ... here. Call it. Don't inline if it is
2475         a thunk.
2476         (dump_function): Print name of dump flag causing this dump.
2477         * semantics.c (expand_body): Move thunk inline check to
2478         optimize_function.
2479
2480 2001-06-29  Joseph S. Myers  <jsm28@cam.ac.uk>
2481
2482         * typeck.c (COMP_TYPE_ATTRIBUTES): Don't define.
2483         (comptypes): Use target.comp_type_attributes.
2484
2485 2001-06-29  Nathan Sidwell  <nathan@codesourcery.com>
2486
2487         * cp-tree.h (flag_dump_class_layout): Remove unneeded declaration.
2488
2489 2001-06-28  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
2490
2491         * error.c (lang_print_error_function): Add a `diagnostic_context *'
2492         parameter. Tweak.
2493
2494 2001-06-27  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
2495
2496         * decl2.c (import_export_class): Update.
2497
2498 2001-06-26  Gabriel Dos Reis  <gdr@codesourcery.com>
2499
2500         * error.c (init_error): Adjust settings.
2501
2502 2001-06-26  Gabriel Dos Reis  <gdr@codesourcery.com>
2503
2504         * error.c (init_error): Adjust settings.
2505
2506 2001-06-19  Richard Sandiford  <rsandifo@redhat.com>
2507
2508         * except.c (initialize_handler_parm): Expect __cxa_begin_catch to
2509         return pointers to data members by reference rather than by value.
2510
2511 2001-06-18  Jason Merrill  <jason_merrill@redhat.com>
2512
2513         Implement the Named Return Value optimization.
2514         * cp-tree.h (struct cp_language_function): Add x_return_value.
2515         (current_function_return_value): Now a macro.
2516         * decl.c: Don't define it.
2517         (define_label, finish_case_label): Don't clear it.
2518         (init_decl_processing): Don't register it with GC.
2519         * semantics.c (genrtl_finish_function): Don't check it for
2520         no_return_label.  Copy the RTL from the return value to
2521         current_function_return_value and walk, calling...
2522         (nullify_returns_r): ...this new fn.
2523         * typeck.c (check_return_expr): Set current_function_return_value.
2524
2525 2001-06-15  Jason Merrill  <jason_merrill@redhat.com>
2526
2527         * class.c (dfs_accumulate_vtbl_inits): Just point to the base we're
2528         sharing a ctor vtable with.  Merge code for cases 1 and 2.
2529         (binfo_ctor_vtable): New fn.
2530         (build_vtt_inits, dfs_build_secondary_vptr_vtt_inits): Use it.
2531
2532 2001-06-14  Jason Merrill  <jason_merrill@redhat.com>
2533
2534         * class.c (dfs_find_final_overrider): Fix logic.
2535
2536         * class.c (update_vtable_entry_for_fn): Uncomment optimization to use
2537         virtual thunk instead of non-virtual.
2538         (get_matching_virtual): Uncomment.
2539
2540         * pt.c (unify): Don't recurse between the POINTER_TYPE and the
2541         OFFSET_TYPE.  If we're adding cv-quals, the extra ones would be on
2542         PARM, not ARG.
2543
2544 2001-06-14  Nathan Sidwell  <nathan@codesourcery.com>
2545
2546         * class.c (dfs_accumulate_vtbl_inits): For case 2 & 3, make sure
2547         we've not emerged from the hierarchy of RTTI_BINFO on reaching
2548         a non-virtual base.
2549
2550 2001-06-13  Mark Mitchell  <mark@codesourcery.com>
2551
2552         * NEWS: Update release number.
2553
2554 2001-06-12  Nathan Sidwell  <nathan@codesourcery.com>
2555
2556         PR c++/3130, c++/3131, c++/3132
2557         * cp-tree.h (BINFO_UNSHARED_MARKED): New #define.
2558         * class.c (force_canonical_binfo_r): Move
2559         BINFO_UNSHARED_MARKED, BINFO_LOST_PRIMARY_P. Don't move
2560         virtual bases unless they're primary and what they're primary
2561         too has been moved.
2562         (dfs_unshared_virtual_bases): Use BINFO_UNSHARED_MARKED. Cope
2563         with morally virtual bases. Duplicate BINFO_LOST_PRIMARY_P and
2564         BINFO_PRIMARY_BASE_OF. Clear BINFO_VTABLE for all but the most
2565         derived binfo.
2566         (mark_primary_bases): Use BINFO_UNSHARED_MARKED.
2567         (layout_nonempty_base_or_field): Add most derived type
2568         parameter. Adjust.
2569         (layout_empty_base): Likewise.
2570         (build_base_field): Likewise.
2571         (build_base_fields): Likewise.
2572         (propagate_binfo_offsets): Add most derived type
2573         parameter. Skip non canonical virtual bases too.
2574         (dfs_set_offset_for_unshared_vbases): Don't skip primary
2575         bases. Do skip canonical bases.
2576         (layout_virtual_bases): Adjust.
2577         (layout_class_type): Adjust.
2578         (dfs_get_primary_binfo): Build list of virtual primary base
2579         candidates.
2580         (get_primary_binfo): Check that the shared virtual primary
2581         base candidate was found first.
2582         (accumulate_vtbl_inits): Don't do anything for non-vptr
2583         containing binfos. For case 1 primary virtual bases, keep
2584         checking that we've not emerged from the hierarchy of RTTI_BINFO.
2585
2586 2001-06-12  Nathan Sidwell  <nathan@codesourcery.com>
2587
2588         PR c++/3089
2589         * class.c (dfs_accumulate_vtbl_inits): Always walk down the
2590         hierarchy looking for primary bases for a ctor
2591         vtable. Recursively call oneself, if we meet our primary via
2592         this route and haven't met it yet via inheritance graph order.
2593
2594 2001-06-11  Mark Mitchell  <mark@codesourcery.com>
2595
2596         * lang-options.h: Emit documentation for -fno-honor-std, not
2597         -fhonor-std.
2598
2599 2001-06-10  Alexandre Oliva  <aoliva@redhat.com>
2600
2601         * typeck.c (get_member_function_from_ptrfunc) [vbit_in_delta]:
2602         Don't clobber delta.
2603         (expand_ptrmemfunc_cst) [ptrmemfunc_vbit_in_delta]: Adjust pfn.
2604
2605 2001-06-10  Mark Mitchell <mark@codesourcery.com>
2606             Gabriel Dos Reis  <gdr@codesourcery.com>
2607
2608         * Make-lang.in (cp/call.o): Depend on diagnostic.h
2609         (cp/typeck.o): Depend on diagnostic.h
2610         (cp/typeck2.o): Depend on diagnostic.h
2611         (cp/repo.o): Depend on dignostic.h
2612         * typeck.c: #include diagnostic.h
2613         (convert_for_initialization): Remove extern declaration for
2614         warningcount and errorcount.
2615
2616         * call.c: #include diagnostic.h
2617         (convert_like_real): Remove extern declaration for warnincount and
2618         errorcount.
2619
2620         * repo.c: #include diagnostic.h
2621         * typeck2.c: #include diagnostic.h
2622
2623 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
2624
2625         * decl.c (duplicate_decls): Fix DECL_TEMPLATE_RESULT thinko
2626         in previous change.
2627
2628 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
2629
2630         PR c++/2929
2631         * friend.c (do_friend): Use push_decl_namespace for classes at
2632         namespace scope.
2633
2634 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
2635             Jason Merrill <jason_merrill@redhat.com>
2636
2637         PR c++/3061
2638         * class.c (build_secondary_vtable): Use assert, rather than an error
2639         message.
2640         (dfs_fixup_binfo_vtbls): BINFO_VTABLE might be NULL.
2641         (dfs_accumulate_vtbl_inits): A lost primary virtual base may
2642         be between ORIG_BINFO and RTTI_BINFO, but neither of them.
2643         Don't set BINFO_VTABLE for a primary virtual base.
2644
2645 2001-06-07  Mark Mitchell  <mark@codesourcery.com>
2646
2647         * decl.c (duplicate_decls): Update source position information
2648         when a template function is defined.
2649
2650 2001-06-07  Phil Edwards  <pme@sources.redhat.com>
2651
2652         * lang-specs.h:  Move -D_GNU_SOURCE to config/linux.h.
2653
2654 2001-06-07  Nathan Sidwell  <nathan@codesourcery.com>
2655
2656         PR c++/2914
2657         * decl.c (pushtag): Don't push into a complete type's scope.
2658
2659 2001-06-06  Jason Merrill  <jason_merrill@redhat.com>
2660
2661         * cp-tree.h (THUNK_GENERATE_WITH_VTABLE_P): Lose.
2662         (struct lang_decl_flags): Lose generate_with_vtable_p.
2663         (BV_GENERATE_THUNK_WITH_VTABLE_P): Lose.
2664         * class.c (copy_virtuals): Adjust.
2665         * decl2.c (mark_vtable_entries): Adjust.
2666         * method.c (make_thunk, build_vtable_entry): Adjust.
2667         * class.c (update_vtable_entry_for_fn): Only look as far as the
2668         first defining class.
2669         (build_vtbl_initializer): Put nothing in the slot for a function only
2670         defined in a lost primary virtual base.
2671         (add_vcall_offset_vtbl_entries_1): Use the same code for
2672         the lost primary case and the normal case.
2673         (dfs_unshared_virtual_bases): Don't lose a non-virtual primary base.
2674         (get_vfield_offset, get_derived_offset): Lose.
2675         (dfs_find_final_overrider): Use look_for_overrides_here.
2676         (get_matching_virtual): New fn.
2677         * semantics.c (emit_associated_thunks): Check BV_USE_VCALL_INDEX_P,
2678         not BV_VCALL_INDEX.
2679         * search.c (look_for_overrides_here): Split out from...
2680         (look_for_overrides_r): Here.
2681
2682         * class.c (find_final_overrider): Return error_mark_node on error.
2683
2684         * decl2.c (key_method): #if 0 accidental change.
2685
2686 2001-06-06  John David Anglin  <dave@hiauly1.hia.nrc.ca>
2687
2688         * call.c (convert_default_arg): Use INTEGRAL_TYPE_P.
2689         (build_over_call): Likewise.
2690         * decl.c (grokparms): Likewise.
2691         * pt.c (tsubst_decl): Likewise.
2692         * typeck.c (convert_arguments): Likewise.
2693
2694 2001-06-05  Mark Mitchell  <mark@codesourcery.com>
2695
2696         * semantics.c (begin_class_definition): Robustify.
2697
2698         * pt.c (instantiate_decl): Tell the repository code about the
2699         clones, not the cloned functions.
2700         * repo.c (repo_template_used): Explicitly instantiate the cloned
2701         function, not the clones.
2702
2703 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
2704
2705         * call.c (build_user_type_conversion_1): Set ICS_USER_FLAG and
2706         ICS_BAD_FLAG on created conversion.
2707         (compare_ics): Break out rank.
2708
2709 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
2710
2711         * decl.c (xref_tag): Remove extraneous %s on dependent name
2712         lookup warning.
2713
2714 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
2715
2716         * class.c (layout_vtable_decl): Fix off by one error on
2717         build_index_type.
2718         (build_vtt): Likewise.
2719         (build_ctor_vtbl_group): Likewise.
2720
2721 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
2722
2723         * class.c (maybe_indent_hierarchy): New function.
2724         (dump_class_hierarchy_r): Add flags. Dump extra binfo
2725         information, if enabled. Use maybe_indent_hierarchy. Adjust
2726         output format.
2727         (dump_class_hierarchy): Adjust prototype. Adjust output format.
2728         (dump_array, dump_vtable, dump_vtt): New functions.
2729         (finish_struct_1): Adjust hierarchy dumping.
2730         (initialize_vtable): Call dump_vtable.
2731         (build_vtt): Call dump_vtt.
2732         (build_ctor_vtbl_group): Call dump_vtable.
2733         * decl2.c (flag_dump_class_layout): Remove.
2734         (cxx_decode_option): Remove dump translation unit
2735         and dump class hierarchy check. Call dump_switch_p.
2736         (finish_file): Adjust dumping.
2737         (dump.c): Only dump base classes if not TDF_SLIM.
2738         Only dump namespace members if not TDF_SLIM.
2739         * optimize.c (dump_function): New function.
2740         (optimize_function): Call dump_function.
2741         * semantics.c (expand_body): Use dump_enabled_p.
2742
2743 2001-06-01  Nathan Sidwell  <nathan@codesourcery.com>
2744
2745         PR g++/2936
2746         Part missed from first commit
2747         * decl2.c (finish_anon_union): Copy context.
2748
2749 2001-05-30  Nathan Sidwell  <nathan@codesourcery.com>
2750
2751         PR g++/2936
2752         * optimize.c (remap_decl): Remap anonymous aggregate members too.
2753
2754 2001-05-26  Nathan Sidwell  <nathan@codesourcery.com>
2755
2756         PR g++/2823
2757         * semantics.c (expand_body): Don't optimize thunks.
2758
2759 2001-05-25  Sam TH  <sam@uchicago.edu>
2760
2761         * cp-tree.h lex.h: Fix header include guards.
2762
2763 2001-05-25  Mark Mitchell <mark@codesourcery.com>
2764
2765         * decl.c (init_decl_processing): Tweak.
2766
2767 2001-05-24  Mark Mitchell  <mark@codesourcery.com>
2768
2769         * decl.c (duplicate_decls): Tidy.
2770         (init_decl_processing): Always set flag_no_builtin.
2771
2772 2001-05-24  Nathan Sidwell  <nathan@codesourcery.com>
2773
2774         PR c++/2184
2775         * decl2.c (do_local_using_decl): Push the decls, even in a
2776         template.
2777
2778 2001-05-22  Mark Mitchell  <mark@codesourcery.com>
2779
2780         * optimize.c (initialize_inlined_parameters): Don't set
2781         TREE_READONLY for a VAR_DECL taking the place of an inlined
2782         PARM_DECL.
2783
2784 2001-05-22  Jason Merrill  <jason_merrill@redhat.com>
2785
2786         * class.c, cp-tree.h, rtti.c: Remove com_interface attribute support.
2787         * tree.c (cp_valid_lang_attribute): Warn about use of com_interface
2788         attribute.
2789
2790 2001-05-22  Joseph S. Myers  <jsm28@cam.ac.uk>
2791
2792         * parse.y: Refer to compound literals as such, not as
2793         constructor-expressions.
2794
2795 2001-05-21  Mark Mitchell  <mark@codesourcery.com>
2796
2797         * call.c (build_op_delete_call): Ignore exception-specifications
2798         when looking for matching delete operators.
2799         * init.c (build_new_1): Compute whether or not the allocation
2800         function used is a placement allocation function or not, and
2801         communicate this information to build_op_delete_call.
2802
2803 2001-05-21  Jason Merrill  <jason_merrill@redhat.com>
2804
2805         * class.c (build_vtable_entry_ref): Lose vtbl parm.  Fix for new abi.
2806         (build_vtbl_ref): Adjust.
2807         (dfs_accumulate_vtbl_inits): Set TREE_CONSTANT on the vtable address.
2808         * decl2.c (lang_f_options): Remove huge-objects, vtable-thunks.
2809         Re-add vtable-gc.
2810         (unsupported_options): Correspondingly.
2811
2812         * decl2.c (maybe_make_one_only): Check flag_weak, not
2813         supports_one_only().
2814
2815         * cp-tree.def (START_CATCH_STMT): Lose.
2816         * dump.c (cp_dump_tree): Don't dump it.  Do dump HANDLER_PARMS.
2817         * tree.c (cp_statement_code_p): Don't case it.
2818         * semantics.c (cp_expand_stmt): Likewise.
2819         * cp-tree.h (START_CATCH_TYPE): Lose.
2820         (HANDLER_TYPE): New.
2821         * except.c (expand_start_catch_block): Don't start any blocks.
2822         Return the type.
2823         (expand_end_catch_block): Don't end any blocks.
2824         * parse.y (handler): Don't pass anything from finish_handler_parms
2825         to finish_handler.
2826         * pt.c (tsubst_expr): Likewise.
2827         * semantics.c (begin_handler): Call note_level_for_catch here.
2828         (finish_handler_parms): Don't return anything.
2829         (genrtl_catch_block, begin_catch_block): Lose.
2830         (genrtl_handler): Call expand_start_catch here.
2831
2832 2001-05-18  Jason Merrill  <jason_merrill@redhat.com>
2833
2834         * class.c (build_vtable): Set DECL_ASSEMBLER_NAME for vtables here.
2835         (get_vtable_decl, build_vtt): Not here.
2836
2837 2001-05-20  Nathan Sidwell  <nathan@codesourcery.com>
2838
2839         PR c++/2781
2840         * optimize.c (update_cloned_parm): Copy addressability and other
2841         flags.
2842
2843 2001-05-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2844
2845         * pt.c (determine_specialization): Ignore artificial functions.
2846
2847 2001-05-20  Neil Booth  <neil@daikokuya.demon.co.uk>
2848
2849         * cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
2850         (C_RID_CODE): Remove.
2851         * lex.c (cxx_init_options): Call set_identifier_size.  Update.
2852         (init_parse): Don't do it here.
2853
2854 2001-05-18  Diego Novillo  <dnovillo@redhat.com>
2855
2856         * decl2.c (finish_objects): Use the original SYMBOL_REF from the
2857         function declaration to avoid stripping the symbol's attributes.
2858
2859 2001-05-18  Nathan Sidwell  <nathan@codesourcery.com>
2860
2861         * decl.c (pushdecl): Adjust error string.
2862         (xref_tag): Adjust friend class injection warning. Remove the
2863         inherited name from the class shadowed scope.
2864
2865 2001-05-17  Mark Mitchell  <mark@codesourcery.com>
2866
2867         * except.c (cp_protect_cleanup_actions): New function.
2868         (init_exception_processing): Don't set protect_cleanup_actions
2869         here.  Do set lang_protect_cleanup_actions.
2870
2871 2001-05-16  Nathan Sidwell  <nathan@codesourcery.com>
2872
2873         * spew.c (read_token): Call yyerror on all unexpected tokens.
2874
2875 2001-05-16  Nathan Sidwell  <nathan@codesourcery.com>
2876
2877         * init.c (member_init_ok_or_else): Take a tree rather than
2878         string for name.
2879         (expand_member_init): Adjust.
2880
2881 2001-05-14  Nick Clifton  <nickc@cambridge.redhat.com>
2882
2883         * decl.c (duplicate_decls): Suppress warning about duplicate
2884         decls if the first decl is a friend.
2885
2886 2001-05-12  Zack Weinberg  <zackw@stanford.edu>
2887
2888         * except.c (choose_personality_routine): Export.  Add
2889         explanatory comment.  Take an enum languages, not a boolean.
2890         (initialize_handler_parm): Adjust to match.
2891         * cp-tree.h: Prototype choose_personality_routine.
2892         * lex.c (handle_pragma_java_exceptions): New function.
2893         (init_cp_pragma): Register #pragma GCC java_exceptions.
2894
2895 2001-05-12  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
2896
2897         * method.c (build_mangled_C99_name): Remove unused prototype.
2898
2899 2001-05-12  Alexandre Oliva  <aoliva@redhat.com>
2900
2901         * cp-tree.h (ptrmemfunc_vbit_where_t): Declare type.
2902         * typeck.c (get_member_function_from_ptrfunc,
2903         build_ptrmemfunc, expand_ptrmemfunc_cst): Take
2904         TARGET_PTRMEMFUNC_VBIT_LOCATION into account.
2905
2906         Reverted Geoff Keating's 2001-05-03's patch.
2907
2908 2001-05-11  Ira Ruben   <ira@apple.com>
2909
2910         * cp/cp-tree.h (C_EXP_ORIGINAL_CODE): Delete; declared in c-common.h.
2911
2912 2001-05-11  Neil Booth  <neil@daikokuya.demon.co.uk>
2913
2914         * cp-tree.h (finish_label_expr, lookup_label): Delete.
2915         * parse.y: Update for '&&'; don't issue warning here.
2916         * semantics.c (finish_label_expr): Delete.
2917
2918 2001-05-07  Mark Mitchell  <mark@codesourcery.com>
2919
2920         * splay-tree.h (splay_tree_max): New function.
2921         (splay_tree_min): Likewise.
2922
2923 2001-05-03  Geoffrey Keating  <geoffk@redhat.com>
2924
2925         * cp-tree.h (enum cp_tree_index): Add CPTI_PFN_VFLAG_IDENTIFIER.
2926         (pfn_vflag_identifier): Define.
2927         Update comment about layout of pointer functions.
2928         (build_ptrmemfunc1): Update prototype.
2929         (expand_ptrmemfunc_cst): Update prototype.
2930         * decl.c (initialize_predefined_identifiers): Initialize
2931         pfn_vflag_identifier.
2932         (build_ptrmemfunc_type): When FUNCTION_BOUNDARY < 16, add
2933         an extra field to the type.
2934         * expr.c (cplus_expand_constant): Pass 'flag' between
2935         expand_ptrmemfunc_cst and build_ptrmemfunc1.
2936         * typeck.c (get_member_function_from_ptrfunc): When
2937         FUNCTION_BOUNDARY < 16, look at additional field to determine
2938         if a pointer-to-member is a real pointer or a vtable offset.
2939         (build_ptrmemfunc1): Add new parameter to contain extra field.
2940         (build_ptrmemfunc): Pass the extra field around.
2941         (expand_ptrmemfunc_cst): Add new parameter to return extra field.
2942         (pfn_from_ptrmemfunc): Ignore the extra field.
2943
2944 2001-05-03  Mark Mitchell  <mark@codesourcery.com>
2945
2946         * cp-tree.h (flag_inline_trees): Update documentation.
2947         * decl.c (init_decl_processing): Adjust handling of
2948         flag_inline_functions and flag_inline_trees to support -O3.
2949         (grokfndecl): Set DECL_INLINE on all functions if that's what
2950         the user requested.
2951         (save_function_data): Clear DECL_INLINE in
2952         current_function_cannot_inline is non-NULL.
2953         * decl2.c (flag_inline_trees): Update documentation.
2954
2955 2001-05-03  Nathan Sidwell  <nathan@codesourcery.com>
2956
2957         * dump.c (cp_dump_tree, USING_STMT case): New case.
2958         * tree.c (cp_statement_code_p): Add USING_STMT.
2959         * decl2.c (do_using_directive): Add the using directive statement.
2960
2961         * tree.c (walk_tree): Reformat an if block.
2962
2963 2001-05-02  Mark Mitchell  <mark@codesourcery.com>
2964
2965         * decl.c (compute_array_index_type): Don't try to do anything with
2966         the indices when processing a template.
2967
2968 2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2969
2970         * call.c: NULL_PTR -> NULL.
2971         * class.c: Likewise.
2972         * cvt.c: Likewise.
2973         * decl.c: Likewise.
2974         * decl2.c: Likewise.
2975         * except.c: Likewise.
2976         * init.c: Likewise.
2977         * rtti.c: Likewise.
2978         * search.c: Likewise.
2979         * tree.c: Likewise.
2980         * typeck.c: Likewise.
2981         * typeck2.c: Likewise.
2982
2983 2001-05-02  Mark Mitchell  <mark@codesourcery.com>
2984
2985         * decl2.c (do_using_directive): Revert previous patch.
2986
2987 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
2988
2989         * cp-tree.def (USING_STMT): New statement node.
2990         * cp-tree.h (USING_STMT_NAMESPACE): New macro.
2991         * decl2.c (do_using_directive): Add USING_STMT to statement
2992         tree. Don't emit errors when processing template decl.
2993         * pt.c (tsubst_expr, USING_STMT case): New case.
2994         * semantics.c (cp_expand_stmt, USING_STMT case): New case.
2995
2996 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
2997
2998         * call.c (build_new_op): Convert args from reference here.
2999         (build_conditional_expr): Don't convert here.
3000
3001 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
3002
3003         * spew.c (last_token_id): New static variable.
3004         (read_token): Set it here.
3005         (yyerror): Use it here.
3006
3007 2001-04-30  Richard Henderson  <rth@redhat.com>
3008
3009         * cvt.c: Downcase C_PROMOTING_INTEGER_TYPE_P invocations.
3010         * decl.c: Likewise.
3011
3012 2001-04-30  Mark Mitchell  <mark@codesourcery.com>
3013
3014         * gxxint.texi: Remove.
3015         * Make-lang.in: Remove all traces of gxxint.texi.
3016
3017 Mon Apr 30 16:14:10 2001  Mark P Mitchell  <mark@codesourcery.com>
3018
3019         * decl2.c (start_static_initialization_or_destruction): Correct
3020         logic to handle the -fno-use-cxa-atexit case.
3021
3022 2001-04-30  Mark Mitchell  <mark@codesourcery.com>
3023
3024         * optimize.c (update_cloned_parm): New function.
3025         (maybe_clone_body): Use it.  Update the `this' parameter too.
3026
3027 2001-04-29  Joseph S. Myers  <jsm28@cam.ac.uk>
3028
3029         * decl2.c (unsupported_options): Add new-abi.
3030         * lang-options.h: Remove no longer supported options.
3031
3032 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
3033
3034         * except.c (can_convert_eh): Don't check template parms,
3035         typename types etc.
3036
3037 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
3038
3039         * optimize.c (maybe_clone_body): Copy parameter names and locations.
3040
3041 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
3042
3043         * cp-tree.h (adjust_clone_args): Prototype new function.
3044         * class.c (adjust_clone_args): New function.
3045         * decl.c (start_function): Call it for in charge ctors.
3046
3047 2001-04-26  Mark Mitchell  <mark@codesourcery.com>
3048
3049         * method.c (use_thunk): Make sure that thunks really are emitted
3050         when requested.
3051
3052 2001-04-26  Nathan Sidwell <nathan@codesourcery.com>
3053
3054         * mangle.c (write_chars): New macro.
3055         (hwint_to_ascii): New function
3056         (write_number): Use it.
3057         (write_integer_cst): Deal with really big numbers.
3058
3059 2001-04-25  Mark Mitchell  <mark@codesourcery.com>
3060
3061         * optimize.c (maybe_clone_body): Copy TREE_PUBLIC before emitting
3062         the clone.
3063
3064 2001-04-25  Nathan Sidwell  <nathan@codesourcery.com>
3065
3066         * decl.c (grokdeclarator): Set context of namespace scope
3067         TYPE_DECLS.
3068
3069 2001-04-24  Zack Weinberg  <zackw@stanford.edu>
3070
3071         * cp/optimize.c: Include hashtab.h.
3072         (struct inline_data): Add tree_pruner.
3073         (expand_call_inline, expand_calls_inline): Use it when calling
3074         walk_tree.
3075         (optimize_function): Initialize and free tree_pruner.
3076
3077 2001-04-24  Nathan Sidwell <nathan@codesourcery.com>
3078
3079         Lazy __FUNCTION__ generation.
3080         * cp-tree.def (FUNCTION_NAME): Remove.
3081         * cp-tree.h (function_name_declared_p): Remove.
3082         (cp_fname_init): Prototype.
3083         * decl.c (init_decl_processing): Don't generate __FUNCTION__ et al ids,
3084         don't call declare_function_name. Call start_fname_decls.
3085         (cp_make_fname_decl): Adjust parameters. Generate the name. Don't
3086         clobber the line number.
3087         (cp_fname_init): New function.
3088         (start_function): Call start_fname_decls.
3089         (finish_function): Call finish_fname_decls.
3090         * lex.c (reswords): Add slots for __FUNCTION__ et al.
3091         (rid_to_yy): Add mappings for __FUNCTION__ et al.
3092         * optimize.c (maybe_clone_body): Remove function_name_declared_p.
3093         * parse.y (VAR_FUNC_NAME): New token.
3094         (primary): Add VAR_FUNC_NAME.
3095         * pt.c (tsubst_decl): Adjust a DECL_PRETTY_FUNCTION_P's
3096         generation.
3097         (tsubst, FUNCTION_NAME case): Remove.
3098         (tsubst_copy, FUNCTION_NAME case): Remove.
3099         (tsubst_expr, DECL_STMT case): Be careful with a
3100         DECL_PRETTY_FUNCTION_P.
3101         (instantiate_decl): Remove function_name_declared_p.
3102         * semantics.c (begin_compound_statement): Don't call
3103         declare_function_name here.
3104         (setup_vtbl_ptr). Don't save & restore function_name_declared_p.
3105         (finish_translation_unit): Call finish_fname_decls.
3106         (expand_body): Remove function_name_declared_p.
3107         * typeck2.c (digest_init): Allow any ERROR_MARK.
3108
3109 2001-04-24  Nathan Sidwell  <nathan@codesourcery.com>
3110
3111         * pt.c (tsubst_decl): Use VOID_TYPE_P.
3112         * semantics.c: Fix some typos.
3113
3114 2001-04-23  Phil Edwards  <pme@sources.redhat.com>
3115
3116         * cp/decl2.c (flag_honor_std):  Always initialize to 1.
3117
3118 2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3119
3120         * xref.c (GNU_xref_file): Use concat in lieu of xmalloc/sprintf.
3121
3122 2001-04-23  Jason Merrill  <jason_merrill@redhat.com>
3123
3124         * except.c (build_throw): Wrap the initialization of the exception
3125         object in a MUST_NOT_THROW_EXPR.
3126         (do_free_exception): #if 0.
3127
3128 2001-04-20  Mark Mitchell  <mark@codesourcery.com>
3129
3130         * cp-tree.h (finish_enum): Change prototype.
3131         * decl.c (finish_enum): Reorganize.
3132         * parse.y (structsp): Adjust calls to finish_enum.
3133
3134 2001-04-20  Nathan Sidwell  <nathan@codesourcery.com>
3135
3136         * tree.c (cp_tree_equal): Adjust final switch formatting. Add
3137         't' case.
3138
3139 2001-04-20  Nathan Sidwell  <nathan@codesourcery.com>
3140
3141         * class.c (dfs_unshared_virtual_bases): Add ATTRIBUTE_UNUSED.
3142         (layout_empty_base): Return at end flag.
3143         (build_base_field): Likewise.
3144         (build_base_fields): Likewise.
3145         (layout_virtual_bases): Don't add 1 to eoc value.
3146         (end_of_class): Use full size for empty bases.
3147         (layout_class_type): Clear CLASSNEARLY_EMPTY_P if we appended
3148         empty bases. Don't add 1 to eoc value. Only add trailing padding
3149         if we're an empty class with no empty bases.
3150         (dump_class_hierarchy): Dump size and alignment.
3151
3152 2001-04-20  Jakub Jelinek  <jakub@redhat.com>
3153
3154         * call.c (maybe_handle_ref_bind): Copy ICS_USER_FLAG and
3155         ICS_BAD_FLAG.
3156
3157 2001-04-20  Jakub Jelinek  <jakub@redhat.com>
3158
3159         * search.c (lookup_field_r): If looking for type and non-TYPE_DECL
3160         is found, look first if name does not match the structure name.
3161
3162 2001-04-19  Mark Mitchell  <mark@codesourcery.com>
3163
3164         * cp-tree.h (DECL_LANGUAGE): Don't assume DECL_LANG_SPECIFIC is
3165         set.
3166         (SET_DECL_LANGUAGE): New macro.
3167         * decl.c (duplicate_decls): Use SET_DECL_LANGUAGE.
3168         (pushdecl): Likewise.
3169         (build_library_fn_1): Likewise.
3170         (build_cp_library_fn): Likewise.
3171         (grokfndecl): Likewise.
3172         (grokvardecl): Mark `extern "C"' variables as having C linkage.
3173         * decl2.c (grokclassfn): Use SET_DECL_LANGUAGE.
3174         * lex.c (retrofit_lang_decl): Likewise.
3175         * mangle.c (mangle_decl_string): Don't mangle the names of
3176         variables declared with C language linkage.
3177         * semantics.c (finish_member_declaration): Use SET_DECL_LANGUAGE.
3178
3179 2001-04-18  John David Anglin  <dave@hiauly1.hia.nrc.ca>
3180
3181         * semantics.c (simplify_aggr_init_exprs_r): Don't restore
3182         flag_access_control from uninitialized storage.
3183
3184 2001-04-15  Mark Mitchell  <mark@codesourcery.com>
3185
3186         * cp-tree.h (TYPE_PTRMEM_CLASS_TYPE): Improve documentation.
3187         * mangle.c (write_pointer_to_member_type): Fix mangling of
3188         pointers to cv-qualified member function types.
3189
3190         * init.c (build_delete): Create a SAVE_EXPR for the address if
3191         we're going to use it more than once.
3192
3193 2001-04-13  Mark Mitchell  <mark@codesourcery.com>
3194
3195         * cp-tree.h (DELTA2_FROM_PTRMEMFUNC): Remove.
3196         (expand_ptremfunc_cst): Change prototype.
3197         (delta2_from_ptrmemfunc): Remove.
3198         * expr.c (cplus_expand_constant): Adjust call to
3199         expand_ptrmemfunc_cst.
3200         * typeck.c (build_ptrmemfunc1): Simplify.
3201         (build_ptrmemfunc): Make sure that casting a PTRMEM_CST still
3202         results in a constant.
3203         (expand_ptrmemfunc_cst): Remove idx and delta2 parameters.
3204         (delta2_from_ptrmemfunc): Remove.
3205         (pfn_from_ptrmemfunc): Adjust call to expand_ptrmemfunc_cst.
3206
3207 2001-04-12  Jason Merrill  <jason_merrill@redhat.com>
3208
3209         * cp-tree.h (decl_namespace_list): New macro.
3210         (struct saved_scope): Add decl_ns_list.
3211         * decl.c (mark_saved_scope): Mark it.
3212         * decl2.c: Lose static decl_namespace_list.
3213         (init_decl2): Don't save it.
3214
3215 2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3216
3217         * cp-tree.h (warn_return_type, yylex): Delete redundant
3218         declarations.
3219
3220         * decl.c (current_class_depth, global_namespace): Likewise.
3221
3222         * decl2.c (current_class_depth, flag_gnu_xref): Likewise
3223
3224         * repo.c (flag_use_repository): Likewise.
3225
3226 2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3227
3228         * cp-tree.h (pedantic, convert, global_bindings_p, insert_block,
3229         set_block, pushdecl, getdecls, gettags, init_decl_processing,
3230         maybe_build_cleanup, copy_lang_decl, prep_stmt, lvalue_p,
3231         lvalue_or_else, print_lang_statistics, comp_target_types,
3232         unsigned_type, signed_type, signed_or_unsigned_type,
3233         build_function_call, mark_addressable, incomplete_type_error):
3234         Delete redundant declarations.
3235
3236 2001-04-11  Jason Merrill  <jason_merrill@redhat.com>
3237
3238         * cp-tree.h (TYPE_LINKAGE_IDENTIFIER): New macro.
3239         (TYPE_ANONYMOUS_P): New macro.
3240         (TAGGED_TYPE_P): New macro.
3241         * decl.c (check_tag_decl): Use TYPE_ANONYMOUS_P.
3242         (grokfndecl, grokvardecl, grokdeclarator): Likewise.
3243         * tree.c (no_linkage_helper): Likewise.
3244         * semantics.c (begin_class_definition): Likewise.
3245         * pt.c (convert_template_argument): Likewise.
3246         * lex.c (check_for_missing_semicolon): Likewise.
3247
3248 2001-04-12  Nathan Sidwell  <nathan@codesourcery.com>
3249
3250         * class.c (dfs_unshared_virtual_bases): New function.
3251         (mark_primary_bases): Call it.
3252         (check_bases): Ignore virtual bases when determining
3253         nearly-emptiness.
3254
3255 2001-04-12  Nathan Sidwell  <nathan@codesourcery.com>
3256
3257         * method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
3258
3259 2001-04-11  Mark Mitchell  <mark@codesourcery.com>
3260
3261         * optimize.c (maybe_clone_body): Copy DECL_NUM_STMTS from the
3262         cloned function to the clone.
3263
3264 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3265
3266         * Make-lang.in (cp/semantics.o): Depend on $(EXPR_H).
3267
3268         * semantics.c: Include expr.h.
3269
3270 2001-04-11  Nathan Sidwell  <nathan@codesourcery.com>
3271
3272         * method.c (implicitly_declare_fn): Commonize code for copy ctor
3273         and assignment op. Set TREE_USED for parameter.
3274
3275 2001-04-10  Mark Mitchell  <mark@codesourcery.com>
3276
3277         * class.c (find_final_overrider_data): Add `candidates'.
3278         (dfs_find_final_overrider): Don't issue error messages
3279         prematurely.
3280         (find_final_overrider): Issue error messages here.
3281         (build_base_field): Don't warn about amgibuous direct bases here.
3282         (warn_about_ambiguous_direct_bases): New function.
3283         (layout_class_type): Use it.
3284
3285 2001-04-10  Richard Henderson  <rth@redhat.com>
3286
3287         * typeck.c (build_array_ref): Push the array reference inside
3288         COMPOUND_EXPR and COND_EXPR.
3289
3290 2001-04-05  Mark Mitchell  <mark@codesourcery.com>
3291
3292         * cp-tree.h (DECL_THIS_INLINE): Rename to DECL_DECLARED_INLINE_P.
3293         * decl.c (duplicate_decls): Adjust accordingly.
3294         (maybe_commonize_var): Likewise.
3295         (grokfndecl): Likewise.
3296         (start_function): Likewise.
3297         (start_method): Likewise.
3298         * decl2.c (key_method): Likewise.
3299         (import_export_decl): Likewise.
3300         * method.c (implicitly_declare_fn): Likewise.
3301         * optimize.c (maybe_clone_body): Likewise.
3302
3303 2001-04-05  Benjamin Kosnik  <bkoz@redhat.com>
3304
3305         * lang-specs.h: Add __DEPRECATED.
3306
3307 Thu Apr  5 16:54:29 2001  J"orn Rennecke <amylaar@redhat.com>
3308
3309         * search.c (get_dynamic_cast_base_type): When building a new
3310         constant, set its type to ssizetype.
3311
3312 2001-04-04  Jakub Jelinek  <jakub@redhat.com>
3313
3314         * optimize.c (expand_call_inline): Only add newly inlined statements
3315         into inlined_stmts.
3316
3317 2001-04-03  Mark Mitchell  <mark@codesourcery.com>
3318
3319         * cp-tree.h (OPERATOR_ASSIGN_FORMAT): Remove.
3320         (OPERATOR_FORMAT): Likewise.
3321         (OPERATOR_TYPENAME_FORMAT): Likewise.
3322         * operators.def: Remove old name-mangling information.
3323         * decl.c (grok_op_properties): Adjust accordingly.
3324         * lex.c (init_operators): Likewise.
3325         * rtti.c (get_tinfo_decl): Issue error messages about types that
3326         have variable size.
3327
3328 2001-04-03  Mark Mitchell  <mark@codesourcery.com>
3329
3330         * decl2.c (import_export_decl): Don't call import_export_class
3331         when processing an inline member function.
3332         * semantics.c (expand_body): Call import_export_decl before
3333         emitting inline functions.
3334
3335 2001-03-28  Richard Henderson  <rth@redhat.com>
3336
3337         IA-64 ABI Exception Handling:
3338         * cp-tree.def (EH_SPEC_BLOCK): New.
3339         (MUST_NOT_THROW_EXPR): New.
3340         * cp-tree.h: Update changed function declarations.
3341         (CPTI_PUSH_EXCEPTION_IDENTIFIER): Remove.
3342         (CPTI_CALL_UNEXPECTED): New.
3343         (struct cp_language_function): Rename x_eh_spec_try_block
3344         to x_eh_spec_block.
3345         (EH_SPEC_STMTS, EH_SPEC_RAISES): New.
3346         * decl.c (current_binding_level): If no current function
3347         bindings, revert to scope_chain.
3348         (initialize_predefined_identifiers): Remove __cp_push_exception.
3349         (store_parm_decls): Use begin_eh_spec_block.
3350         (finish_function): Use finish_eh_spec_block.
3351         (mark_lang_function): Update for name changes.
3352         * decl2.c (finish_file): No mark_all_runtime_matches.
3353         * dump.c (cp_dump_tree): Handle new tree codes.
3354         * error.c (dump_expr) [BIND_EXPR]: Fix typo.
3355         * except.c (catch_language_init, catch_language): Remove.
3356         (init_exception_processing): Don't set language code.
3357         Initialize call_unexpected_node, protect_cleanup_actions,
3358         eh_personality_libfunc, lang_eh_runtime_type.
3359         (call_eh_info, push_eh_info, get_eh_info, get_eh_value): Remove.
3360         (get_eh_type, get_eh_caught, get_eh_handlers): Remove.
3361         (prepare_eh_type): Split out type canonicalizations ...
3362         (build_eh_type_type): ... from here.
3363         (build_eh_type_type_ref): Remove.
3364         (mark_all_runtime_matches): Remove.
3365         (build_exc_ptr): New.
3366         (do_begin_catch, do_end_catch): New.
3367         (do_pop_exception): Remove.
3368         (build_terminate_handler): Remove.
3369         (choose_personality_routine): Split out language choice from ...
3370         (initialize_handler_parm): ... here.
3371         Use MUST_NOT_THROW_EXPR.
3372         (expand_start_catch_block): Use do_begin_catch.  Simplify Java
3373         exception object handling.
3374         (expand_start_eh_spec, expand_end_eh_spec): Remove.
3375         (expand_exception_blocks, alloc_eh_object): Remove.
3376         (begin_eh_spec_block, finish_eh_spec_block): New.
3377         (do_allocate_exception, do_free_exception): New.
3378         (expand_throw): Merge into ...
3379         (build_throw): ... here.  Update for abi.
3380         * expr.c (cplus_expand_expr): No expand_internal_throw.
3381         Handle MUST_NOT_THROW_EXPR.
3382         * pt.c (tsubst_expr): Handle EH_SPEC_BLOCK.
3383         * semantics.c (*) Update for except.h name changes.
3384         (genrtl_try_block): No protect_with_terminate.
3385         (genrtl_eh_spec_block): New.
3386         (genrtl_handler): Don't emit the goto here.
3387         (cp_expand_stmt): Handle EH_SPEC_BLOCK.
3388         (genrtl_finish_function): Don't expand_exception_blocks.
3389         * tree.c (cp_statement_code_p): Handle EH_SPEC_BLOCK.
3390
3391 2001-03-28  Richard Henderson  <rth@redhat.com>
3392
3393         * decl.c (struct named_label_list): Rename eh_region to
3394         in_try_scope, add in_catch_scope.
3395         (struct binding_level): Rename eh_region to is_try_scope,
3396         add is_catch_scope.
3397         (note_level_for_try): Rename from note_level_for_eh.
3398         (note_level_for_catch): New.
3399         (poplevel): Copy both is_try_scope and is_catch_scope to
3400         the named_label_list struct.
3401         (check_previous_goto_1): Don't check for catch block via
3402         DECL_ARTIFICIAL; use in_try_scope instead.
3403         (check_goto): Likewise.
3404         * cp-tree.h (note_level_for_try, note_level_for_catch): Declare.
3405         * except.c (expand_start_catch_block): Call note_level_for_catch.
3406         * semantics.c (begin_compound_stmt): Update for note_level_for_try.
3407
3408 2001-03-27  Richard Henderson  <rth@redhat.com>
3409
3410         * except.c: Use USING_SJLJ_EXCEPTIONS instead of
3411         exceptions_via_longjmp.
3412
3413 2001-03-27  Phil Edwards  <pme@sources.redhat.com>
3414
3415         * pt.c (check_default_tmpl_args):  Make error messages clearer.
3416
3417 2001-03-26  Phil Edwards  <pme@sources.redhat.com>
3418
3419         * error.c:  Also undefine 'A' macro used for cp_printers definition.
3420
3421 2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3422
3423         * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
3424
3425 2001-03-26  Mike Yang <yang@research.att.com>
3426             Mark Mitchell  <mark@codesourcery.com>
3427
3428         * dump.c (dump_access): New function.
3429         (cp_dump_tree): Use it.  Dump basetype information for class
3430         types.
3431
3432 2001-03-26  Mark Mitchell  <mark@codesourcery.com>
3433
3434         * Makefile.in (optimize.o): Depend on params.h.
3435         (duplicate_decls): Copy DECL_NUM_STMTS, not DECL_FRAME_SIZE.
3436         (init_decl_processing): Set flag_no_inline when doing
3437         inlining-on-trees.
3438         * optimize.c: Include params.h.
3439         (struct inline_data): Improve documentation of FNS.  Add
3440         FIRST_INLINED_FN, INLINED_STMTS, and CLONING_P.
3441         (INSNS_PER_STMT): New macro.
3442         (remap_block): Use CLONING_P.
3443         (inlinable_function_p): Don't inline big functions.
3444         (expand_call_inline): Keep track of how much inlining we've done.
3445         (optimize_function): Set FIRST_INLINED_FN.
3446         (maybe_clone_body): Set CLONING_P.
3447         * semantics.c (simplify_aggr_init_exprs_r): Fix typing problems in
3448         tree nodes.
3449         (genrtl_finish_function): Clear DECL_DEFER_OUTPUT before calling
3450         rest_of_compilation.  Clear DECL_RTL for local variables
3451         afterwards.
3452         (clear_decl_rtl): New function.
3453
3454 2001-03-26  Nathan Sidwell  <nathan@codesourcery.com>
3455
3456         Implement DR 209
3457         * cp-tree.h (skip_type_access_control,
3458         reset_type_access_control): Prototype.
3459         * decl.c (grokdeclarator): Access of friends is not checked.
3460         * parse.y (component_decl_list): Reset type access control.
3461         * semantics.c (decl_type_access_control): Clear
3462         current_type_lookups.
3463         (save_type_access_control): Don't save if not deferring.
3464         (skip_type_access_control, reset_type_access_control): New
3465         functions.
3466         (begin_class_definition): Do type access control for basetypes.
3467         Start deferred access control.
3468         (finish_class_definition): Resume immediate access control if
3469         this is a local class.
3470
3471 2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3472
3473         * class.c (add_method): Use memcpy/memmove, not bcopy.
3474
3475         * decl.c (duplicate_decls): Likewise.
3476
3477 2001-03-23  Jakub Jelinek  <jakub@redhat.com>
3478
3479         * mangle.c (write_discriminator): Use `_0' for discriminator 1,
3480         not `_'.
3481
3482 2001-03-23  Jakub Jelinek  <jakub@redhat.com>
3483
3484         * decl.c (local_names): Define.
3485         (push_local_name): New.
3486         (grok_reference_init): Return init if initializing static reference
3487         variable with non-constant instead of emitting it.
3488         Move expand_static_init call to cp_finish_decl.
3489         (layout_var_decl): Call push_local_name.
3490         (maybe_commonize_var): Allow inlining functions even if they have
3491         static local variables, use comdat_linkage for them if flag_weak.
3492         (check_initializer): Call obscure_complex_init if
3493         grok_reference_init returned non-zero.
3494         (save_function_data): Clear x_local_names.
3495         (pop_cp_function_context): Free x_local_names.
3496         (mark_inlined_fns): Remove.
3497         (mark_lang_function): Mark x_local_names.
3498         (lang_mark_tree): Don't mark DECL_ACCESS for DECL_DISCRIMINATOR_P.
3499         Mark inlined_fns as tree, remove call to mark_inlined_fns.
3500         * class.c (alter_access): Ensure DECL_ACCESS is never set if
3501         DECL_DISCRIMINATOR_P.
3502         * cp-tree.h (cp_language_function): Add x_local_names.
3503         (lang_decl_flags): Add discriminator into u2.
3504         (lang_decl_inlined_fns): Remove.
3505         (lang_decl): inlined_fns is now a TREE_VEC.
3506         (DECL_DISCRIMINATOR_P, DECL_DISCRIMINATOR): Define.
3507         * optimize.c (inlinable_function_p): DECL_INLINED_FNS is now a
3508         TREE_VEC, not a custom structure.
3509         (optimize_function): Likewise.
3510         * mangle.c (discriminator_for_local_entity): Discriminate among
3511         VAR_DECL local entities.
3512         * search.c (dfs_access_in_type): If DECL_DISCRIMINATOR_P, DECL_ACCESS
3513         is not valid.
3514
3515 2001-03-22  Bryce McKinlay  <bryce@albatross.co.nz>
3516
3517         Add support for Java interface method calls.
3518         * cp-tree.h (struct lang_type): Add java_interface flag.
3519         (TYPE_JAVA_INTERFACE): New macro.
3520         * tree.c (cp_valid_lang_attribute): Handle "java_interface" attribute
3521         by setting TYPE_JAVA_INTERFACE.
3522         * call.c (java_iface_lookup_fn): New static.
3523         (build_over_call): If calling a method declared in a
3524         TYPE_JAVA_INTERFACE, call build_java_interface_fn_ref to generate the
3525         expression which resolves the function address.
3526         (build_java_interface_fn_ref): New function.
3527
3528 2001-03-22  Richard Henderson  <rth@redhat.com>
3529
3530         * Make-lang.in (cp/except.o): Don't depend on insn-flags.h.
3531         * except.c: Don't include it.
3532
3533 2001-03-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
3534             based on an idea from Joe Buck <jbuck@synopsys.com>
3535
3536         * parse.y (bad_decl, template_arg_list_ignore, arg_list_ignore):
3537         New nonterminals.
3538         (data_def, component_decl): Add reductions to bad_decl.
3539
3540 2001-03-22  Jakub Jelinek  <jakub@redhat.com>
3541
3542         * method.c (do_build_assign_ref): Don't use build_modify_expr for
3543         anonymous aggregates, since they don't have assignment operator
3544         method.
3545         * decl.c (fixup_anonymous_aggr): Disallow ctors, dtors and copy
3546         assignment operators for anonymous structure fields.
3547
3548 2001-03-21  Jason Merrill  <jason@redhat.com>
3549
3550         * pt.c (instantiate_decl): Abort if we see a member constant
3551         instantiation that doesn't already have its initializer.
3552         Downgrade explicit instantiation without definition to pedwarn.
3553
3554         * cp-tree.h (DECL_TINFO_FN_P, SET_DECL_TINFO_FN_P): Remove.
3555         * class.c (build_vtable_entry): Don't check DECL_TINFO_FN_P.
3556         (import_export_decl): Check tinfo_decl_p, not DECL_TINFO_FN_P.
3557
3558         * cp-tree.h (CLASSTYPE_VTABLE_NEEDS_WRITING): Remove.
3559         (pending_vtables): Remove.
3560         * decl2.c (pending_vtables): Remove.
3561         (import_export_vtable): Use CLASSTYPE_INTERFACE_ONLY, not
3562         CLASSTYPE_VTABLE_NEEDS_WRITING.
3563         (import_export_class): Likewise.
3564         (init_decl2): Don't mark pending_vtables.
3565         * lex.c (handle_pragma_vtable): Just sorry.
3566         * pt.c (instantiate_class_template): Don't mess with
3567         CLASSTYPE_VTABLE_NEEDS_WRITING.
3568         (mark_class_instantiated): Likewise.
3569         * ptree.c (print_lang_type): Don't print it.
3570         * semantics.c (begin_class_definition): Don't set it.
3571
3572         * pt.c (template_tail): Replace with last_pending_template.
3573         (maybe_templates, maybe_template_tail): Remove.
3574         (add_pending_template): Adjust.
3575         (instantiate_pending_templates): Adjust.
3576
3577         * cp-tree.h (struct saved_scope): Remove lang_stack field.
3578         (current_lang_stack): Remove.
3579         * decl.c (maybe_push_to_top_level): Don't initialize it.
3580         (duplicate_decls): Use current_lang_depth.
3581         (xref_basetypes): Likewise.
3582         * class.c (current_lang_depth): New fn.
3583         (push_lang_context): Use more varray functionality.
3584         (pop_lang_context): Likewise.
3585
3586         * error.c (GLOBAL_THING): Always use '__'.
3587
3588 2001-03-21  Mark Mitchell  <mark@codesourcery.com>
3589
3590         * class.c (build_clone): Clear DECL_ASSEMBLER_NAME.
3591
3592         * mangle.c (mangle_decl_string): Mangle the names of overloaded
3593         operators, even when they have `extern "C"' linkage.
3594
3595 2001-03-19  Mark Mitchell  <mark@codesourcery.com>
3596
3597         * class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
3598         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
3599         where it's not necessary.
3600         (add_method): Remove optimization involving comparison of
3601         DECL_ASSEMBLER_NAME.
3602         (build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
3603         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
3604         where it's not necessary.
3605         (check_methods): Likewise.
3606         (build_clone): Likewise.
3607         (built_vtt): Likewise.
3608         * cp-tree.h (DECL_NEEDED_P): Likewise.
3609         * decl.c (pushtag): Likewise.
3610         (duplicate_decls): Likewise.
3611         (pushdecl): Likewise.
3612         (builtin_function): Likewise.
3613         (build_library_fn_1): Set DECL_LANGUAGE for library functions.
3614         (build_cp_library_fn): Likewise.
3615         (maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
3616         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
3617         where it's not necessary.
3618         (make_rtl_for_nonlocal_decl): Likewise.
3619         (cp_finish_decl): Likewise.
3620         (grokfndecl): Likewise.
3621         (grokvardecl): Likewise.
3622         (grokdeclarator): Likewise.
3623         (start_function): Likewise.
3624         (cp_missing_return_ok_p): Likewise.
3625         * decl2.c (grokclassfn): Likewise.
3626         (check_classfn): Likewise.
3627         (finish_static_data_member_decl): Likewise.
3628         (grokfield): Likewise.
3629         * error.c (GLOBAL_IORD_P): Remove.
3630         (dump_global_iord): Improve output.
3631         (dump_decl): Avoid using DECL_ASSEMBLER_NAME.
3632         * except.c (nothrow_libfn_p): Summarily reject any function not in
3633         namespace-scope.
3634         * init.c (build_java_class_ref): Don't explicitly set
3635         DECL_ASSEMBLER_NAME after calling mangle_decl.
3636         * mangle.c (mangle_decl_string): Handle extern "C" functions.
3637         (mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
3638         * method.c (set_mangled_name_for_decl): Don't explicitly set
3639         DECL_ASSEMBLER_NAME after calling mangle_decl.
3640         (make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
3641         IDENTIFIER_GLOBAL_VALUE for the thunk.
3642         * pt.c (set_mangled_name_for_template_decl): Remove.
3643         (check_explicit_specialization): Don't use it.
3644         (looup_template_class): Don't set DECL_ASSEMBLER_NAME.
3645         (tsubst_friend_function): Likewise.
3646         (tsubst_decl): Likewise.
3647         (regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
3648         * rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
3649         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
3650         where it's not necessary.
3651         (tinfo_base_init): Likewise.
3652         (create_real_tinfo_var): Likewise.
3653         * search.c (looup_field_1): Likewise.
3654         * semantics.c (finish_named_return_value): Likewise.
3655         * tree.c (init_tree): Set lang_set_decl_assembler_name.
3656
3657 2001-03-15  Gabriel Dos Reis  <gdr@codesourcery.com>
3658
3659         Correct semantics restrictions checking in throw-expression.
3660         * except.c (is_admissible_throw_operand): New function.
3661         (build_throw): Use it.
3662
3663 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
3664
3665         * decl.c (cp_make_fnname_decl): Set DECL_IGNORED_P on __FUNCTION__
3666         and its ilk.
3667
3668 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
3669
3670         * class.c (build_clone): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
3671         * cp-tree.h (DECL_IN_MEMORY_P): Likewise.
3672         * decl.c (duplicate_decls): Likewise.
3673         (builtin_function): Likewise.
3674         (build_library_fn): Likewise.
3675         (build_cp_library_fn): Likewise.
3676         (check_initializer): Likewise.
3677         (cp_finish_decl): Likewise.
3678         * decl2.c (grokfield): Likewise.
3679         (grok_function_init): Remove #if 0'd code.
3680         (finish_anon_union): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
3681         * friend.c (do_friend): Likewise.
3682         * init.c (get_temp_regvar): Likewise.
3683         * method.c (make_thunk): Likewise.
3684         * pt.c (tsubst_friend_function): Likewise.
3685         (tsubst_decl): Likewise.
3686         (regenerate_decl_from_template): Likewise.
3687         * semantics.c (genrtl_named_return_value): Likewise.
3688         (expand_body): Likewise.
3689         (genrtl_finish_function): Likewise.
3690         * tree.c (cp_tree_equal): Likewise.
3691
3692 2001-03-12  Nathan Sidwell  <nathan@codesourcery.com>
3693
3694         * call.c (convert_like_real): Add extra semantics to INNER
3695         parameter. Don't convert to temporary if a user conversion
3696         gives us an lvalue that we're about to bind to a reference.
3697         Set INNER to indicate pending reference binding on recursive
3698         calls.
3699
3700 2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>
3701
3702         * cp/lex.c: Delete duplicate pending_lang_change.
3703
3704 2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>
3705
3706         * cp/lex.c (handle_pragma_interface, handle_pragma_implementation):
3707         Similarly.
3708         * cp/repo.c (get_base_filename, open_repo_file): Similarly.
3709         * cp/cp-tree.h: Remove file_name_nondirectory prototype.
3710
3711 2001-03-09  Zack Weinberg  <zackw@stanford.edu>
3712
3713         * Make-lang.in: Add dependencies on $(TM_P_H) as appropriate.
3714
3715 2001-03-08  Stan Shebs  <shebs@apple.com>
3716
3717         * cp-tree.h (set_identifier_local_value): Remove unused decl.
3718
3719 2001-03-06  Zack Weinberg  <zackw@stanford.edu>
3720
3721         * spew.c: Remove references to CPP_OSTRING.
3722
3723 2001-03-06  Andrew Haley  <aph@redhat.com>
3724
3725         * typeck.c (convert_arguments): Check that we have an fndecl.
3726
3727 2001-03-05  Andrew Haley  <aph@redhat.com>
3728
3729         * typeck.c (convert_arguments): Don't do ellipsis conversion for
3730         __built_in_constant_p.
3731
3732 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
3733
3734         * typeck.c (build_static_cast): Allow enum to enum conversions
3735         as per DR 128.
3736
3737 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
3738
3739         * class.c (check_field_decls): Pointers to member do not a
3740         non-pod struct make, as per DR 148.
3741
3742 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
3743
3744         * call.c (joust): cp_pedwarn when using gnu extension concerning
3745         worst conversion sequences.
3746
3747 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
3748
3749         * decl.c: Replace all uses of 'boolean' with 'bool'.
3750
3751 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
3752
3753         * lang-specs.h: Add zero initializer for cpp_spec field to
3754         all array elements that need one.  Don't put an #ifdef inside
3755         the initializer list; set a default for CPLUSPLUS_CPP_SPEC and
3756         use it.
3757
3758 2001-03-01  Nathan Sidwell  <nathan@codesourcery.com>
3759
3760         Implement using decls inside template functions.
3761         * decl2.c (validate_nonmember_using_decl): Don't special case
3762         fake_std_node in the global namespace. Don't reject early when
3763         processing a template.
3764         (do_local_using_decl): Add to statement tree. Don't do further
3765         processing when building a template.
3766         * pt.c (tsubst_expr, DECL_STMT case): Deal with USING_DECLs.
3767
3768 2001-03-01  Nathan Sidwell  <nathan@codesourcery.com>
3769
3770         * decl2.c (do_nonmember_using_decl): Don't complain if we find
3771         same function. Do complain about ambiguating extern "C"
3772         declarations.
3773
3774 2001-02-28  Nathan Sidwell  <nathan@codesourcery.com>
3775
3776         Remove floating point and complex type template constant parms.
3777         * pt.c (convert_nontype_argument): Remove REAL_TYPE and
3778         COMPLEX_TYPE extensions.
3779         (invalid_nontype_parm_type_p): Likewise.
3780
3781 2001-02-27  Jeffrey Oldham  <oldham@codesourcery.com>
3782
3783         * except.c (call_eh_info): Revert "match_function"'s type.
3784
3785 2001-02-27  Nathan Sidwell  <nathan@codesourcery.com>
3786
3787         Fix ctor vtable vcall offsets.
3788         * class.c (struct vtbl_init_data_s): Add rtti_binfo member.
3789         (build_rtt_vtbl_entries): Lose RTTI_BINFO parameter.
3790         (get_matching_base): Remove.
3791         (get_original_base): New function.
3792         (build_vtbl_initializer): Initialize vid.rtti_binfo.
3793         Use a virtual thunk for a ctor vtable with an index
3794         (add_vcall_offset_vtbl_entries_1): Check if binfo has lost a
3795         primary base within a constructor vtable. Only set
3796         BV_VCALL_INDEX when not a constructor vtable. Adjust vcall offset
3797         when primary base has been lost.
3798         * cp-tree.h (BINFO_VIRTUALS): Remove ambiguity from comment.
3799
3800 2001-02-26  Jeffrey Oldham  <oldham@codesourcery.com>
3801
3802         * call.c (joust): Ensure more_specialized()'s argument length
3803         parameter has correct value for constructors.
3804
3805 2001-02-26  Nathan Sidwell  <nathan@codesourcery.com>
3806
3807         * except.c (call_eh_info): Cleanup generation of cp_eh_info struct.
3808
3809         * decl.c (mark_inlined_fns): Prototype.
3810
3811 2001-02-22  Mark Mitchell  <mark@codesourcery.com>
3812
3813         * spew.c (yylex): Correct handling of friends.
3814
3815 2001-02-22  Mark Mitchell  <mark@codesourcery.com>
3816
3817         * mangle.c (write_encoding): Pass write_function_type the
3818         FUNCTION_DECL for the function being encoded.
3819         (write_function_type): Pass it along to write_bare_function_type.
3820         (write_bare_function_type): Pass it along to write_method_parms.
3821         (write_method_parms): Don't mangle the compiler-generated
3822         parameters to a constructor or destructor.
3823
3824 2001-02-22  Andreas Jaeger  <aj@suse.de>
3825
3826         * optimize.c: Include toplev.h for
3827         note_deferral_of_defined_inline_function prototype.
3828
3829 2001-02-22  Jakub Jelinek  <jakub@redhat.com>
3830
3831         * cp-tree.h (struct lang_decl_inlined_fns): New.
3832         (struct lang_decls): Add inlined_fns.
3833         (DECL_INLINED_FNS): New macro.
3834         * optimize.c (struct inline_data): Add inlined_fns.
3835         (declare_return_variable): Use VARRAY_ACTIVE_SIZE macro.
3836         (inlinable_function_p): Likewise, fix typo in comment,
3837         function is not inlinable if it already inlined function currently
3838         being optimized.
3839         (expand_call_inline): Add fn to inlined_fns if necessary.
3840         (optimize_function): Initialize inlined_fns.
3841         Save inlined_fns into DECL_INLINED_FNS after expanding inlines.
3842         * decl.c (mark_inlined_fns): New function.
3843         (lang_mark_tree): Call it.
3844
3845 2001-02-21  Jason Merrill  <jason@redhat.com>
3846
3847         * cp-tree.h (struct lang_decl_flags): Remove uninlinable flag.
3848         (DECL_UNINLINABLE): Move to middle-end.
3849
3850         * class.c (clone_function_decl): Set DECL_ABSTRACT on original fn.
3851         * decl.c (duplicate_decls): Preserve DECL_ABSTRACT.
3852         * class.c (build_clone): Set DECL_ABSTRACT_ORIGIN for the clone.
3853         * optimize.c (maybe_clone_body): Set DECL_ABSTRACT_ORIGIN for the
3854         parms and outer BLOCK.  note_deferral_of_defined_inline_function.
3855
3856         * method.c (implicitly_declare_fn): Don't set DECL_ARTIFICIAL on
3857         second parm of op=.
3858
3859 2001-02-19  Mark Mitchell  <mark@codesourcery.com>
3860
3861         * decl2.c (set_decl_namespace): Allow explicit instantiations in
3862         any namespace.
3863
3864 2001-02-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3865
3866         * optimize.c (expand_call_inline): Don't walk subtrees of type
3867         nodes.
3868
3869 2001-02-18  Mark Mitchell  <mark@codesourcery.com>
3870
3871         * class.c (add_vcall_offset_vtbl_entries_1): Only add one entry
3872         for a destructor.
3873
3874 2001-02-18  Jason Merrill  <jason@redhat.com>
3875
3876         Do put the VTT parameter in DECL_ARGUMENTS.
3877         * cp-tree.h (struct cp_language_function): Add x_vtt_parm.
3878         (current_vtt_parm): New macro.
3879         (struct lang_decl_flags): Add has_vtt_parm_p, remove vtt_parm.
3880         (DECL_HAS_VTT_PARM_P): New macro.
3881         (DECL_VTT_PARM): Remove.
3882         (FUNCTION_FIRST_USER_PARMTYPE, FUNCTION_FIRST_USER_PARM): New macros.
3883         * decl.c (duplicate_decls): Only copy the operator code if
3884         appropriate.
3885         (start_function): Set current_vtt_parm.
3886         (lang_mark_tree): Don't mark vtt_parm.
3887         * decl2.c (maybe_retrofit_in_chrg): Do add the VTT parm to
3888         DECL_ARGUMENTS.  Set DECL_HAS_VTT_PARM_P.
3889         * class.c (build_clone): Maybe remove the VTT parm.
3890         * optimize.c (maybe_clone_body): Set up the VTT parm.
3891         * pt.c (copy_default_args_to_explicit_spec): Preserve the VTT parm.
3892         * call.c (build_over_call): Just allow the VTT arg.
3893         * method.c (make_thunk): Don't set DECL_VTT_PARM.
3894         (do_build_copy_constructor): Use FUNCTION_FIRST_USER_PARM.
3895         (synthesize_method): Use FUNCTION_FIRST_USER_PARMTYPE.
3896         * decl.c (grokdeclarator, copy_args_p, grok_ctor_properties): Likewise.
3897         * error.c (dump_function_decl): Likewise.
3898         * call.c (build_user_type_conversion_1, convert_like_real): Abort
3899         if we try to call a constructor with in-charge or VTT parms.
3900         * method.c (skip_artificial_parms_for): New fn.
3901         * call.c (add_function_candidate, build_over_call): Call it.
3902         * call.c (build_new_method_call): Use current_vtt_parm.
3903         * init.c (expand_virtual_init): Likewise.
3904         * class.c (same_signature_p): No longer static.
3905         * cp-tree.h: Declare it.
3906         * search.c (look_for_overrides_r): Use it.
3907
3908 2001-02-17  Mark Mitchell  <mark@codesourcery.com>
3909
3910         * cp-tree.h (new_abi_rtti_p): Remove.
3911         (name_mangling_version): Likewise.
3912         (flag_do_squangling): Likewise.
3913         * class.c (build_rtti_vtbl_entries): Remove old ABI support.
3914         * decl.c (grokfndecl): Likewise.
3915         * decl2.c (name_mangling_version): Remove.
3916         (flag_do_squangling): Likewise.
3917         (lang_f_options): Remove `squangle'.
3918         (unsupported_options): Add `squangle'.
3919         (cxx_decode_option): Issue a warning about uses of
3920         -fname-mangling-version.
3921         (finish_file): Remove old ABI support.
3922         * pt.c (check_explicit_specialization): Likewise.
3923         (tsubst_decl): Likewise.
3924         * rtti.c (init_rtti_processing): Likewise.
3925         (build_headof): Likewise.
3926         (get_tinfo_decl_dynamic): Likewise.
3927         (tinfo_from_decl): Likewise.
3928         (build_dynamic_cast_1): Likewise.
3929         (synthesize_tinfo_var): Likewise.
3930         * init.c (build_new): Allow enumeration types for the array-bounds
3931         in a direct-new-declarator.
3932
3933         * semantics.c (finish_typeof): Resolve OFFSET_REFs.
3934
3935         * pt.c (check_explicit_specialization): Copy TREE_PRIVATE and
3936         TREE_PROTECTED from the template being specialized.
3937
3938 2001-02-17  Jason Merrill  <jason@redhat.com>
3939
3940         * decl2.c (build_artificial_parm): Set TREE_READONLY.
3941
3942         * decl.c (bad_specifiers): Allow throw specs on things with
3943         pointer-to-function or -member-function type.
3944         * init.c (build_default_init): Don't use a CONSTRUCTOR to initialize
3945         a pmf.
3946
3947 2001-02-17  Mark Mitchell  <mark@codesourcery.com>
3948
3949         * call.c (check_dtor_name): Handle template names correctly.
3950
3951 2001-02-16  Jason Merrill  <jason@redhat.com>
3952
3953         * cp-tree.h (DECL_USE_VTT_PARM): Remove.
3954         * decl2.c (maybe_retrofit_in_chrg): Don't create it.
3955         * optimize.c (maybe_clone_body): Don't substitute it.
3956         * call.c (build_new_method_call): Check in_chrg instead.
3957         * init.c (expand_virtual_init): Likewise.
3958
3959 2001-02-16  Gabriel Dos Reis  <gdr@codesourcery.com>
3960
3961         * decl.c (check_tag_decl): Make sure a typedef for an anonymous
3962         class-type introduces at least a type-name.
3963
3964 2001-02-16  Jakub Jelinek  <jakub@redhat.com>
3965
3966         * call.c (convert_like_real): Create a temporary for non-lvalue.
3967
3968 2001-02-16  Jeffrey Oldham  <oldham@codesourcery.com>
3969
3970         * cp-tree.h: Fix typos in comments.
3971
3972 2001-02-16  Jason Merrill  <jason@redhat.com>
3973
3974         * optimize.c (remap_block): If we're compiling a clone, pass the
3975         new block to insert_block.
3976
3977 2001-02-16  Mark Mitchell  <mark@codesourcery.com>
3978
3979         * semantics.c (finish_asm_stmt): Robustify.
3980
3981 2001-02-15  Mark Mitchell  <mark@codesourcery.com>
3982
3983         * pt.c (push_template_decl_real): Don't remangle the name of a
3984         class template.
3985
3986 2001-02-15  Jim Meyering  <meyering@lucent.com>
3987
3988         * Make-lang.in (c++.install-common): Depend on installdirs.
3989         (c++.install-info): Likewise.
3990         (c++.install-man): Likewise.
3991
3992 2001-02-15  Mark Mitchell  <mark@codesourcery.com>
3993
3994         * typeck2.c (build_m_component_ref): Robustify.
3995
3996 2001-02-15  Alexandre Oliva  <aoliva@redhat.com>
3997
3998         * friend.c (do_friend): Don't take the nested [template] class
3999         into account when deciding whether to warn about the friend
4000         function not referring to a template function.
4001
4002 2001-02-14  Jakub Jelinek  <jakub@redhat.com>
4003
4004         * typeck.c (build_unary_op): Clarify error message.
4005
4006 2001-02-08  Aldy Hernandez  <aldyh@redhat.com>
4007
4008         * parse.y (component_constructor_declarator): allow optional
4009         parentheses around constructor class name.
4010
4011 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
4012
4013         * cp-tree.h (setup_vtbl_ptr): Move prototype to semantics.c
4014         section.
4015         * init.c (emit_base_init): Remove incorrect comment about
4016         virtual bases.
4017         * method.c (make_thunk): Fix comment alignment.
4018
4019 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
4020
4021         Kill remnants of this is variable.
4022         * cp-tree.h (flag_this_is_variable): Remove.
4023         * decl2.c (flag_this_is_variable): Remove.
4024         * class.c (fixed_type_or_null): Add cdtor parm. Adjust.
4025         (build_vbase_path): The path is non-static, even in a cdtor.
4026         (resolves_to_fixed_type_p): Add additional return value.
4027         * search.c (init_vbase_pointers): Adjust.
4028         * tree.c (lvalue_p_1): Adjust.
4029         * typeck.c (mark_addressable): Adjust.
4030
4031 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
4032
4033         * pt.c (unify): Don't check cv quals of array types.
4034
4035 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
4036
4037         * tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to
4038         check whether we already have the type.
4039
4040 2001-02-13  Mark Mitchell  <mark@codesourcery.com>
4041
4042         * cp-tree.h (CLASSTYPE_DESTRUCTORS): Fix typo in comment.
4043         * call.c (build_op_delete_call): Simplify to remove duplicate
4044         code.
4045         * class.c (clone_function_decl): Don't build the deleting variant
4046         of a non-virtual destructor.
4047         * decl.c (finish_destructor_body): Don't call delete if this is a
4048         non-virtual destructor.
4049         * init.c (build_delete): Explicitly call `operator delete' when
4050         deleting an object with a non-virtual destructor.