OSDN Git Service

* method.c: add prototype for make_alias_for_thunk.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2003-06-23  Andrew Pinski <pinskia@physics.uc.edu>
2
3         * method.c: add prototype for make_alias_for_thunk.
4         (thunk_labelno, make_alias_for_thunk): only define
5         if ASM_OUTPUT_DEF is defined.
6
7 2003-06-23  Jakub Jelinek  <jakub@redhat.com>
8
9         * method.c (thunk_labelno): New variable.
10         (make_alias_for_thunk): New function.
11         (use_thunk): Use it if defined ASM_OUTPUT_DEF.  Put the thunk
12         into the same section as the function it is calling.
13         Include gt-cp-method.h.
14         * Make-lang.in (gt-cp-method.h): Depend on s-gtype.
15         (cp/method.o): Depend on gt-cp-method.h.
16         * config-lang.in (gtfiles): Add $(srcdir)/cp/method.c.
17
18 Mon Jun 23 19:41:27 CEST 2003  Jan Hubicka  <jh@suse.cz>
19
20         * decl.c (register_dtor_fn): Mark cleanup as used.
21         * decl2.c (mark_vtable_entries): Skip nops.
22         * rtti.c (get_tinfo_ptr): Mark tinfo as used.
23         (build_dynamic_cast_1): Likewise.
24         (tinfo_base_init): Likewise.
25         (emit_tinfo_decl): Likewise.
26
27 2003-06-23  Jakub Jelinek  <jakub@redhat.com>
28
29         * mangle.c (hash_type): val is the TREE_LIST itself, not a pointer
30         to it.
31
32 2003-06-21  Gabriel Dos Reis <gdr@integrable-solutions.net>
33
34         PR c++/10784
35         * call.c (joust): Warn about choosing conversion sequence only if
36         -Wconversion.
37
38 2003-06-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
39
40         PR c++/10864
41         * call.c (op_error): Tidy.
42         * error.c (dump_expr): Properly format 'T()' when T is an
43         aggregate type.
44
45 2003-06-21  Gabriel Dos Reis <gdr@integrable-solutions.net>
46
47         PR c++/10915
48         * decl.c (grok_op_properties): Warn possible confusing conversion
49         only if -Wconversion.
50
51 2003-06-20  Mark Mitchell  <mark@codesourcery.com>
52
53         PR c++/10749
54         * parser.c (cp_parser_class_head): See through dependent names
55         when parsing a class-head.
56
57         PR c++/10845
58         * pt.c (try_class_unification): Correct handling of member class
59         templates.
60
61 2003-06-20  Nathan Sidwell  <nathan@codesourcery.com>
62
63         * semantics.c (genrtl_finish_function): Adjust
64         expand_function_end call.
65
66 2003-06-19  Mark Mitchell  <mark@codesourcery.com>
67
68         PR c++/10939
69         * pt.c (tsubst_decl): Do not try to substitute into non-dependent
70         functions.
71         (value_dependent_expression_p): Correct logic for FUNCTION_DECLs.
72
73         PR c++/9649
74         * cp-tree.h (pushdecl_class_level): Change prototype.
75         (push_class_level_binding): Likewise.
76         * decl.c (add_binding): Reject duplicate static data members.
77         (pushdecl_class_level): Return a value indicating whether or not
78         the binding was valid.
79         (push_class_level_binding): Likewise.
80         * semantics.c (finish_member_declaration): Don't keep invalid
81         declarations.
82
83         PR c++/11041
84         * call.c (initialize_reference): Do not use cp_finish_decl to emit
85         temporary variables.
86         * cp-tree.h (static_aggregates): Declare.
87         (pushdecl_top_level_and_finish): Likewise.
88         * decl.c (pushdecl_top_level_1): New function.
89         (pushdecl_top_level): Use it.
90         (pushdecl_top_level_and_finish): New function.
91         (initialize_local_var): Remove redundant code.
92         (cp_finish_decl): Remove support for RESULT_DECLs.  Don't check
93         building_stmt_tree.
94         * decl.h (static_aggregates): Remove.
95         * decl2.c (get_guard): Use pushdecl_top_level_and_finish.
96         * rtti.c (get_tinfo_decl): Use pushdecl_top_level_and_finish.
97         (tinfo_base_init): Likewise.
98         
99 2003-06-19  Matt Austern  <austern@apple.com>
100
101         PR c++/11228
102         * init.c (build_zero_init): Assert that number of array elements
103         is an integer constant.
104         (build_default_init) Don't use build_zero_init for arrays with
105         variable number of elements.
106         
107 2003-06-19  Andreas Jaeger  <aj@suse.de>
108
109         * cp-tree.h: Remove duplicated declarations.
110
111 2003-06-18  Nathanael Nerode  <neroden@gcc.gnu.org>
112
113         * pt.c: Convert to ISO C.
114         * semantics.c: Convert to ISO C.
115
116 2003-06-18  Nathan Sidwell  <nathan@codesourcery.com>
117
118         * cp-tree.h (comp_except_specs, compparms, cp_has_mutable_p,
119         at_least_as_qualified_p, more_qualified_p): Return bool.
120         * typeck.c: ANSIFY function definitions.
121         (comp_array_types): Take redeclaration bool parameter.
122         (comptypes): Rearrange STRICT handling.
123         (at_least_as_qualified_p, more_qualified_p,
124         comp_cv_qualification): Cache cv quals.
125         (compparms): Rearrange loop.
126
127 2003-06-18  Nathan Sidwell  <nathan@codesourcery.com>
128
129         * cp-tree.h (COMPARE_RELAXED): Rename to ...
130         (COMPARE_DERIVED): ... here. Adjust comment.
131         (resolve_typename_type_in_current_instantiation): Remove.
132         (cp_tree_equal, comptypes): Return a bool.
133         * cvt.c (convert_to_reference): Adjust comptypes call.
134         * pt.c (template_args_equal, unify,): Adjust cp_tree_equal call.
135         (resolve_typename_type_in_current_instantiation): Remove.
136         * tree.c (cp_tree_equal): Return bool. Cope with TEMPLATE_DECLs and
137         IDENTIFIER_NODEs. Abort if undeciderable. Adjust recursive
138         calls. Refactor code.
139         * typeck.c (comp_array_types): Return bool. Lose callback.
140         parameter. Adjust cp_tree_equal calls.
141         (comptypes): Return bool. Adjust strict handling. Remove relaxed
142         enumeration and java type handling. Deal with typename types here.
143         Adjust recursive and cp_tree_equals calls. Adjust base and derived
144         checking.
145         (comp_target_types): Remove unreachable code. Adjust
146         same_or_base_type_p calls.
147         (ptr_reasonably_similar): Adjust base and derived check.
148
149         * typeck.c (maybe_warn_about_returning_address_of_local): Remove
150         unused calculation.
151         (check_return_expr): Adjust error messages.
152         * cp-tree.def (SCOPE_REF): Correct comment.
153
154 2003-06-17  Mark Mitchell  <mark@codesourcery.com>
155
156         * mangle.c (mangle_conv_op_name_for_type): Correct sprintf format
157         string again.
158
159 2003-06-17  Robert Abeles  <rabeles@archaelogic.com>
160
161         * optimize.c (dump_function): Form complete flag name by
162         prefixing 'fdump-' to string returned by dump_flag_name().
163
164 2003-06-17  Mark Mitchell  <mark@codesourcery.com>
165
166         * mangle.c (mangle_conv_op_name_for_type): Correct sprintf format
167         string.
168
169 2003-06-17  Jason Merrill  <jason@redhat.com>
170
171         PR c++/10929
172         * decl.c (grokfndecl): Don't mark a function inline for
173         -finline-functions if it isn't defined.
174
175 2003-06-17  Mark Mitchell  <mark@codesourcery.com>
176
177         PR c++/10712
178         * class.c (handle_using_decl): Robustify.
179
180         PR c++/11105
181         * cp-tree.h (DECL_CONV_FN_TYPE): New method.
182         * mangle.c (struct globals): Remove internal_mangling_p.
183         (write_unqualified_name): Use DECL_CONV_FN_TYPE.
184         (write_template_parm): Don't write out the level number.
185         (conv_type_names): New variable.
186         (hash_type): New function.
187         (compare_type): Likewise.
188         (mangle_conv_op_name_for_type): Don't try to mangle conversion
189         operator names.
190         * search.c (lookup_conversion_operator): New function.
191         (lookup_fnfields_1): Use it.
192
193 2003-06-17  Andreas Jaeger  <aj@suse.de>
194
195         * except.c: Remove duplicate declaration of push_eh_cleanup.
196
197         * call.c: Remove extra declaration of inhibit_warnings.
198
199 2003-06-16  Nathanael Nerode  <neroden@gcc.gnu.org>
200
201         2003-06-16  Jens-Michael Hoffmann  <jensmh@gmx.de>
202         * mangle.c: Convert to ISO C.
203
204 2003-06-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
205
206         * cp/decl.c, cp/pt.c, cp/search.c, cp/tree.c: Don't use the PTR
207         macro.
208
209 2003-06-16  Nathanael Nerode  <neroden@gcc.gnu.org>
210
211         * tree.c: Convert to ISO C.
212
213 2003-06-16  Kazu Hirata  <kazu@cs.umass.edu>
214
215         * cp-tree.h: Follow spelling conventions.
216         * mangle.c: Likewise.
217         * method.c: Likewise.
218         * parser.c: Likewise.
219
220 2003-06-14  Nathan Sidwell  <nathan@codesourcery.com>
221
222         * decl.c (start_function): Adjust init_function_start call.
223         * method.c (use_thunk): Likewise.
224         * semantics.c (genrtl_start_function): Likewise.
225
226 2003-06-14  Neil Booth  <neil@daikokuya.co.uk>
227
228         * Make-lang.in: Remove c-options.o.
229
230 2003-06-13  Nathanael Nerode  <neroden@gcc.gnu.org>
231
232         * lex.c: Convert to ISO C.
233
234         2003-05-19  Jens-Michael Hoffmann  <jensmh@gmx.de>
235         * init.c: removes use of PARAMS macro.  Use ISO style function
236         declarations.  (Not copyright-significant change.)
237
238         * rtti.c: Remove PARAMS.
239
240         * typeck2.c: Convert to ISO C.
241
242 2003-06-12  Mark Mitchell  <mark@codesourcery.com>
243
244         PR c++/10635
245         * typeck.c (build_c_cast): Check that the destination type is
246         complete.
247
248 2003-06-11  Mark Mitchell  <mark@codesourcery.com>
249
250         PR c++/10432
251         * cp-tree.h (finish_declarator): Remove.
252         * decl.c (cp_finish_decl): Make sure to pop_nested_class even for
253         erroneous declarations.
254         * semantics.c (finish_declarator): Remove.
255
256 2003-06-11  Roger Sayle  <roger@eyesopen.com>
257
258         * decl2.c (generate_ctor_or_dtor_function): Avoid expanding a
259         global static constructor/destructor if it will be empty, i.e.
260         either doesn't call any ctors/dtors or only calls pure or const
261         ctors/dtors.
262
263 2003-06-11  Mark Mitchell  <mark@codesourcery.com>
264
265         * mangle.c (tm_p.h): Include it.
266         * Make-lang.in (cp/mangle.o): Depend on $(TM_P_H).
267
268         PR c++/11131
269         * tree.c (cp_cannot_inline_fn): Check for "inline" before
270         instantiation.
271
272 2003-06-10  Jason Merrill  <jason@redhat.com>
273
274         PR c++/10968
275         * pt.c (mark_decl_instantiated): Clear DECL_COMDAT.
276
277 2003-06-10  Andrew Pinski  <pinskia@physics.uc.edu>
278
279         * decl.c (start_cleanup_fn): Move static 'counter' out, mark with GTY.
280         (start_cleanup_cnt): New.
281
282 2003-06-10  Mark Mitchell  <mark@codesourcery.com>
283
284         PR c++/11131
285         * cp-tree.h (template_for_substitution): Declare.
286         * decl2.c (mark_used): Use it when figuring out whether or not a
287         function is inline.
288         * pt.c (template_for_substitution): Give it external linkage.
289         * tree.c (cp_cannot_inline_tree_fn): Instantiate as early as
290         possible.
291
292 2003-06-09  Zack Weinberg  <zack@codesourcery.com>
293
294         PR 8861
295         * mangle.c (write_real_cst): New function.  Implement
296         ABI-compliant mangling of floating-point literals when
297         -fabi-version>=2; provide backward compatibility with 3.3 when
298         -fabi-version=1 (with warning).  Clarify commentary.
299         (write_template_arg_literal): Use write_real_cst.
300
301 2003-06-07  Andreas Jaeger  <aj@suse.de>
302
303         * cp/decl.c (xref_tag): Remove undefined macro NONNESTED_CLASSES.
304
305 2003-06-07  Neil Booth  <neil@daikokuya.co.uk>
306
307         * cp-lang.c (LANG_HOOKS_DECODE_OPTON): Drop.
308         (LANG_HOOKS_HANDLE_OPTION): Override.
309         * cp-tree.h (cxx_init_options): Update.
310         * lex.c (cxx_init_options): Update.
311
312 Thu Jun  5 18:33:40 CEST 2003  Jan Hubicka  <jh@suse.cz>
313
314         * Make-lang.in:  Add support for stageprofile and stagefeedback
315
316 2003-06-04  J"orn Rennecke <joern.rennecke@superh.com>
317
318         * decl.c (grokdeclarator): Error_mark_node in, error_mark_node out.
319
320 2003-06-04  Andreas Jaeger  <aj@suse.de>
321
322         * g++spec.c (lang_specific_driver): Remove ALT_LIBM usage.
323
324 2003-06-03  Jason Merrill  <jason@redhat.com>
325
326         * cp/cp-tree.h (CP_AGGREGATE_TYPE_P): Accept vectors.
327
328         * cp/decl.c (reshape_init): Handle vectors.
329
330         * testsuite/g++.dg/init/array10.C: New.
331
332 2003-06-03  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
333
334         PR c++/10940
335         * pt.c (check_explicit_specialization): Check for 'static'
336         earlier.
337
338 2003-05-31  Diego Novillo  <dnovillo@redhat.com>
339
340         * class.c (dump_array): Call CONSTRUCTOR_ELTS to access
341         the operand of a CONSTRUCTOR node.
342
343 2003-05-31  Gabriel Dos Reis <gdr@integrable-solutions.net>
344
345         * decl.c (cp_binding_level::this_entity): Rename from this_class.
346         (cxx_scope_descriptor): New function.
347         (cxx_scope_debug): Likewise.
348         (push_binding_level): Use it.
349         (pop_binding_level): Likewise.
350         (suspend_binding_level): Likewise.
351         (resume_binding_level): Likewise.
352         (pushlevel_class): Adjust use of this_class.
353         (pushtag): Likewise.
354         (lookup_name_real): Likewise.
355         (global_scope_name): New variable.
356         (initialize_predefined_identifiers): Initialize it.
357         (push_namespace): Use it.
358         (make_cxx_scope): New function.
359         (pushlevel): Use it.
360         (pushlevel_class): Likewise.
361         (push_binding_level): Simplify.  Loose the last two arguments.
362         (make_binding_level): Remove.
363         (initial_push__namespace_scope): New function.
364         (push_namespace): Use it.  Simplify.
365         (cxx_init_decl_processing): Likewise.
366         (declare_namespace_level): Remove.
367
368 2003-05-31  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
369
370         PR c++/10956
371         * pt.c (instantiate_decl): Don't use full template arguments if
372         we are dealing with specializations.
373
374 2003-05-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
375
376         * decl.c (ENABLE_SCOPE_CHECKING): Rename from DEBUG_BINDING_LEVELS.
377         (binding_depth): Unconditionally define.
378         (is_class_level): Likewise.
379         (indent): Likewise.  Take an indenting parameter.
380         (push_binding_level): Remove conditional definittion.
381         (pop_binding_level): Likewise.
382         (suspend_binding_level): Likewise.
383         (resume_binding_level): Likewise.
384         (pushlevel): Likewise.
385         (pushlevel_class): Likewise.
386         (poplevel_class): Likewise.
387         (pop_everything): Likewise.
388
389 2003-05-27  Gabriel Dos Reis <gdr@integrable-solutions.net>
390
391         * name-lookup.h (global_scope_p): New macro.
392         * decl.c (pop_binding_level): Use it.  Don't refer directly to
393         global_binding_level.
394         (suspend_binding_level): Likewise.
395         (global_bindings_p): Likewise.
396         (print_other_binding_stack): Likewise.
397         (print_binding_stack): Likewise.
398         (maybe_push_to_top_level): Likewise.
399         (pushdecl_namespace_level): Likewise.
400         (cxx_init_decl_processing): Likewise.
401         (start_decl): Likewise.
402         (cp_finish_decl): Likewise.
403         (start_function): Likewise.
404         (global_binding_level): Remove.
405
406 2003-05-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
407
408         * parser.c (cp_parser_explicit_instantiation): Restore old
409         access before template instantiation.
410
411 2003-05-23  Geoffrey Keating  <geoffk@apple.com>
412
413         * lang-specs.h: Use -o to specify preprocessor's output file.
414         Make -no-integrated-cpp work when building PCH files.
415
416 2003-05-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
417
418         PR c++/10682
419         * pt.c (instantiate_class_template): Use DECL_ARTIFICIAL to
420         check for implicitly created typedef to an enum.
421
422 2003-05-21  Jason Merrill  <jason@redhat.com>
423
424         * init.c (build_vec_delete): Copy the address into a temporary
425         variable before calling build_vec_delete_1.
426         * decl2.c (delete_sanity): Don't call stabilize_reference.
427
428 2003-05-21  Nathan Sidwell  <nathan@codesourcery.com>
429
430         * pt.c (register_specialization): Update the decl's location,
431         if necessary.
432         (check_explicit_specialization): Likewise.
433
434 2003-05-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
435
436         * error.c (dump_expr): Use HOST_WIDE_INT_PRINT_DOUBLE_HEX.
437
438 2003-05-21  Danny Smith  <dannysmith@users.sourceforge.net>
439
440         PR c++/9738
441         * decl.c (duplicate_decls): Re-invoke make_decl_rtl
442         if the old decl had instantiated DECL_RTL.
443         (Base on Richard Henderson 2003-05-13 patch to c-decl.c).
444
445 2003-05-19  Matt Austern  <austern@apple.com>
446
447         * lang-options.h: Document -Wno-invalid-offsetof
448         * typeck.c (build_class_member_access_expr): Don't complain about
449         (Foo *)p->x for non-POD Foo if warn_invalid_offset is zero.
450
451 2003-05-18 Andrew Pinski <pinskia@physics.uc.edu>
452
453         * name-lookup.c (free_binding_entry): fix where the GTY markers are.
454         (binding_entry_make): Make entry->chain NULL after getting an entry.
455         fix the spelling of chain in a comment.
456         (binding_table_free): speed up by having temporary variable.
457         (binding_table_new): set table->chain to be NULL after allocating
458         a table.
459         (cxx_binding_make): use gcc_alloc instead of ggc_alloc_cleared and set
460         binding->previous to NULL after getting an binding for speed.
461
462 2003-05-18  Gabriel Dos Reis  <gdr@integrable-solutions.net>
463
464         * cp-tree.h (struct lang_type_class): Replace data member tags
465         with hash-table nested_udts.
466         (CLASSTYPE_NESTED_UTDS): Rename from CLASSTYPE_TAGS.
467         * class.c (unreverse_member_declarations): Don't touch
468         CLASSTYPE_TAGS.
469         (pushclass): Use cxx_remember_type_decls.
470         * decl.c (struct cp_binding_level): Replace data member tags with
471         hash-table type_decls.
472         (pop_binding_level): Handle level->type_decls.
473         (kept_level_p): Adjust.
474         (poplevel): Remove unused local variable.
475         (bt_print_entry): New function.
476         (print_binding_level): Use it.
477         (push_namespace): Build current_binding_level->type_decls.
478         (maybe_process_template_type_declaration): Adjust.
479         (pushtag): Likewise.
480         (clear_anon_tags): Use binding_table_remove_anonymous_types.
481         (gettags): Remove.
482         (cxx_remember_type_decls):  Rename from storetags.  Adjust.
483         (lookup_tag): Use binding_table_find_anon_type.  Tidy.
484         (lookup_tag_reverse): Use binding_table_reverse_maybe_remap.
485         (cxx_init_decl_processing): Build global_binding_level->type_decls.
486         (store_parm_decls): Remove pointless code.
487         * name-lookup.c (free_binding_entry): New variable.
488         (ENTRY_INDEX): New macro.
489         (struct binding_table_s): New datatype.
490         (binding_entry_make): New function.
491         (binding_entry_free): Likewise.
492         (binding_table_construct): Likewise.
493         (binding_table_free): Likewise.
494         (binding_table_new): Likewise.
495         (binding_table_expand): Likewise.
496         (binding_table_insert): Likewise.
497         (binding_table_find): Likewise.
498         (binding_table_find_anon_type): Likewise.
499         (binding_table_reverse_maybe_remap): Likewise.
500         (binding_table_remove_anonymous_types): Likewise.
501         (binding_table_foreach): Likewise.
502         * name-lookup.h (binding_table): New type.
503         (binding_entry): Likewise.
504         (bt_foreach_proc): Likewise.
505         (struct binding_entry_s): New datatype.
506         (SCOPE_DEFAULT_HT_SIZE): New macro.
507         (CLASS_SCOPE_HT_SIZE): Likewise.
508         (NAMESPACE_ORDINARY_HT_SIZE): Likewise.
509         (NAMESPACE_STD_HT_SIZE): Likewise.
510         (GLOBAL_SCOPE_HT_SIZE): Likewise.
511         (binding_table_new): Declare.
512         (binding_table_free): Likewise.
513         (binding_table_insert): Likewise.
514         (binding_table_find_anon_type): Likewise.
515         (binding_table_reverse_maybe_remap): Likewise.
516         (binding_table_remove_anonymous_types): Likewise.
517         (binding_table_foreach): Likewise.
518         (binding_table_find): Likewise.
519         (cxx_remember_type_decls): Likewise.
520         * pt.c (bt_instantiate_type_proc): New function.
521         (do_type_instantiation): Use it.
522         * search.c (lookup_field_r): Use binding_table_find.
523
524 2003-05-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
525
526         * semantics.c (perform_deferred_access_checks): Don't discard
527         checked access.
528
529 2003-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
530
531         * error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
532         libiberty VA_ macros, always use stdarg.
533         * rtti.c (create_pseudo_type_info): Likewise.
534         * tree.c (build_min_nt, build_min): Likewise.
535
536 2003-05-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
537
538         * ptree.c (cxx_print_type, cxx_print_xnode): Use string
539         concatentation on HOST_WIDE_INT_PRINT_* format specifier to
540         collapse multiple function calls into one.
541         * tree.c (debug_binfo): Likewise.
542
543 2003-05-15  Jason Merrill  <jason@redhat.com>
544
545         PR c++/5388
546         * call.c (conditional_conversion): Don't consider implicit
547         conversions if T2 is a base of T1.
548         * cp-tree.h (DERIVED_FROM_P, UNIQUELY_DERIVED_FROM_P): Make boolean.
549         (ACCESSIBLY_UNIQUELY_DERIVED_P, PUBLICLY_UNIQUELY_DERIVED_P): Likewise.
550
551         * parser.c (cp_parser_primary_expression): Convert a static data
552         member from reference.
553
554 2003-05-15  Mark Mitchell  <mark@codesourcery.com>
555
556         * call.c (build_op_delete_call): Avoid creating unnecessary types.
557         * class.c (instantiate_type): Remove tests for tf_no_attributes.
558         * cp-tree.h (tsubst_flags_t): Remove tf_no_attributes.
559         (COMPARE_NO_ATTRIBUTES): Remove.
560         * typeck.c (comptypes): Do not check COMPARE_NO_ATTRIBUTES.
561
562         PR c++/8385
563         * semantics.c (finish_typeof): Refine type-dependency check.
564
565 2003-05-13  Jason Merrill  <jason@redhat.com>
566
567         * typeck.c (build_modify_expr): Don't always stabilize the lhs and
568         rhs.  Do stabilize the lhs of a MODIFY_EXPR used on the lhs.
569
570 2003-05-11  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
571
572         * method.c (synthesize_method): Call push/pop_deferring_access_checks.
573
574 2003-05-11  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
575
576         PR c++/10230, c++/10481
577         * semantics.c (finish_non_static_data_member): Handle when the
578         non-static member is not from a base of the current class type.
579
580 2003-05-11  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
581
582         PR c++/10552
583         * pt.c (tsubst_copy): Handle TEMPLATE_DECL that is a member class
584         template and has dependent context.
585
586 2003-05-10  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
587
588         * pt.c (instantiate_decl): Call push/pop_deferring_access_checks.
589
590 2003-05-10  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
591
592         PR c++/9252
593         * cp-tree.h (saved_scope): Remove check_access field.
594         (tsubst_flags_t): Remove tf_parsing.
595         * decl.c (maybe_push_to_top_level): Don't initialize
596         scope_chain->check_access.
597         (make_typename_type, make_unbound_class_template): Don't use
598         tf_parsing.
599         (register_dtor_fn): Use push/pop_deferring_access_checks
600         instead of scope_chain->check_access.
601         * method.c (use_thunk): Likewise.
602         * parser.c (cp_parser_explicit_instantiation
603         (cp_parser_constructor_declarator_p): Don't call
604         push/pop_deferring_access_checks here.
605         (cp_parser_template_argument, cp_parser_class_name): Don't use
606         tf_parsing.
607         (yyparse): Check flag_access_control.
608         * pt.c (instantiate_class_template): Call
609         push/pop_deferring_access_checks.
610         * semantics.c (push_deferring_access_checks): Propagate
611         dk_no_check.
612         (perform_or_defer_access_check): Make sure basetype_path is
613         a type before comparison.
614         * call.c (build_op_delete_call, build_over_call): Use
615         perform_or_defer_access_check.
616         * class.c (alter_access): Likewise.
617         * init.c (build_offset_ref): Likewise.
618         * lex.c (do_identifier): Likewise.
619         * method.c (hack_identifier): Likewise.
620         * search.c (lookup_member): Likewise.
621         * semantics.c (finish_non_static_data_member): Likewise.
622         (simplify_aggr_init_exprs_r): Use push/pop_deferring_access_checks
623         instead of flag_access_control.
624
625 2003-05-10  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
626
627         PR c++/9554
628         * parser.c (cp_parser_class_name): Remove check_access parameter.
629         All caller adjusted.  Update declaration.
630         (cp_parser_lookup_name): Likewise.
631         * semantics.c (push_deferring_access_checks): Change parameter type
632         to enum deferring_kind.  All caller adjusted.
633         (resume_deferring_access_checks): Adjust to use new enum.
634         (stop_deferring_access_checks): Likewise.
635         (perform_or_defer_access_check): Likewise.
636         * cp-tree.h (deferring_kind): New enum.
637         (deferred_access): Adjust field type.
638         (push_deferring_access_checks): Update declaration.
639
640 2003-05-09  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
641
642         PR c++/10555, c++/10576
643         * pt.c (lookup_template_class): Handle class template with
644         multiple levels of parameters when one of the levels contain
645         errors.
646
647 2003-05-08  Jason Merrill  <jason@redhat.com>
648
649         * init.c (build_new_1): Don't reuse a TARGET_EXPR in an
650         expression.  Undo some of the recent reorg.
651
652 2003-05-07  Richard Henderson  <rth@redhat.com>
653
654         PR c++/10570
655         * cfns.gperf: Comment out POSIX thread cancellation points,
656         plus abort and raise.
657         * cfns.h: Regenerate.
658
659 2003-05-07  Jason Merrill  <jason@redhat.com>
660
661         * call.c (build_conditional_expr): Don't assume that the folded
662         expression has result_type.
663
664 2003-05-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
665
666         * typeck.c (build_unary_op): Deal with const qualifier in
667         invalid pointer-to-member earlier.
668
669 2003-05-05  Jason Merrill  <jason@redhat.com>
670
671         PR c++/9537
672         * call.c (conditional_conversion): Build an RVALUE_CONV if
673         we're just changing the cv-quals.
674         (build_conditional_expr): Don't call convert to change
675         cv-quals.
676
677 2003-05-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
678
679         PR c++/10496
680         * typeck.c (build_unary_op): Don't output const qualifier when
681         output invalid pointer-to-member diagnostics.
682
683 2003-05-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
684
685         * decl.c: Fix typos.
686
687 2003-05-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
688
689         PR c++/4494
690         * decl.c (start_function): Use same_type_p to check return type
691         of main.
692
693 2003-05-03  Zack Weinberg  <zack@codesourcery.com>
694
695         PR c/10604
696         * cp/typeck.c (build_x_compound_expr): No need to check
697         extra_warnings as well as warn_unused_value.
698
699 2003-05-03  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
700
701         PR c++/9364, c++/10553, c++/10586
702         * decl.c (make_typename_type): Don't crash on illegal code.
703
704 2003-05-03  Nathan Sidwell  <nathan@codesourcery.com>
705
706         * class.c (finish_struct): Use location_t and input_location
707         directly.
708         * decl.c (make_label_decl): Likewise.
709         (use_label): Likewise.
710         * decl2.c (warn_if_unknown_interface): Likewise.
711         (start_static_initialization_or_destruction): Likewise.
712         (generate_ctor_or_dtor_function): Likewise.
713         (finish_file): Likewise.
714         * error.c (print_instantiation_full_context): Likewise.
715         * init.c (create_temporary_var): Likewise.
716         * method.c (synthesize_method): Likewise.
717         * parser.c (cp_token): Likewise.
718         (cp_lexer_set_source_position_from_token): Likewise.
719         (cp_lexer_get_preprocessor_token): Likewise.
720         (cp_parser_statement): Likewise.
721         * pt.c (tsubst_friend_function): Likewise.
722         (instantiate_class_template): Likewise.
723         (tsubst_decl): Likewise.
724         (tsubst): Likewise.
725         (instantiate_decl): Likewise.
726         * semantics.c (begin_class_definition): Likewise.
727         (expand_body): Likewise.
728
729 2003-05-01  Nathan Sidwell  <nathan@codesourcery.com>
730
731         * class.c (finish_struct): Rename lineno to input_line.
732         * decl.c (push_binding_level, pop_binding_level,
733         suspend_binding_level, resume_binding_level, make_label_decl,
734         use_label, start_function): Likewise.
735         * decl2.c (warn_if_unknown_interface,
736         start_static_initialization_or_destruction,
737         generate_ctor_or_dtor_function, finish_file): Likewise.
738         * error.c (cp_line_of, print_instantiation_full_context,
739         print_instantiation_context): Likewise.
740         * except.c (check_handlers_1, check_handlers): Likewise.
741         * init.c (create_temporary_var): Likewise.
742         * method.c (use_thunk, synthesize_method): Likewise.
743         * parser.c (cp_lexer_set_source_position_from_token,
744         cp_lexer_get_preprocessor_token): Likewise.
745         * pt.c (push_tinst_level, pop_tinst_level,
746         tsubst_friend_function, instantiate_class_template, tsubst_decl,
747         tsubst, tsubst_expr, instantiate_decl): Likewise.
748         * semantics.c (genrtl_try_block, finish_label_stmt,
749         begin_class_definition, expand_body,
750         genrtl_finish_function): Likewise.
751         * tree.c (build_min_nt, build_min): Likewise.
752
753 2003-05-01  Mark Mitchell  <mark@codesourcery.com>
754
755         * decl2.c (comdat_linkage): Don't externalize explicit
756         instantiations.
757
758 2003-05-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
759
760         PR c++/10554
761         * decl2.c (do_class_using_decl): Check if operand 0 of SCOPE_REF
762         is not NULL.
763
764 2003-05-01  Steven Bosscher  <steven@gcc.gnu.org>
765
766         * cp-tree.h (struct lang_id2): Remove.  Move fields from here...
767         (struct lang_identifier): ... to here.
768         (LANG_ID_FIELD): Remove.
769         (SET_LANG_ID): Remove.
770         (IDENTIFIER_LABEL_VALUE): Adjust for new lang_identifier.
771         (SET_IDENTIFIER_LABEL_VALUE): Likewise.
772         (IDENTIFIER_IMPLICIT_DECL): Likewise.
773         (SET_IDENTIFIERL_IMPLICIT_DECL): Likewise.
774         (IDENTIFIER_ERROR_LOCUS): Likewise.
775         (SET_IDENTIFIER_ERROR_LOCUS): Likewise.
776
777 2003-05-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
778
779         PR c++/8772
780         * pt.c (convert_template_argument): Correct diagnostic.
781
782 2003-04-30  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
783
784         PR c++/9432, c++/9528
785         * decl2.c (validate_nonmember_using_decl): Handle SCOPE_REF.
786
787 2003-04-30  Garbiel Dos Reis  <gcc@integrable-solutions.net>
788
789         * decl.c (check_previous_goto_1): Adjust prototype.
790         (check_previous_goto): Adjust use.
791         (check_switch_goto): Likewise.
792         (use_label): Adjust.
793         (check_previous_goto_1): Don't use pedwarn_with_file_and_line.
794         (struct named_label_use_list): Use location_t datatype.
795
796 2003-04-29  Mark Mitchell  <mark@codesourcery.com>
797
798         PR c++/10551
799         * pt.c (mark_decl_instantiated): Defer all explicit instantiations
800         that have not yet been written out.
801
802 2003-04-29  Mark Mitchell  <mark@codesourcery.com>
803
804         PR c++/10549
805         * class.c (layout_class_type): Mark overlong bitfields as having
806         the maximum size permitted by their type, after layout.
807
808         PR c++/10527
809         * error.c (dump_expr): Correctly handling of NEW_EXPR.4
810
811 2003-04-29  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
812
813         * call.c (build_operator_new_call): Fix typo.
814         * lang-options.h: Likewise.
815
816 2003-04-29  Mark Mitchell  <mark@codesourcery.com>
817
818         PR c++/10515
819         * cp-tree.h (lookup_field_1): Declare it.
820         * search.c (lookup_field_1): Make it public.
821         * decl.c (reshape_init): Handle designated initializers.
822
823         * decl.c (maybe_commonize_var): Further tweak support for systems
824         without weak symbols.
825
826 2003-04-27  Mark Mitchell  <mark@codesourcery.com>
827
828         * decl.c (maybe_commonize_var): Fix thinko in last patch.
829
830 2003-04-27  Mark Mitchell  <mark@codesourcery.com>
831
832         PR c++/10506
833         * method.c (use_thunk): Decrement immediate_size_expand.
834
835         PR c++/10503
836         * cp-tree.h (DECL_VAR_MARKED_P): New macro.
837         (DECL_MAYBE_TEMPLATE): Remove.
838         * class.c (fixed_type_or_null): Avoid infinite recursion.
839
840         * decl.c (maybe_commonize_var): Make the code match the comments.
841         * pt.c (instantiate_decl): Move call to import_export_decl.
842
843 2003-04-26  Mark Mitchell  <mark@codesourcery.com>
844
845         * decl2.c (finish_file): Fix merge botch.
846
847 2003-04-25  Mark Mitchell  <mark@codesourcery.com>
848
849         * decl2.c (finish_file): Don't call import_export_decl for
850         functions that are not defined.
851         (handle_class_head): Robustify.
852         * pt.c (instantiate_decl): Do not call cp_finish_decl for
853         variables that are not defined.
854
855 2003-04-24  Sylvain Pion  <Sylvain.Pion@mpi-sb.mpg.de>
856
857         * call.c (print_z_candidates): Fix off by one error.
858
859 2003-04-24  Nathan Sidwell  <nathan@codesourcery.com>
860
861         PR c++/10337
862         * call.c (joust): Don't warn about conversion ops that are exact
863         or cv-conversions. Rearrange to avoid multiple type comparisons.
864
865 2003-04-23  Mark Mitchell  <mark@codesourcery.com>
866
867         PR c++/10471
868         * call.c (build_cxx_call): Robustify.
869
870 2003-04-23  Neil Booth  <neil@daikokuya.co.uk>
871
872         * Make-lang.in (lex.o): Remove mbchar.h.
873         * lex.c (MULTIBYTE_CHARS): Lose.
874         * parser.c (cp_lexer_get_preprocessor_token): CPP_OTHER handled
875         in c-lex.c.
876
877 2003-04-23  Mark Mitchell  <mark@codesourcery.com>
878
879         PR c++/9847
880         * cp-tree.h (duplicate_tag_error): Remove.
881         * class.c (duplicate_tag_error): Remove.
882         * semantics.c (begin_class_definition): Return immediately for a
883         duplicate class definition.
884
885         PR c++/10451
886         * decl.c (grokdeclarator): Correct logic for "mutable" errors.
887
888 2003-04-22  Mark Mitchell  <mark@codesourcery.com>
889
890         PR c++/10446
891         * search.c (lookup_fnfields_1): Handle empty slots in the method
892         vector.
893
894         PR c++/10428
895         * decl.c (check_elaborated_type_specifier): New function, split
896         out from ...
897         (xref_tag): ... here.  Use the new function in more places.
898
899         * rtti.c (throw_bad_typeid): Use build_cxx_call.
900
901 2003-04-21  Mark Mitchell  <mark@codesourcery.com>
902
903         * call.c (build_over_call): Use build_cxx_call.
904         (build_cxx_call): New method, split out of build_over_call.
905         * cp-tree.h (language_function): Add can_throw.
906         (build_cxx_call): Declare it.
907         * decl.c (finish_function): If a function does not contain any
908         calls to functions that can throw an exception, indicate that
909         fact.
910         * decl2.c (mark_used): Do not defer the instantiation of
911         functions, if the current function does not throw.
912         * optimize.c (maybe_clone_body): Copy TREE_NOTHROW to the clones.
913         * pt.c (instantiate_decl): Make sure import_export_decl is called
914         before emitting things.
915         * rtti.c (throw_bad_cast): Use build_cxx_call.
916         (build_dynamic_cast_1): Likewise.
917         * typeck.c (build_function_call): Likewise.
918
919 2003-04-21  Nathan Sidwell  <nathan@codesourcery.com>
920
921         PR c++/9881
922         * typeck.c (build_unary_op): Fold all COMPONENT_REF addr
923         expressions. Reverts my 2002-08-08 patch.
924
925         * typeck.c (comp_ptr_ttypes_real): Swap final && operands for
926         cheaper early exit.
927
928 2003-04-20  Nathan Sidwell  <nathan@codesourcery.com>
929
930         * cp/decl2.c (start_static_storage_duration_function): Take count
931         arg, don't check if it wraps round.
932         (generate_ctor_or_dtor_function): Add locus arg, use it.
933         (generate_ctor_and_dtor_functions_for_priority): Data arg is a
934         locus.
935         (finish_file): Set line numbers to past EOF for synthesized
936         functions.
937
938 2003-04-20  Nathan Sidwell  <nathan@codesourcery.com>
939
940         PR c++/10405
941         * search.c (lookup_field_1): Final scan goes backwards for
942         types, forwards for non-types.
943
944 2003-04-17  Roger Sayle  <roger@eyesopen.com>
945
946         PR c/10375
947         * decl.c (duplicate_decls): Preserve "const", "noreturn" and
948         "nothrow" function attributes.
949
950 2003-04-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
951
952         PR c++/10347
953         * pt.c (type_dependent_expression_p): Handle array new.
954
955 2003-04-15  Mark Mitchell  <mark@codesourcery.com>
956
957         PR c++/10381
958         * parser.c (cp_parser_primary_expression): Reorganize logic for
959         dealing with name lookup failures.
960
961 2003-04-15  Jason Merrill  <jason@redhat.com>
962
963         * decl2.c (mark_used): Don't instantiate anything if
964         skip_evaluation.
965
966 2003-04-14  Ziemowit Laski  <zlaski@apple.com>
967
968         * tree.c (build_cplus_array_type_1): Do not call
969         uses_template_parms() on a NULL index_type.
970
971 2003-04-13  Roger Sayle  <roger@eyesopen.com>
972
973         * decl.c (duplicate_decls): Preserve pure and malloc attributes.
974
975 2003-04-12  Mark Mitchell  <mark@codesourcery.com>
976
977         PR c++/10300
978         * init.c (build_new_1): Reorganize.
979
980 2003-04-12  Zack Weinberg  <zack@codesourcery.com>
981
982         * class.c (initialize_array)
983         * decl.c (reshape_init)
984         * decl2.c (build_expr_from_tree)
985         * init.c (build_zero_init)
986         * pt.c (tsubst_copy, tsubst_copy_and_build)
987         * rtti.c (tinfo_base_init, generic_initializer, ptr_initializer)
988         (ptm_initializer, class_initializer, get_pseudo_ti_init)
989         * semantics.c (finish_compound_literal)
990         * typeck.c (build_ptrmemfunc1)
991         * typeck2.c (store_init_value, process_init_constructor)
992         (build_functional_cast): Use build_constructor.
993
994 2003-04-12  Zack Weinberg  <zack@codesourcery.com>
995
996         * call.c (print_z_candidates): Use gcc_gettext_width, not
997         strlen, to determine how much padding to use.
998
999 2003-04-10  Zack Weinberg  <zack@codesourcery.com>
1000
1001         * decl.c: Update all calls to shadow_warning.
1002
1003 2003-04-10  Mark Mitchell  <mark@codesourcery.com>
1004
1005         * class.c (layout_class_type): Correct handling for overlong
1006         bit-fields whose width is the same as an integer type.
1007
1008 2003-04-06  Zack Weinberg   <zack@codesourcery.com>
1009
1010         * cp-tree.def: Make fourth element for all 'c' and 'x' nodes zero.
1011         * cp-lang.c (cp_tree_size): New function.
1012         (LANG_HOOKS_TREE_SIZE): Override.
1013
1014         * cp-tree.h (SOURCE_LOCUS, SRCLOC_FILE, SRCLOC_LINE, struct
1015         tree_srcloc, TS_CP_COMMON, TS_CP_SRCLOC): Kill.
1016         (union lang_tree_node): Remove common and srcloc members.
1017         (build_srcloc_here): Don't prototype.
1018         * decl.c (cp_tree_node_structure): Kill SRCLOC case.
1019         * pt.c (pending_templates): Correct comment.
1020         * tree.c (build_srcloc, build_srcloc_here): Kill.
1021
1022 2003-04-06  Zack Weinberg   <zack@codesourcery.com>
1023
1024         * call.c: Include intl.h.
1025         (print_z_candidate): Always use inform; get rid of errfn
1026         argument. Reorganize so that all the strings get picked up
1027         by xgettext.  Note obligation of caller to pass first argument
1028         through gettext.
1029         (print_z_candidates): Update to match.  Indent second and
1030         successive candidates by strlen() of translated message.
1031         (joust): Restructure ambiguous-conversion pedwarn so that
1032         translators see a complete sentence.  Update calls to
1033         print_z_candidate.
1034
1035         * Make-lang.in (cp/call.o): Update dependencies.
1036
1037 2003-04-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1038
1039         * decl.c (set_current_binding_level): Delete, revert last change.
1040         (current_binding_level): Modify to allow it as as lvalue.
1041
1042 2003-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1043
1044         * name-lookup.c (find_binding): Pass appropriate pointer type to
1045         POP_TIMEVAR_AND_RETURN.
1046
1047 2003-04-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1048
1049         * Make-lang.in (cp-warn): Add $(STRICT_WARN).
1050         * cp-tree.h: Don't insist on having GNUC.
1051
1052 2003-04-03  Jason Merrill  <jason@redhat.com>
1053
1054         * cvt.c (ocp_convert): Only abort if we try to convert an object
1055         of TREE_ADDRESSABLE type.
1056
1057         * class.c (build_vtable): Set DECL_ALIGN here.
1058         (get_vtable_decl): Not here.
1059         (layout_vtable_decl): Or here.
1060         (create_vtable_ptr): Or here.
1061         (layout_class_type): Or here.
1062         (check_bitfield_decl): Don't mess with field alignment.
1063
1064 2003-04-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1065
1066         * operators.def (DEF_SIMPLE_OPERATOR, DEF_ASSN_OPERATOR,
1067         DEF_ASSN_OPERATOR): Delete spurious semi-colon.
1068         * rtti.c (dfs_class_hint_mark): Likewise.
1069
1070         * decl.c (push_local_name, push_class_level_binding,
1071         maybe_inject_for_scope_var): Don't use POP_TIMEVAR_AND_RETURN in
1072         functions returning void.
1073         * decl2.c (add_using_namespace): Likewise.
1074
1075         * decl.c (print_binding_level, print_other_binding_stack,
1076         print_binding_stack): Cast argument of %p specifier to void*.
1077         * ptree.c (cxx_print_decl): Likewise.
1078
1079         * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK,
1080         VAR_FUNCTION_OR_PARM_DECL_CHECK,
1081         VAR_TEMPL_TYPE_OR_FUNCTION_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK,
1082         BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK, LANG_TYPE_CLASS_CHECK,
1083         LANG_TYPE_PTRMEM_CHECK, LANG_DECL_U2_CHECK): Add __extension__.
1084
1085         * decl.c (set_current_binding_level): New macro.  Use throughout
1086         when setting the current binding level.
1087
1088         * cp-tree.h (cp_lvalue_kind, base_access): Delete trailing comma
1089         in enum.
1090         * method.c (mangling_flags): Likewise.
1091
1092         * cp-tree.h (lang_type_header): Add __extension__ and use
1093         CHAR_BITFIELD for members.
1094
1095 2003-04-02  Geoffrey Keating  <geoffk@apple.com>
1096
1097         PR other/9274
1098         * mangle.c: Include gt-cp-mangle.h.
1099         (subst_identifiers): Mark with GTY.
1100         * config-lang.in (gtfiles): Add cp/mangle.c.
1101         * Make-lang.in: (gt-cp-mangle.h): New rule.
1102         (cp/mangle.o): Depends on gt-cp-mangle.h.
1103
1104 2003-04-01  Andrew Pinski  <pinskia@physics.uc.edu>
1105
1106         * config-lang.in (gtfiles): Add \$(srcdir)/cp/name-lookup.c
1107         after \$(srcdir)/cp/name-lookup.h.
1108         * name-lookup.c: (cxx_binding_make): Use ggc_alloc_clearedinstead
1109         of ggc_alloc.  Include gt-cp-name-lookup.h at the end of the file.
1110         * Make-lang.in: (gt-cp-name-lookup.h): Is generated by gengtype.
1111         (cp/name-lookup.o): Depends on gt-cp-name-lookup.h.
1112
1113 2003-03-31  Jason Merrill  <jason@redhat.com>
1114
1115         PR java/10145
1116         * class.c (check_field_decl): Don't set DECL_ALIGN.
1117
1118 2003-03-30  Mark Mitchell  <mark@codesourcery.com>
1119
1120         PR c++/7647
1121         * decl.c (grokdeclarator): Tidy, slightly.
1122         * search.c (lookup_field_1): Add want_type parameter.
1123         (lookup_field_r): Adjust call to lookup_field_1.
1124
1125 2003-03-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1126
1127         * Make-lang.in (cp/name-lookup.o): Add more dependencies.
1128
1129 2003-03-30  Gabriel Dos Reis <gdr@integrable-solutions.net>
1130
1131         * cp-tree.h (binding_for_name: Move to name-lookup.h  Adjust
1132         prototype.
1133         (cxx_scope_find_binding_for_name): Likewise.
1134         * decl.c (find_binding: Move to name-lookup.c.
1135         (binding_for_name): Likewise.
1136         (cxx_scope_find_binding_for_name): Likewise.
1137         (BINDING_LEVEL):  Remove.
1138         (push_binding): Tidy.
1139         (push_class_binding): Likewise.
1140         (pop_binding): Likewise.
1141         (poplevel): Likewise.
1142         (poplevel_class): Likewise.
1143         (set_identifier_type_value_with_scope): Likewise.
1144         (push_overloaded_decl): Likewise.
1145         (lookup_tag): Likewise.
1146         (unqualified_namespace_lookup): Likewise.
1147         (lookup_name_current_level): Likewise.
1148         (maybe_inject_for_scope_var): Likewise.
1149         (namespace_binding): Move to name-lookup.c.
1150         (set_namespace_binding): Likewise.
1151         * decl2.c (lookup_using_namespace): Tidy.
1152         (qualified_lookup_using_namespace): Likewise.
1153         (do_toplevel_using_decl): Likewise.
1154         * name-lookup.c: Include "timevar.h"
1155         * name-lookup.h (cxx_scope):  Declare.
1156         (struct cxx_binding): Lose member "has_level".  Adjust "scope"
1157         member declaration.
1158         (BINDING_SCOPE): Adjust definition.
1159         (BINDING_HAS_LEVEL_P): Remove.
1160
1161 2003-03-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1162
1163         * name-lookup.c: New file.
1164         * name-lookup.h: Likewise..
1165         * decl.c (push_binding): Adjust use cxx_binding_make.
1166         (free_bindings): Move to name-lookup.c
1167         (pop_binding): Use cxx_binding_free.
1168         (binding_for_name): Tidy.
1169         * cp-tree.h: Include "name-lookup.h"
1170         (cxx_binding_make): Move to name-lookup.h
1171         (cxx_binding_clear): Likewise.
1172         (struct cxx_binding): Likewise.
1173         (LOCAL_BINDING_P): Likewise.
1174         (INHERITED_VALUE_BINDING_P): Likewise.
1175         (BINDING_SCOPE): Likewise.
1176         (BINDING_HAS_LEVEL_P): Likewise.
1177         (BINDING_VALUE): Likewise.
1178         (BINDING_TYPE): Likewise.
1179         * config-lang.in (gtfiles): Add cp/name-lookup.h
1180         * Make-lang.in (cp/name-lookup.o): New rule.
1181         (CXX_OBJS): Add cp/name-lookup.o
1182         (CXX_TREE_H): Add cp/name-lookup.h
1183
1184 2003-03-28  Jason Merrill  <jason@redhat.com>
1185
1186         PR c++/10245
1187         * cvt.c (force_rvalue): New fn.
1188         * call.c (build_conditional_expr): Use it.
1189         * cp-tree.h: Declare it.
1190
1191 2003-03-28  Mike Stump  <mrs@apple.com>
1192
1193         * error.c (dump_expr): Add 0x to printed hex numbers to make
1194         output match source code better.
1195
1196 2003-03-28  Mark Mitchell  <mark@codesourcery.com>
1197
1198         PR c++/10218
1199         * decl.c (grokfndecl): Return NULL_TREE for bogus out-of-class
1200         definitions.
1201
1202         * decl2.c (generate_ctor_or_dtor_function): Tolerate a
1203         non-existant ssdf_decls array.
1204         (finish_file): Call generator_ctor_or_dtor_function when there are
1205         static constructors or destructors and no other static
1206         initializations.
1207
1208 2003-03-28  Nathan Sidwell  <nathan@codesourcery.com>
1209
1210         PR c++/10047
1211         * decl2.c (finish_file): Don't warn about explicitly instantiated
1212         inline decls.
1213
1214 2003-03-27  Nathan Sidwell  <nathan@codesourcery.com>
1215
1216         PR c++/10224
1217         * pt.c (lookup_template_class): Only check instantiated args if
1218         they do not contain template parameters.
1219
1220 2003-03-27  Nathan Sidwell  <nathan@codesourcery.com>
1221
1222         PR c++/10158
1223         * parser.c (cp_parser_function_definition): Set
1224         DECL_INITIALIZED_IN_CLASS for members.
1225         * pt.c (instantiate_decl): Only reduce the template args for
1226         friends that are not defined in class.
1227
1228 2003-03-25  Jason Merrill  <jason@redhat.com>
1229
1230         * call.c (print_z_candidate): Change name of first arg to msgid.
1231         (joust): Add comment for translators.
1232
1233 2003-03-24  Nathan Sidwell  <nathan@codesourcery.com>
1234
1235         PR c++/9898, PR c++/383, DR 322
1236         * pt.c (maybe_adjust_types_for_deduction) <DEDUCE_CONV>: Look
1237         through reference types on both PARM and ARG.
1238
1239 2003-03-24  Nathan Sidwell  <nathan@codesourcery.com>
1240
1241         PR c++/10119
1242         * error.c (dump_expr) <BASELINK>: Use dump_expr.
1243         * pt.c (maybe_fold_nontype_args): New function.
1244         (tsubst_copy) <SCOPE_REF>: Subst any template_id args.
1245         <TEMPLATE_ID_EXPR>: Break out folding code, call it.
1246         (tsubst_copy_and_build) <TEMPLATE_ID_EXPR>: Call
1247         maybe_fold_nontype_args.
1248
1249 2003-03-24  Nathan Sidwell  <nathan@codesourcery.com>
1250
1251         PR c++/10026
1252         * decl2.c (arg_assoc_type) <ERROR_MARK>: Don't die.
1253
1254 2003-03-23  Mark Mitchell  <mark@codesourcery.com>
1255
1256         PR c++/7086
1257         * typeck.c (cxx_mark_addressable):  Adjust call to
1258         gen_mem_addressof or put_var_into_stack.
1259
1260 2003-03-22  Nathan Sidwell  <nathan@codesourcery.com>
1261
1262         PR c++/9978, c++/9708
1263         * cp-tree.h (instantiate_template): Add tsubst_flags parameter.
1264         * call.c (add_template_candidate_real): Adjust
1265         instantiate_template call.
1266         * class.c (resolve_address_of_overloaded_function): Likewise.
1267         * decl.c (build_enumerator): Set TREE_CONSTANT.
1268         * pt.c (check_instantiated_args): New.
1269         (push_inline_template_parms_recursive): Set TREE_CONSTANT,
1270         TREE_READONLY.
1271         (build_template_parm_index): Copy TREE_CONSTANT, TREE_READONLY.
1272         (reduce_template_parm_level): Likewise.
1273         (process_template_parm): Likewise.
1274         (check_explicit_specialization): Adjust instantiate_template call.
1275         (convert_template_argument): Don't check non-type argument here.
1276         (lookup_template_class): Check them here.
1277         (tsubst_friend_function): Adjust instantiate_template call.
1278         (instantiate_template): Add tsubst_flags parameter, use it. Check
1279         instantiated args.
1280
1281 2003-03-21  Zack Weinberg  <zack@codesourcery.com>
1282
1283         * decl.c: Update calls to shadow_warning.
1284
1285 2003-03-21  Nathan Sidwell  <nathan@codesourcery.com>
1286
1287         PR c++/9898
1288         * error.c (dump_decl) [CONST_DECL]: Print '<enumerator>'.
1289         (dump_expr) [CONSTRUCTOR]: Print default ctor as a function call.
1290
1291 2003-03-20  Mark Mitchell  <mark@codesourcery.com>
1292
1293         * cp/decl2.c (arg_assoc_class): Correct check for namespace-scope
1294         friends.
1295         * cp/pt.c (instantiate_class_template): Fix formatting.
1296
1297 2003-03-14  Matt Austern  <austern@apple.com>
1298
1299         * cp-tree.h (unemitted_tinfo_decls): Declaration of a new varray.
1300         (unemitted_tinfo_decl_p): Remove.
1301         (emit_tinfo_decl): Change declaration to remove unused parameter.
1302         * decl2.c (finish_file): Change tinfo emission to loop through
1303         unemitted_tinfo_decls array instead of looping through all decls.
1304         * rtti.c (unemitted_tinfo_decl_p): Declare as static, remove
1305         unused second parameter.
1306         (init_rtti_processing): initialize unemitted_tinfo_decls varray.
1307         (get_tinfo_decls): push new tinfo decl on unemitted_tinfo_decls.
1308         (emit_tinfo_decl): remove unused second parameter, add assertion
1309         that decl hasn't already been emitted.
1310
1311 2003-03-19  Nathanael Nerode  <neroden@gcc.gnu.org>
1312
1313         * dump.c (cp_dump_tree), cp-tree.h (cp_dump_tree): Change return
1314         type from 'int' to 'bool'. Replace 0 and 1 with true and false in
1315         return statements.
1316
1317 2003-03-19  Jason Merrill  <jason@redhat.com>
1318
1319         PR c++/8316, c++/9315, c++/10136
1320         * call.c (print_z_candidate): Split out from...
1321         (print_z_candidiates): ...here.
1322         (joust): Use it.
1323
1324 2003-03-17  Roger Sayle  <roger@eyesopen.com>
1325
1326         PR c++/10031
1327         * decl.c (duplicate_decls): Use the new type when prototyping
1328         anticipated decls, even when the types match.  This defines the
1329         exception list for the built-in function.
1330
1331 2003-03-17  Jason Merrill  <jason@redhat.com>
1332
1333         PR c++/10091
1334         * typeck.c (build_class_member_access_expr): Compare
1335         TYPE_MAIN_VARIANTs.
1336
1337 2003-03-17  Mark Mitchell  <mark@codesourcery.com>
1338
1339         PR c++/9639
1340         * parser.c (cp_parser_declarator_id): Clear parser->scope.
1341
1342 2003-03-16  Jason Merrill  <jason@redhat.com>
1343
1344         PR c++/9993
1345         * decl.c (finish_function): Only allow the NRVO to use variables
1346         declared at function scope.
1347
1348 2003-03-17  Andreas Jaeger  <aj@suse.de>
1349
1350         * Make-lang.in (cp/TAGS): Remove.
1351
1352 2003-03-16  Nathan Sidwell  <nathan@codesourcery.com>
1353
1354         PR c++/9629
1355         * cp-tree.h (struct language_function): Add in_base_initializer.
1356         (in_base_initializer): define it.
1357         (expand_member_init): Remove INIT param.
1358         * init.c (expand_member_init): Remove INIT param, return the member.
1359         (emit_mem_initializers): Set in_base_initializer.
1360         * class.c (build_base_path): Check in_base_initializer.
1361         * parser.c (cp_parser_mem_initializer): Set in_base_initializer.
1362         * pt.c (tsubst_initializer_list): Likewise.
1363
1364 2003-03-16   Gabriel Dos Reis <gdr@integrable-solutions.net>
1365
1366         * decl.c (binding_for_name): Fix initialization thinko.
1367
1368 2003-03-15  Gabriel Dos Reis <gdr@integrable-solutions.net>
1369
1370         Compile-time improvement: 2/n.
1371         * cp-tree.h (struct cxx_binding): New datatype;
1372         (struct lang_identifier): Use it.
1373         (LOCAL_BINDING_P): Adjust definition.
1374         (INHERITED_VALUE_BINDING_P): Likewise.
1375         (BINDING_SCOPE): Likewise.
1376         (BINDING_HAS_LEVEL_P): Likewise.
1377         (BINDING_VALUE): Likewise.
1378         (BINDING_TYPE): Likewise.
1379         (IDENTIFIER_VALUE): Likewise.
1380         (struct tree_binding): Remove.
1381         (TS_CP_BINDING): Likewise.
1382         ((union lang_tree_node): Remove field "binding".
1383         (cxx_binding_clear): New macro.
1384         (binding_for_name): Adjust return type.
1385         (qualified_lookup_using_namespace): Adjust prototype.
1386         (lookup_using_namespace): Adjust prototype.
1387         (cxx_scope_find_binding_for_name): Declare.
1388         * cp-tree.def: Remove CPLUS_BINDING definition.
1389         * decl.c (push_binding): Adjust local variable type.
1390         (add_binding): Likewise.
1391         (push_class_binding): Likewise.
1392         (pop_binding): Likewise.
1393         (poplevel): Likewise.
1394         (poplevel_class): Likewise.
1395         (free_bindings):  Adjust type.
1396         (find_binding): Adjust return type, add a third parameter. Remove
1397         non-useful assertion now that we use static typing.
1398         (cxx_scope_find_binding_for_name): New function.
1399         (binding_for_name): Use it.  Adjust local variable type. Simplify.
1400         (namespace_binding):  Simplify.
1401         (set_namespace_binding): Likewise.
1402         (set_identifier_type_value_with_scope): Adjust local variable type.
1403         (lookup_tag): Don't type-abuse of local variable 'old'.
1404         (lookup_namespace_name): Likewise.  Allocate binding on stack.
1405         (select_decl): Adjust prototype.
1406         (unqualified_namespace_lookup):  Allocate binding on stack.
1407         Don't type-abuse of local variable 'val'.
1408         (lookup_name_real): Likewise.
1409         (maybe_inject_for_scope_var): Adjust local variable type.
1410         (cp_tree_node_structure): Remove CPLUS_BINDING case label.
1411         (namespace_binding): Adjust logic, simplify.
1412         (BINDING_LEVEL): Adjust definition.
1413         (push_class_level_binding): Adjust local variable type.
1414         (struct cxx_saved_binding): Adjust field 'binding' type.
1415         * decl2.c (ambiguous_decl): Adjust prototype.
1416         (lookup_using_namespace): Adjust local variable type.
1417         (qualified_lookup_using_namespace): Catch type error and correct
1418         ensueing logic error.
1419         (do_nonmember_using_decl): Adjust local variable type.  Allocate
1420         temporary cxx_binding on stack.
1421         (do_toplevel_using_decl): Adjust local variable type.
1422         * ptree.c (cxx_print_cxx_binding): New function.
1423         (cxx_print_identifier): Use it.
1424         (cxx_print_xnode): Delete CPLUS_BINDING case label.
1425
1426 2003-03-15  Roger Sayle  <roger@eyesopen.com>
1427
1428         * tree.c (count_functions): Fix whitespace.
1429
1430 2003-03-15  Neil Booth  <neil@daikokuya.co.uk>
1431
1432         * Make-lang.in: Update.
1433
1434 2003-03-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1435
1436         PR c++/6440
1437         * pt.c (maybe_process_partial_specialization): Handle
1438         member class template when enclosing class template is
1439         explicit specialized.
1440         (most_general_template): Stop looking when DECL is already
1441         specialized.
1442
1443 2003-03-13  Jason Merrill  <jason@redhat.com>
1444
1445         PR c++/9420
1446         * search.c (lookup_conversions): Call complete_type here.
1447         * call.c (implicit_conversion): Not here.
1448
1449 2003-03-13  Mark Mitchell  <mark@codesourcery.com>
1450
1451         * decl2.c (do_nonmember_using_decl): Correct handling of
1452         simultaneous type/non-type bindings.
1453
1454         * call.c (initialize_reference): Remove bogus assertion.
1455         * decl.c (build_ptrmemfunc_type): Revert change of 2003-03-09.
1456
1457 2003-03-12  Andrew Lewycky  <andrew@mxc.ca>
1458
1459         PR c++/7050
1460         * expr.c (cxx_expand_expr): Return const0_rtx for throw
1461         expressions.
1462
1463 2003-03-11  Mark Mitchell  <mark@codesourcery.com>
1464
1465         PR c++/9474
1466         * decl2.c (do_nonmember_using_decl): Do not call duplicate decls
1467         to merge old and new declarations.
1468
1469 2003-03-12  Alexandre Oliva  <aoliva@redhat.com>
1470
1471         * g++.1: Remove.
1472         * Make-lang.in (c++.generated-manpages): Build cp/g++.1.
1473         (cp/g++.1): Build it from scratch in the build tree.
1474         (c++.install-man): Depend on it.  Install it from the build tree.
1475         (c++.mostlyclean): Clean it.
1476
1477 2003-03-11  Mark Mitchell  <mark@codesourcery.com>
1478
1479         PR c++/9474
1480         * decl2.c (do_nonmember_using_decl): Do not call duplicate decls
1481         to merge old and new declarations.
1482
1483         PR c++/9924
1484         * decl2.c (do_nonmember_using_decl): Ignore anticipated builtins.
1485
1486 2003-03-11  Jason Merrill  <jason@redhat.com>
1487
1488         PR c++/9820
1489         * search.c (lookup_member): Fix handling of functions in a class
1490         being defined.
1491
1492 2003-03-11  Mark Mitchell  <mark@codesourcery.com>
1493
1494         PR c++/8700
1495         * call.c (convert_class_to_reference): Adjust usage of
1496         splice_viable.
1497         (any_viable): Remove.
1498         (splice_viable): Combine with any_viable.
1499         (print_z_candidates): Avoid printing duplicates.
1500         (build_user_type_conversion_1): Adjust usage of splice_viable.
1501         (build_new_function_call): Likewise.
1502         (build_operator_new_call): Likewise.
1503         (build_object_call): Likewise.
1504         (build_conditional_expr): Likewise.
1505         (build_new_op): Likewise.
1506         (build_new_method_call): Likewise.
1507         (joust): Remove spurious comment.
1508         * cp-tree.h (DECL_FRIENDLIST): Correct documentation.
1509         * decl2.c (arg_assoc_class): Simplify.
1510         * friend.c (add_friend): Likewise.
1511
1512 2003-03-11  Jason Merrill  <jason@redhat.com>
1513
1514         PR c++/8660
1515         * decl2.c (check_classfn): A member template only matches a
1516         member template.
1517
1518 2003-03-11  Neil Booth  <neil@daikokuya.co.uk>
1519
1520         * Make-lang.in (CXX_C_OBJS): Update.
1521         * lang-specs.h: Don't define __GNUG__ here.
1522
1523 2003-03-10  Mark Mitchell  <mark@codesourcery.com>
1524
1525         * call.c (perform_overload_resolution): New function.
1526         (build_new_function_call): Use it.
1527         (build_operator_new_call): Likewise.
1528         (add_candidates): Add explicit_targs and template_only parameters.
1529         (build_new_op): Adjust accordingly.
1530         * cp-tree.h (build_operator_new_call): New function.
1531         (build_function_call_real): Remove.
1532         (build_function_call_maybe): Likewise.
1533         * init.c (build_new_1): Use build_operator_new_call.
1534         * typeck.c (build_function_call_real): Rename to ...
1535         (build_function_call): ... this.
1536
1537 2003-03-10  Devang Patel  <dpatel@apple.com>
1538
1539         PR c++/9394
1540         * g++spec.c (lang_specific_driver): Use DEFAULT_WORD_SWTCH_TAKES_ARG.
1541
1542 2003-03-10  Jason Merrill  <jason@redhat.com>
1543
1544         PR c++/9798
1545         * decl.c (push_using_directive): Push before recursing.
1546
1547         PR c++/9868, c++/9524
1548         * call.c (resolve_scoped_fn_name): Handle the case of a function
1549         pointer member.
1550
1551         * decl2.c (build_offset_ref_call_from_tree): Only mess with 'this'
1552         argument in the pointer-to-member case.
1553
1554 2003-03-09  Mark Mitchell  <mark@codesourcery.com>
1555
1556         PR c++/9373
1557         * cp-lang.c (cxx_get_alias_set): Use alias set zero for
1558         pointers to member functions.
1559
1560         PR c++/8534
1561         * decl.c (build_ptrmemfunc_type): Do not allow default arugments
1562         in pointer-to-member-function types.
1563
1564 2003-03-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1565
1566         * expr.c (cplus_expand_constant): Use C90 prototype style.
1567         (cxx_expand_expr): Likewise.
1568
1569 2003-03-09  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1570
1571         PR c++/9970
1572         * decl.c (duplicate_decls): Only copy DECL_THUNKS for virtual
1573         functions.
1574
1575 2003-03-08  Geoffrey Keating  <geoffk@apple.com>
1576
1577         * lang-specs.h (c++-header): Change .pch to .gch.
1578
1579 2003-03-08  Neil Booth  <neil@daikokuya.co.uk>
1580
1581         * cp-tree.h (cxx_init): Update prototype.
1582         * lex.c (cxx_init): Similarly.
1583
1584 2003-03-08  Mark Mitchell  <mark@codesourcery.com>
1585
1586         PR c++/9823
1587         * cp-tree.h (begin_mem_initializers): Remove.
1588         * parser.c (cp_parser_mem_initializer_list): Inline it here.
1589         Do not call finish_mem_initializers if not in a constructor.
1590         (cp_parser_class_head): Fix typo in error message.
1591         * semantics.c (begin_mem_initializers): Remove.
1592         * testsuite/g++.dg/parser/constructor1.C: New test.
1593
1594         PR c++/9809
1595         * call.c (add_function_candidate): Skip builtin fuctions that have
1596         not yet been declared.
1597
1598         PR c++/9982
1599         * init.c (build_new_1): Correct logic for determining whether or
1600         not to use an array cookie.
1601
1602         PR c++/9524
1603         * parser.c (cp_parser_postfix_expression): Call
1604         finish_non_static_data_member, even when processing_template_decl.
1605
1606         PR c++/9912
1607         * cp-tree.h (is_ancestor): New function.
1608         (handle_class_head): Change prototype.
1609         * decl2.c (is_namespace_ancestor): Rename to ...
1610         (namespace_anecestor): ... this.
1611         (set_decl_namespace): Adjust accordingly.
1612         (handle_class_head): Remove unncessary parameters.
1613         * parser.c (cp_parser_class_head): Check that
1614         nested-name-specifiers are used appropriately.
1615
1616 2003-03-07  Mark Mitchell  <mark@codesourcery.com>
1617
1618         * call.c (reference_binding): Remove REF_IS_VAR parameter.
1619         (implicit_conversion): Adjust call to reference_binding.
1620         (make_temporary_var_for_ref_to_type): Add TYPE parameter.
1621         (initialize_reference): Adjust handling for references bound to
1622         rvalues.
1623         * cp-tree.h (make_temporary_var_for_ref_to_temp): Change
1624         prototype.
1625         (real_non_cast_lvalue_p): New method.
1626         * cvt.c (build_up_reference): Adjust use of
1627         make_temporary_var_for_ref_to_temp.
1628         * tree.c (real_non_cast_lvalue_p): New method.
1629
1630 2003-03-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1631
1632         * except.c (init_exception_processing): Use C90 prototype style.
1633         (cp_protect_cleanup_actions): Likewise.
1634         (prepare_eh_type): Likewise.
1635         (build_eh_type_type): Likewise.
1636         (build_exc_ptr): Likewise.
1637         (do_begin_catch): Likewise.
1638         (dtor_nothrow): Likewise.
1639         (do_end_catch): Likewise.
1640         (push_eh_cleanup): Likewise.
1641         (decl_is_java_type): Likewise.
1642         (choose_personality_routine): Likewise.
1643         (initialize_handler_parm): Likewise.
1644         (expand_start_catch_block): Likewise.
1645         (expand_end_catch_block): Likewise.
1646         (begin_eh_spec_block): Likewise.
1647         (finish_eh_spec_block): Likewise.
1648         (do_allocate_exception): Likewise.
1649         (do_free_exception): Likewise.
1650         (wrap_cleanups_r): Likewise.
1651         (stabilize_throw_expr): Likewise.
1652         (build_throw): Likewise.
1653         (complete_ptr_ref_or_void_ptr_p): Likewise.
1654         (is_admissible_throw_operand): Likewise.
1655         (nothrow_libfn_p): Likewise.
1656         (can_convert_eh): Likewise.
1657         (check_handlers_1): Likewise.
1658         (check_handlers): Likewise.
1659
1660 2003-03-06  Mark Mitchell  <mark@codesourcery.com>
1661
1662         * call.c (merge_conversion_sequences): New function.
1663         (build_conv): Set ICS_USER_FLAG for USER_CONVs.
1664         (convert_class_to_reference): Correct handling of second
1665         standard conversion sequence in a user-defined conversion
1666         sequence.
1667         (build_user_type_conversion_1): Use merge_conversion_sequences.
1668         * cp-tree.def: Add comments for CONV nodes.
1669         * rtti.c (get_tinfo_decl): Use build_address/build_nop.
1670
1671 2003-03-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1672
1673         * error.c (init_error): Use C90 prototype style.
1674         (dump_scope): Likewise.
1675         (dump_qualifiers): Likewise.
1676         (dump_template_argument): Likewise.
1677         (dump_template_argument_list): Likewise.
1678         (dump_template_parameter): Likewise.
1679         (dump_template_bindings): Likewise.
1680         (dump_type): Likewise.
1681         (dump_typename): Likewise.
1682         (class_key_or_enum): Likewise.
1683         (dump_aggr_type): Likewise.
1684         (dump_type_prefix): Likewise.
1685         (dump_type_suffix): Likewise.
1686         (dump_global_iord): Likewise.
1687         (dump_simple_decl): Likewise.
1688         (dump_decl): Likewise.
1689         (dump_template_decl): Likewise.
1690         (dump_function_decl): Likewise.
1691         (dump_parameters): Likewise.
1692         (dump_exception_spec): Likewise.
1693         (dump_function_name): Likewise.
1694         (dump_template_parms): Likewise.
1695         (dump_char): Likewise.
1696         (dump_expr_list): Likewise.
1697         (dump_expr): Likewise.
1698         (dump_binary_op): Likewise.
1699         (dump_unary_op): Likewise.
1700         (type_as_string): Likewise.
1701         (expr_as_string): Likewise.
1702         (decl_as_string): Likewise.
1703         (context_as_string): Likewise.
1704         (lang_decl_name): Likewise.
1705         (cp_file_of): Likewise.
1706         (cp_line_of): Likewise.
1707         (decl_to_string): Likewise.
1708         (expr_to_string): Likewise.
1709         (fndecl_to_string): Likewise.
1710         (code_to_string): Likewise.
1711         (language_to_string): Likewise.
1712         (parm_to_string): Likewise.
1713         (op_to_string): Likewise.
1714         (type_to_string): Likewise.
1715         (assop_to_string): Likewise.
1716         (args_to_string): Likewise.
1717         (cv_to_string): Likewise.
1718         (cxx_print_error_function): Likewise.
1719         (cp_diagnostic_starter): Likewise.
1720         (cp_diagnostic_finalizer): Likewise.
1721         (cp_print_error_function): Likewise.
1722         (function_category): Likewise.
1723         (print_instantiation_full_context): Likewise.
1724         (print_instantiation_partial_context): Likewise.
1725         (maybe_print_instantiation_context): Likewise.
1726         (print_instantiation_context): Likewise.
1727         (cp_printer): Likewise.
1728         (print_integer): Likewise.
1729         (print_non_consecutive_character): Likewise.
1730         (locate_error): Likewise.
1731
1732 2003-03-06  Mark Mitchell  <mark@codesourcery.com>
1733
1734         PR c++/9965
1735         * call.c (reference_binding): Add ref_is_var parameter.
1736         (implicit_conversion): Adjust call to reference_binding.
1737         (initialize_reference): Likewise.
1738
1739         PR c++/9400
1740         * decl.c (pushdecl): Don't check for shadowing of DECL_ARTIFICIAL
1741         PARM_DECLs.
1742
1743         PR c++/9791
1744         * class.c (get_basefndecls): Use lookup_fnfields_1.
1745
1746 2003-03-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1747
1748         PR c++/9188
1749         * parser.c (cp_parser_type_parameter): Remove redundant `expect'
1750         in error message.
1751         (cp_parser_single_declaration): Likewise.
1752
1753 2003-03-05  Jason Merrill  <jason@redhat.com>
1754
1755         PR c++/9440
1756         * call.c (build_conditional_expr): Use convert rather than an
1757         explicit NOP_EXPR.
1758
1759 2003-03-02  Matt Austern  <austern@apple.com>
1760
1761         * decl.c (cp_binding_level): Add static_decls varray member.
1762         (add_decl_to_level): Add static/inline namespace scope
1763         declarations to static_decls array.
1764         (wrapup_global_for_namespace): Pass static_decls only, instead of
1765         all decls, to wrapup_global_declarations/check_global_declarations.
1766         (push_namespace): Initialize static_decls for ordinary namespaces.
1767         (cxx_init_decl_processing): Initialize static_decls for global
1768         namespace.
1769
1770 2003-03-05  Mark Mitchell  <mark@codesourcery.com>
1771
1772         * class.c (end_of_class): Correct thinko.
1773
1774 2003-03-04  Nathanael Nerode  <neroden@gcc.gnu.org>
1775
1776         * config-lang.in: Replace ${libstdcxx_version} by its value.
1777
1778 2003-03-04  Gabriel Dos Reis <gdr@integrable-solutions.net>
1779
1780         * cp-tree.h (cxx_saved_binding): Declare.
1781         (struct saved_scope): Adjust type of field 'old_binding'.
1782         * decl.c (cxx_saved_binding_make): New macro.
1783         (struct cxx_saved_binding): Define.
1784         (store_bindings): Adjust prototype.  Use cxx_saved_binding to save
1785         C++ bindings.
1786         (maybe_push_to_top_level): Adjust local variable type.
1787         (pop_from_top_level): Likewise.
1788
1789 2003-03-04  Tom Tromey  <tromey@redhat.com>
1790
1791         * Make-lang.in (c++.tags): New target.
1792
1793 2003-03-04  Neil Booth  <neil@daikokuya.co.uk>
1794
1795         * Make-lang.in: Update.
1796
1797 2003-03-03  Jason Merrill  <jason@redhat.com>
1798
1799         * decl.c (finish_enum): Do set the type in a template. Simplify.
1800         * pt.c (tsubst_enum, tsubst_copy): Revert last patch.
1801
1802 2003-03-03  Mark Mitchell  <mark@codesourcery.com>
1803
1804         PR c++/9878
1805         * call.c (convert_class_to_reference): Correct conversion
1806         sequences.
1807         (reference_binding): Add ref_bound_directly_to_rvalue_p parameter.
1808         (implicit_conversion): Adjust call to reference_binding.
1809         (add_candidate): Change type of candidates parameter.
1810         (add_function_candidate): Likewise.
1811         (add_conv_candidate): Likewise.
1812         (build_builtin_candidate): Likewise.
1813         (add_builtin_candidate): Likewise.
1814         (add_builtin_candidates): Likewise.
1815         (add_template_candidate_real): Likewise.
1816         (add_template_candidate): Likewise.
1817         (add_template_conv_candidate): Likewise.
1818         (build_user_type_conversion_1): Adjust accordingly.
1819         (build_object_call): Likewise.
1820         (build_conditional_expr): Likewise.
1821         (add_candidates): Likewise.
1822         (build_new_op): Likewise.
1823         (convert_like_real): Use USER_CONV_CAND.  Use build_nop.
1824         (build_new_method_call): Adjust calls to add_function_candidate.
1825         (make_temporary_var_for_ref_to_temp): New function.
1826         (initialize_reference): Add decl parameter.
1827         * class.c (build_rtti_vtbl_entries): Use build_address and
1828         build_nop.
1829         * cp-tree.h (initialize_reference): Change prototype.
1830         (make_temporary_var_for_ref_to_temp): New function.
1831         (build_type_conversion): Change prototype.
1832         (build_address): New function.
1833         (build_nop): Likewise.
1834         * cvt.c (cp_convert_to_pointer): Adjust call to
1835         build_type_conversion.  Avoid indicating redundant NOP_EXPRs.
1836         Use build_nop.
1837         (convert_to_pointer_force): Use build_nop.
1838         (build_up_reference): Use make_temporary_var_for_ref_to_temp.
1839         (convert_to_reference): Adjust call to build_type_conversion.
1840         (ocp_convert): Likewise.
1841         (build_type_conversion): Remove for_sure parameter.
1842         * decl.c (grok_reference_init): Use initialize_reference.
1843         * typeck.c (build_address): New function.
1844         (build_nop): Likewise.
1845         (build_unary_op): Use them.
1846         (build_ptrmemfunc): Tidy slightly.
1847         (convert_for_initialization): Adjust call to
1848         initialize_reference.
1849         * typeck2.c (store_init_value): Remove #if 0'd code.
1850
1851 2003-03-03  Jason Merrill  <jason@redhat.com>
1852
1853         * decl.c (start_function): Clear DECL_NUM_STMTS.
1854
1855         * class.c (get_vtable_decl): Use vtbl_type_node.
1856         (build_primary_vtable): Check for it.
1857
1858 2003-03-02  Aldy Hernandez  <aldyh@redhat.com>
1859
1860         * decl.c (check_initializer): Check for vector_opaque_p.
1861
1862 2003-03-02  Ashif Harji  <asharji@uwaterloo.ca>
1863
1864         * lang-specs.h (default_compilers): Add -no-integrated-cpp flag to
1865           invoke an external cpp during compilation.
1866
1867 2003-03-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1868
1869         * decl.c (duplicate_decls): Convert use of warning_with_decl() to
1870         that of warning().
1871         (start_decl): Likewise.
1872         (start_function): Likewise.
1873
1874 2003-03-01  Neil Booth  <neil@daikokuya.co.uk>
1875
1876         * Make-lang.in (CXX_C_OBJS): Update.
1877
1878 2003-02-28  Mark Mitchell  <mark@codesourcery.com>
1879
1880         PR c++/9892
1881         * pt.c (instantiate_decl): Clear DECL_RTL for a VAR_DECL when
1882         instantiating it.
1883
1884 2003-02-28  Aldy Hernandez  <aldyh@redhat.com>
1885
1886         * parser.c (cp_parser_init_declarator): Revert opaque
1887         vector_opaque_p change.
1888         Do not include target.h.
1889
1890 2003-02-28  Mark Mitchell  <mark@codesourcery.com>
1891
1892         PR c++/9879
1893         * cp-tree.h (build_zero_init): Add parameter.
1894         * decl.c (cp_finish_decl): Adjust call.
1895         * init.c (build_zero_init): Add nelts parameter.  Adjust recursive
1896         calls.
1897         (build_default_init): Add nelts parameter.  Adjust calls to
1898         build_zero_init.
1899         (build_new_1): Adjust call to build_default_init.
1900         * typeck2.c (process_init_constructor): Adjust call to build_zero_init.
1901
1902 2003-02-26  Devang Patel  <dpatel@apple.com>
1903
1904         * decl.c (finish_enum): Merge two 'for' loops. Copy value node if
1905         required.  Postpone enum setting for template decls.
1906         (build_enumerator): Delay copying value node until finish_enum
1907         (). Remove #if 0'ed code.
1908         * pt.c (tsubst_enum): Set TREE_TYPE and copy value node.
1909         (tsubst_copy): Add check for enum type.
1910
1911 2003-02-25  Mark Mitchell  <mark@codesourcery.com>
1912
1913         PR c++/9683
1914         * decl2.c (prune_vars_needing_no_initialization): Do not throw
1915         away initializations for DECL_EXTERNAL VAR_DECLs.
1916         (finish_file): Adjust accordingly.
1917         * pt.c (instantiate_decl): Do not defer VAR_DECLs.
1918
1919 2003-02-24 Gabriel Dos Reis  <gdr@integrable-solutions.net>
1920
1921         * decl.c (add_binding): Time TV_NAME_LOOKUP.
1922         (push_class_binding): Likewise.
1923         (set_namespace_binding): Likewise.
1924
1925 2003-02-24  Mark Mitchell  <mark@codesourcery.com>
1926
1927         PR c++/9836
1928         * cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE): Do not skip from
1929         specializations back to the main template.
1930         * parser.c (cp_parser_diagnose_invalid_type_name):Adjust use.
1931         * pt.c (resolve_typename_type): Likewise.
1932
1933 2003-02-24  Jeffrey D. Oldham  <oldham@codesourcery.com>
1934
1935         PR c++/9778
1936         * pt.c (tsubst_copy_and_build): For a templated function inside a
1937         scope, process template arguments.
1938
1939 2003-02-24  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1940
1941         PR c++/9602
1942         * typeck2.c (abstract_virtuals_error): Don't check when
1943         TYPE is still template parameter dependent.
1944
1945 2003-02-23  Mark Mitchell  <mark@codesourcery.com>
1946
1947         PR c++/5333
1948         * cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE): New macro.
1949         * parser.c (cp_parser_diagnose_invalid_type_name): Use it.
1950         * pt.c (instantiate_class_template): Don't try to instantiate
1951         dependent types.
1952         (resolve_typename_type): Use CLASSTYPE_PRIMARY_TEMPLATE.
1953
1954 2003-02-21  Mark Mitchell  <mark@codesourcery.com>
1955
1956         PR c++/9749
1957         * decl.c (grokdeclarator): Do not allow parameters with variably
1958         modified types.
1959
1960 2003-02-21  Nathan Sidwell  <nathan@codesourcery.com>
1961
1962         * search.c (grow_bfs_bases): Remove. Fold into ...
1963         (bfs_walk): ... here, fix fencepost error. Fix merge lossage
1964         in previous patch.
1965
1966 2003-02-20  Mark Mitchell  <mark@codesourcery.com>
1967
1968         PR c++/9729
1969         * mangle.c (mangle_conv_op_name_for_type): Issue an error message
1970         when the G++ 3.2 ABI prevents correct compilation.
1971
1972 2003-02-20  Nathan Sidwell  <nathan@codesourcery.com>
1973
1974         Change base class access representation. Share virtual base
1975         binfos.
1976         * cp/call.c (build_special_member_call): Remove binfo_for_vbase
1977         call.
1978         * cp/class.c (build_base_path): Likewise.
1979         (build_primary_vtable): Adjust BINFO_NEW_VTABLE_MARKED use.
1980         (build_secondary_vtable): Remove FOR_TYPE arg. Adjust.
1981         (make_new_vtable): Adjust.
1982         (force_canonical_binfo_r): Delete.
1983         (force_canonical_binfo): Delete.
1984         (mark_primary_virtual_base): Delete.
1985         (dfs_unshared_virtual_bases): Delete.
1986         (mark_primary_bases): Adjust.
1987         (maybe_warn_about_overly_private_class): Adjust.
1988         (dfs_base_derived_from): Delete.
1989         (base_derived_from): Follow the inheritance chain.
1990         (struct find_final_overrider_data): Add vpath member.
1991         (dfs_find_final_overrider): Adjust.
1992         (dfs_find_final_overrider_q, dfs_find_final_overrider_post): New.
1993         (find_final_overrider): Adjust.
1994         (update_vtable_entry_for_fn): Adjust.
1995         (modify_all_vtables): Adjust.
1996         (walk_subobject_offsets): Adjust.
1997         (layout_nonempty_base_or_field): Adjust.
1998         (layout_empty_base): Remove last parameter. Adjust.
1999         (build_base_field): Adjust.
2000         (build_base_fields): Adjust.
2001         (propagate_binfo_offsets): Remove last parameter. Adjust.
2002         (dfs_set_offset_for_unshared_vbases): Delete.
2003         (layout_virtual_bases): Adjust.
2004         (finish_struct_1): Adjust.
2005         (init_class_processing): Don't init access nodes.
2006         (dfs_get_primary_binfo): Delete.
2007         (get_primary_binfo): Adjust.
2008         (dump_class_hierarchy_r): Remove most derived arg, add IGO
2009         parameter. Adjust.
2010         (dump_class_hierarchy): Adjust.
2011         (finish_vtbls): Adjust.
2012         (get_original_base): Delete.
2013         (build_vtt_inits): Adjust.
2014         (dfs_build_secondary_vptr_vtt_inits): Adjust.
2015         (dfs_ctor_vtable_bases_queue_p): Adjust.
2016         (build_ctor_vtbl_group): Adjust.
2017         (dfs_accumulate_vtbl_inits): Adjust.
2018         (build_vtbl_initializer): Adjust.
2019         (build_vbase_offset_vtbl_entries): Adjust.
2020         (add_vcall_offset_vtbl_entries_1): Adjust.
2021         * cp/cp-tree.h (CPTI_ACCESS_*): Remove.
2022         (access_*_node): Remove.
2023         (CANONICAL_BINFO): Delete.
2024         (BINFO_UNSHARED_MARKED): Remove.
2025         (BINFO_MARKED): Set LANG_FLAG_0 directly.
2026         (SET_BINFO_MARKED, CLEAR_BINFO_MARKED): Delete.
2027         (BINFO_VTABLE_PATH_MARKED): Set LANG_FLAG_3 directly.
2028         (SET_BINFO_VTABLE_PATH_MARKED, CLEAR_BINFO_VTABLE_PATH_MARKED):
2029         Delete.
2030         (BINFO_NEW_VTABLE_MARKED): Set LANG_FLAG_4 directly.
2031         (SET_BINFO_NEW_VTABLE_MARKED): Adjust.
2032         (SET_BINFO_PUSHDECLS_MARKED, CLEAR_BINFO_PUSHDECLS_MARKED):
2033         Delete.
2034         (BINFO_DEPENDENT_BASE_P): New.
2035         (dfs_walk, dfs_walk_real): Queue function takes derived binfo and
2036         index.
2037         (markedp, unmarkedp): Adjust.
2038         (dfs_unmarked_real_bases_queue_p, dfs_marked_real_bases_queue_p,
2039         dfs_skip_vbases, marked_vtable_pathp, unmarked_vtable_pathp,
2040         find_vbase_instance, binfo_for_vbase): Delete.
2041         (copied_binfo, original_binfo): Declare.
2042         (finish_base_specifier): Add virtual_p arg.
2043         (unshare_base_binfos): Delete.
2044         (copy_base_binfos): Declare.
2045         (reverse_path): Delete.
2046         * cp/decl.c (xref_basetypes): Access and virtuality passed
2047         differently. Don't copy direct base binfos here. Call
2048         copy_base_binfos.
2049         * cp/init.c (dfs_initialize_vtbl_ptrs): Adjust.
2050         (initialize_vtbl_ptrs): Adjust.
2051         (expand_member_init): Adjust.
2052         * cp/parser.c (cp_parser_base_specifier): Adjust.
2053         * cp/pt.c (instantiate_class_template): Adjust.
2054         (get_template_base_recursive): Adjust.
2055         * cp/rtti.c (get_pseudo_ti_init): Adjust.
2056         (get_pseudo_ti_desc): Adjust.
2057         * cp/tree.c (unshare_base_binfos): Rename to ...
2058         (copy_base_binfos): ... here, reimplement.
2059         (make_binfo): Set BINFO_DEPENDENT_BASE_P.
2060         (reverse_path): Remove.
2061         * cp/typeck.c (get_delta_difference): Adjust error messages.
2062         * cp/semantics.c (finish_base_specifier): Add virtual arg, adjust.
2063         * cp/search.c (lookup_base_r): Adjust.
2064         (dynamic_cast_base_recurse): Adjust.
2065         (canonical_binfo): Remove.
2066         (dfs_canonical_queue): Remove.
2067         (dfs_assert_unmarked_p): Remove.
2068         (assert_canonical_unmarked): Remove.
2069         (shared_marked_p, shared_unmarked_p): Remove.
2070         (BINFO_ACCESS, SET_BINFO_ACCESS): Use TREE_PUBLIC & TREE_PRIVATE.
2071         (dfs_access_in_type): Adjust.
2072         (access_in_type): Adjust.
2073         (dfs_accessible_queue_p): Adjust.
2074         (dfs_accessible_p): Adjust.
2075         (is_subobject_of_p_1, is_subobject_of_p): Remove.
2076         (struct lookup_field_info): Remove from_dep_base_p field.
2077         (lookup_field_queue_p): Adjust, test BINFO_DEPENDENT_BASE_P.
2078         (lookup_field_r): Remove dependent base code.
2079         (lookup_member): Likewise.
2080         (dfs_walk, dfs_walk_real): Add access arg to queue fn.
2081         (dfs_unmarked_real_bases_queue_p): Remove.
2082         (dfs_marked_real_bases_queue_p): Remove.
2083         (dfs_skip_vbases): Remove.
2084         (dfs_get_pure_virtuals): Adjust.
2085         (markedp, unmarkedp): Adjust.
2086         (marked_vtable_pathp, unmarked_vtable_pathp): Remove.
2087         (marked_pushdecls_p, unmarked_pushdecls_p): Adjust.
2088         (dfs_unmark): Adjust.
2089         (dfs_get_vbase_types):Remove.
2090         (dfs_build_inheritance_graph_order): Remove.
2091         (get_vbase_types): Remove
2092         (dfs_find_vbase_instance): Remove.
2093         (find_vbase_instance): Remove.
2094         (dfs_debug_unmarkedp): Adjust.
2095         (dependent_base_p): Remove.
2096         (dfs_push_type_decls): Adjust.
2097         (dfs_push_decls): Adjust.
2098         (dfs_no_overlap_yet): Adjust.
2099         (copied_binfo): New function.
2100         (original_binfo): New function.
2101         (binfo_for_vbase): Remove.
2102
2103 2003-02-18  Zack Weinberg  <zack@codesourcery.com>
2104
2105         * cp/search.c (grow_bfs_bases): New subroutine of bfs_walk.
2106         (bfs_walk): Rewritten using circular queue of BINFO_BASETYPES
2107         vectors, for speed.
2108
2109 2003-02-18  Mark Mitchell  <mark@codesourcery.com>
2110
2111         PR c++/9704
2112         * class.c (layout_class_type): In the 3.2 ABI, take into account
2113         trailing bit fields when computing CLASSTYPE_SIZE_UNIT.
2114
2115 2003-02-18  Matt Austern <austern@apple.com>
2116
2117         * cp/cp-lang.c: Change lang hooks so that final_write_globals does
2118         nothing for C++.
2119         * cp/decl.c (wrapup_globals_for_namespace): Remove special
2120         handling of global namespace.
2121
2122 2003-02-18  Geoffrey Keating  <geoffk@apple.com>
2123
2124         * cp-tree.h (rid_to_yy): Delete.
2125         (C_RID_YYCODE): Delete.
2126         (finish_file): Delete redundant declaration.
2127
2128 2003-02-18  Jason Merrill  <jason@redhat.com>
2129
2130         PR c++/9623
2131         * decl.c (reshape_init): Don't mess with initializer labels.
2132
2133         PR c++/9485
2134         * parser.c (cp_parser_postfix_expression): Set idk properly for
2135         object->scope::member.
2136
2137 2003-02-18  Ben Elliston  <bje@redhat.com>
2138
2139         PR other/7350
2140         * decl.c (duplicate_decls): Fix typo in comment.
2141
2142 2003-02-17  Michael Elizabeth Chastain <mec@shout.net>
2143
2144         PR debug/9717
2145         * class.c (build_base_field): Mark fields for base classes with
2146         DECL_IGNORED_P.
2147
2148 2003-02-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2149
2150         PR c++/9457
2151         * pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Substitute
2152         CONSTRUCTOR_ELTS only once.
2153
2154 2003-02-16  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2155
2156         PR c++/9459
2157         * error.c (dump_type_prefix): Handle TYPEOF_TYPE.
2158         (dump_type_suffix): Likewise.
2159
2160 2003-02-14  Nathan Sidwell  <nathan@codesourcery.com>
2161
2162         * search.c: ANSIfy function declarations and definitions.
2163         * cp-tree.h (lookup_field, lookup_member): Last parameter is a bool.
2164         * call.c (build_method_call, resolve_scoped_fn_name,
2165         build_java_interface_fn_ref): Adjust lookup_field, lookup_member
2166         calls.
2167         * class.c (handle_using_decl): Likewise.
2168         * decl.c (make_typename_type, make_unmound_class_template,
2169         start_decl, compute_array_index_type): Likewise.
2170         * decl2.c (build_expr_from_tree, build_call_from_tree): Likewise.
2171         * init.c (expand_member_init, build_member_call): Likewise.
2172         * pt.c (tsubst_copy, tsubst_copy_and_build, do_decl_instantiation,
2173         resolve_typename_type): Likewise.
2174         * typeck.c (lookup_destructor, finish_class_member_access_exprm
2175         build_prememfunc_access_expr): Likewise.
2176
2177 2003-02-13  Gabriel Dos Reis <gdr@integrable-solutions.net>
2178
2179         * decl2.c: Include "timevar.h".
2180         (namespace_ancestor): Time name lookup.
2181         (add_using_namespace): Likewise.
2182         (lookup_using_namespace): Likewise.
2183         (qualified_lookup_using_namespace): Likewise.
2184         (decl_namespace): Likewise.
2185         (lookup_arg_dependent): Likewise.
2186         * lex.c (do_identifier): Likewise.
2187         (do_scoped_id): Likewise.
2188         * pt.c (lookup_template_class): Likewise.
2189
2190 2003-02-14   Andrew Pinski <pinskia@physics.uc.edu>
2191
2192         * decl.c: (define_label): Fix warning for return 0 instead of NULL.
2193
2194 2003-02-13  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2195
2196         * decl.c: Include "timevar.h".
2197         (poplevel): Time name lookup.
2198         (find_binding): Likewise.
2199         (push_namespace): Likewise.
2200         (pop_nested_namespace): Likewise.
2201         (store_bindings): Likewise.
2202         (maybe_push_to_top_level): Likewise.
2203         (pop_from_top_level): Likewise.
2204         (push_local_name): Likewise.
2205         (pushtag): Likewise.
2206         (pushdecl): Likewise.
2207         (pushdecl_with_scope): Likewise.
2208         (pushdecl_namespace_level): Likewise.
2209         (pushdecl_top_level): Likewise.
2210         (pushdecl_class_level): Likewise.
2211         (push_class_level_binding): Likewise.
2212         (push_using_decl): Likewise.
2213         (push_using_directive): Likewise.
2214         (push_overloaded_decl): Likewise.
2215         (lookup_label): Likewise.
2216         (define_label): Likewise.
2217         (lookup_tag): Likewise.
2218         (lookup_tag_reverse): Likewise.
2219         (lookup_namespace_name): Likewise.
2220         (select_decl): Likewise.
2221         (unqualified_namespace_lookup): Likewise.
2222         (lookup_name_real): Likewise.
2223         (lookup_name_current_level): Likewise.
2224         (lookup_type_current_level): Likewise.
2225         (maybe_inject_for_scope_var): Likewise.
2226         (xref_tag): Likewise.
2227
2228         * Make-lang.in (cp/decl.o): Add dependency on timevar.h
2229
2230 2003-02-12  Phil Edwards  <pme@gcc.gnu.org>
2231
2232         * decl.c (build_enumerator):  Remove unneeded test.
2233
2234 2003-02-09  Dan Nicolaescu  <dann@ics.uci.edu>
2235
2236         * cp-tree.h (struct lang_type_header): Make all fields unsigned
2237         char.
2238
2239 2003-02-03  Mark Mitchell  <mark@codesourcery.com>
2240
2241         PR c++/7129
2242         * call.c (z_candidate): Add args.
2243         (convert_class_to_reference): Set it.
2244         (implicit_conversion): Tidy.
2245         (add_candidate): Add args parameter.
2246         (add_function_candidate): Adjust call to add_candidate.
2247         (add_conv_candidate): Likewise.
2248         (build_builtin_candidate): Likewise.
2249         (build_user_type_conversion_1): Eliminate wasteful tree_cons
2250         usage.
2251         (build_new_function_call): Likewise.
2252         (build_object_call): Likewise.
2253         (add_candidates): New function.
2254         (build_new_op): Use it.
2255         (covert_like_real): Adjust call to build_over_call.
2256         (build_over_call): Remove args parameter.
2257         * operators.def: Add <?= and >?=.
2258
2259 2003-02-01  Richard Sandiford  <rsandifo@redhat.com>
2260
2261         * typeck.c (build_indirect_ref): Don't check flag_volatile.
2262
2263 2003-01-31  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2264
2265         PR c++/8849
2266         * pt.c (resolve_overloaded_unification): Handle FUNCTION_DECL.
2267
2268 2003-01-31  Nathan Sidwell  <nathan@codesourcery.com>
2269
2270         * cp-tree.h (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX,
2271         BINFO_PRIMARY_BASE_OF): Use BINFO_ELTS.
2272         (BINFO_LANG_ELTS): New #define.
2273         * tree.c (make_binfo): Use BINFO_LANG_ELTS.
2274
2275 2003-01-30  Geoffrey Keating  <geoffk@apple.com>
2276
2277         * cp/Make-lang.in: Remove -Wno-error from cp/decl.o.
2278
2279 2003-01-30  Mark Mitchell  <mark@codesourcery.com>
2280
2281         * class.c (check_field_decls): Only check C_TYPE_FIELDS_READONLY
2282         for class types.
2283         * cp-tree.h (C_TYPE_FIELDS_READONLY): Use a lang-specific bit
2284         rather than TYPE_LANG_FLAG_0.
2285         (TYPE_BUILT_IN): Remove.
2286         (TYPE_DEPENDENT_P): New macro.
2287         (TYPE_DEPENDENT_P_VALID): Likewise.
2288         (lang_type_class): Add fields_readonly.
2289         * decl.c (record_builtin_type): Don't set TYPE_BUILT_IN.
2290         * pt.c (dependent_type_p_r): New function, split out from ...
2291         (dependent_type_p): ... here.  Memoize results.
2292         * search.c (dependent_base_p): Use dependent_type_p, not
2293         uses_template_parms.
2294         * typeck.c (build_modify_expr): Only check C_TYPE_FIELDS_READONLY
2295         for class types.
2296
2297 2003-01-29  Mark Mitchell  <mark@codesourcery.com>
2298
2299         * call.c (build_field_call): Use build_new_op, not build_opfncall.
2300         (prep_operand): New function.
2301         (build_new_op): Use it.  Remove dead code.
2302         * class.c (pushclass): Change "modify" parameter type from int to
2303         bool.
2304         (currently_open_class): Use same_type_p, not pointer equality.
2305         (push_nested_class): Adjust calls to pushclass, remove modify
2306         parameter.
2307         * cp-tree.h (INTEGRAL_OR_ENUMERATION_TYPE_P): New macro.
2308         (pushclass): Change prototype.
2309         (push_nested_class): Likewise.
2310         (grokoptypename): Remove.
2311         (build_opfncall): Remove.
2312         (value_dependent_expression_p): Declare.
2313         (resolve_typename_type): Likewise.
2314         (resolve_typename_type_in_current_instantiation): Likewise.
2315         (enter_scope_of): Remove.
2316         (tsubst): Remove.
2317         (tsubst_expr): Likewise.
2318         (tsubst_copy): Likewise.
2319         (tsubst_copy_and_build): Likewise.
2320         * decl.c (warn_about_implicit_typename_lookup): Remove.
2321         (finish_case_label): Return error_mark_node for erroneous labels.
2322         (start_decl): Adjust calls to push_nested_class.
2323         (grokfndecl): Call push_scope/pop_scope around call to
2324         duplicate_decls.
2325         (grokdeclarator): Do not call tsubst.
2326         (start_function): Adjust calls to push_nested_class.
2327         * decl2.c (grok_array_decl): Use build_new_op, not build_opfncall.
2328         (check_classfn): Use push_scope/pop_scope around type comparisions.
2329         (grokoptypename): Remove.
2330         (push_sscope): Adjust call to push_nested_class.
2331         * error.c (dump_type): Show cv-qualification of typename types.
2332         * init.c (build_member_call): Use build_new_op, not
2333         build_opfncall.
2334         * method.c (build_opfncall): Remove.
2335         * parser.c (cp_parser): Add allow_non_constant_expression_p and
2336         non_constant_expression_p.
2337         (cp_parser_constant_expression): Adjust prototype.
2338         (cp_parser_resolve_typename_type): Remove.
2339         (cp_parser_non_constant_expression): New function.
2340         (cp_parser_non_constant_id_expression): Likewise.
2341         (cp_parser_new): Set allow_non_constant_expression_p and
2342         non_constant_expression_p.
2343         (cp_parser_primary_expression): Reject `this' and `va_arg' in
2344         constant-expressions.  Note that dependent names aren't really
2345         constant.
2346         (cp_parser_postfix_expression): Reject conversions to non-integral
2347         types in constant-expressions.  Neither are increments or
2348         decrements.
2349         (cp_parser_unary_expression): Reject increments and decrements in
2350         constant-expressions.
2351         (cp_parser_direct_new_declarator): Adjust call to
2352         cp_parser_constant_expression.
2353         (cp_parser_cast_expression): Reject conversions to non-integral
2354         types in constant-expressions.
2355         (cp_parser_assignment_expression): Rejects assignments in
2356         constant-expressions.
2357         (cp_parser_expression): Reject commas in constant-expressions.
2358         (cp_parser_labeled_statement): Adjust call to
2359         cp_parser_constant_expression.
2360         (cp_parser_direct_declarator): Simplify array bounds, even in
2361         templates, when they are non-dependent.  Use
2362         resolve_typename_type, not cp_parser_resolve_typename_type.
2363         (cp_parser_class_head): Use resolve_typename_type, not
2364         cp_parser_resolve_typename_type.
2365         (cp_parser_member_declaration): Adjust call to
2366         cp_parser_constant_expression.
2367         (cp_parser_constant_initializer): Likewise.
2368         (cp_parser_constructor_declarator): Use resolve_typename_type, not
2369         cp_parser_resolve_typename_type.
2370         (cp_parser_late_parsing_default_args): Adjust call to
2371         push_nested_class.
2372         * pt.c (tsubst): Give it internal linkage.
2373         (tsubst_expr): Likewise.
2374         (tsubst_copy): Likewise.
2375         (tsubst_copy_and_build): Likewise.
2376         (push_access_scope_real): Likewise.
2377         (tsubst_friend_class): Likewise.
2378         (instantiate_class_template): Adjust call to pushclass.
2379         (value_dependent_expression_p): Give it external linkage.
2380         Robustify.
2381         (resolve_typename_type): New function.
2382         * semantics.c (finish_call_expr): Use build_new_op, not
2383         build_opfncall.
2384         (begin_constructor_declarator): Remove.
2385         (begin_class_definition): Adjust call to pushclass.
2386         (enter_scope_of): Remove.
2387         * typeck.c (comptypes): Resolve typename types as appropriate.
2388         (build_x_indirect_ref): Use build_new_op, not build_opfncall.
2389         (build_x_compound_expr): Likewise.
2390         (build_modify_expr): Likewise.
2391         (build_x_modify_expr): Likewise.
2392         * typeck2.c (build_x_arrow): Likewise.
2393
2394 2003-01-29  Fariborz Jahanian  <fjahanian@apple.com>
2395
2396         * pt.c (last_pending_template) Declare GTY().
2397
2398 2003-01-29  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2399
2400         PR c++/8591
2401         * parser.c (cp_parser_elaborated_type_specifier): Convert
2402         TEMPLATE_DECL to TYPE_DECL only when processing template friends.
2403         (cp_parser_maybe_treat_template_as_class): Remove redundant tests.
2404
2405 2003-01-28  Nathan Sidwell  <nathan@codesourcery.com>
2406
2407         PR c++/9437
2408         * pt.c (unify): Don't unify '*T' with 'U C::*'.
2409
2410         PR c++/3902
2411         * parser.c (cp_parser_decl_specifier_seq): Cannot have constructor
2412         inside a declarator.
2413
2414 2003-01-27  Nathan Sidwell  <nathan@codesourcery.com>
2415
2416         * class.c (update_vtable_entry_for_fn): Add index parameter.
2417         Generate vcall thunk for covariant overriding from a virtual
2418         primary base.
2419         (dfs_modify_vtables): Adjust.
2420
2421 2003-01-25  Nathan Sidwell  <nathan@codesourcery.com>
2422
2423         PR c++/9403
2424         * parser.c (cp_parser_class_or_namespace_name): Reject duplicate
2425         template keyword.
2426         (cp_parser_base_specifier): Look for and consume a
2427         TEMPLATE keyword. Replace switch with array index.
2428
2429         PR c++/795
2430         * semantics.c (finish_non_static_data_member): Remember the
2431         field's type even in a template.
2432
2433         PR c++/9415
2434         * pt.c (tsubst_copy_and_build, CALL_EXPR): BASELINK exprs are
2435         already scoped.
2436
2437         PR c++/8545
2438         * parser.c (cp_parser_cast_expression): Be more tentative.
2439
2440 2003-01-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2441
2442         * cp-tree.h (flagged_type_tree_s): Remove.
2443         (check_for_new_type): Likewise.
2444         * typeck2.c (check_for_new_type): Likewise.
2445
2446 2003-01-23  Nathanael Nerode  <neroden@gcc.gnu.org>
2447
2448         * dump.c: ANSIfy function declarations and definitions.
2449
2450         * cp-tree.h, decl.h: Get rid of PARAMS.  Again.
2451
2452 2003-01-22  Mark Mitchell  <mark@codesourcery.com>
2453
2454         PR c++/9354
2455         * init.c (build_new): Set the type of the new-expression, even
2456         when processing_templte_decl.
2457
2458         PR c++/9216
2459         * parser.c (cp_parser_primary_expression): Improve error message
2460         for templates used in an expression context.
2461
2462         PR c++/8696
2463         * parser.c (cp_parser_decl_specifier_seq): Commit to tentative
2464         parse when encountering "typedef".
2465
2466 2003-01-22  Nathanael Nerode  <neroden@gcc.gnu.org>
2467
2468         * class.c, parser.c: ANSIfy function definitions and declarations.
2469
2470 2003-01-22  Mark Mitchell  <mark@codesourcery.com>
2471
2472         PR c++/9328
2473         * error.c (dump_decl): For an OVERLOAD, just print the name of the
2474         function; it doesn't make sense to try to print its type.
2475         * semantics.c (finish_typeof): Issue errors about invalid uses.
2476
2477         PR c++/9298
2478         * parser.c (cp_parser_consume_semicolon_at_end_of_statement): New
2479         function.
2480         (cp_parser_expression_statement): Use it.
2481         (cp_parser_explicit_instantiation): Likewise.
2482         * pt.c (do_decl_instantiation): Improve error handling logic.
2483
2484 2003-01-22  Mark Mitchell  <mark@codesourcery.com>
2485
2486         PR c++/9384
2487         * parser.c (cp_parser_using_declaration): Issue error messages
2488         about name resolution failures here.
2489
2490         PR c++/9388
2491         * class.c (currently_open_derived_class): Use dependent_type_p.
2492         * cp-tree.h (dependent_type_p): New function.
2493         (dependent_template_arg_p): Likewise.
2494         (dependent_template_p): Likewise.
2495         (type_dependent_expression_p): Likewise.
2496         * parser.c (cp_parser_dependent_type_p): Remove.
2497         (cp_parser_value_dependent_type_p): Likewise.
2498         (cp_parser_type_dependent_expression_p): Likewise.
2499         (cp_parser_dependent_template_arg_p): Likewise.
2500         (cp_parser_dependent_template_id_p): Likewise.
2501         (cp_parser_dependent_template_p): Likewise.
2502         (cp_parser_diagnose_invalid_type_name): Replace
2503         cp_parser_dependent_type_p with dependent_type_p, etc.
2504         (cp_parser_primary_expresion): Likewise.
2505         (cp_parser_nested_name_specifier_opt): Likewise.
2506         (cp_parser_postfix_expression): Likewise.
2507         (cp_parser_unary_expression): Likewise.
2508         (cp_parser_template_name): Likewise.
2509         (cp_parser_class_name): Likewise.
2510         (cp_parser_lookup_name): Likewise.
2511         * pt.c (dependent_type_p): New function.
2512         (value_dependent_expression_p): Likewise.
2513         (type_dependent_expression_p): Likewise.
2514         (dependent_template_arg_p): Likewise.
2515         (dependent_template_id_p): Likewise.
2516         (dependent_template_p): Likewise.
2517
2518         PR c++/9285
2519         PR c++/9294
2520         * parser.c (cp_parser_simple_declaration): Return quickly when
2521         encountering errors.
2522
2523 2003-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2524
2525         Make-lang.in (cp/decl.o-warn): Add -Wno-error.
2526
2527 2003-01-17  Jason Merrill  <jason@redhat.com>
2528
2529         PR c++/9167, c++/9358
2530         * decl.c (require_complete_types_for_parms): Also update DECL_ARG_TYPE.
2531
2532 2003-01-17  Jason Merrill  <jason@redhat.com>
2533
2534         PR c++/9342
2535         * call.c (build_conditional_expr): Always do lvalue-rvalue
2536         conversion.
2537
2538 2003-01-17  Mark Mitchell  <mark@codesourcery.com>
2539
2540         PR c++/9294
2541         * cp-tree.def (BASELINK): Make it class 'x', not class 'e'.
2542         * cp-tree.h (BASELINK_BINFO): Adjust.
2543         (BASELINK_FUNCTIONS): Likewise.
2544         (BASELINK_ACCESS_BINFO): Likewise.
2545         (tree_baselink): New structure.
2546         (cp_tree_node_structure_enum): Add TS_CP_BASELINK.
2547         (lang_tree_node): Add baselink.
2548         * decl.c (cp_tree_node_structure): Add BASELINK case.
2549         * search.c (build_baselink): Adjust.
2550         * tree.c (cp_walk_subtrees): Add BASELINK case.  Remove BASELINK_P
2551         test from TREE_LIST case.
2552
2553         PR c++/9272
2554         * parser.c (cp_parser_constructor_declarator_p): Do not assume
2555         that a constructor cannot be declared outside of its own class.
2556
2557         * parser.c (cp_parser_resolve_typename_type): If the scope cannot
2558         be resolved, neither can the qualified name.
2559
2560         * rtti.c (get_pseudo_ti_desc): Fix thinko.
2561
2562 2003-01-16  Jason Merrill  <jason@redhat.com>
2563
2564         PR c++/8564
2565         * init.c (build_vec_init): Re-add maxindex parm.
2566         (perform_member_init, build_aggr_init): Pass it.
2567         (build_new_1): Pass it. Use an incomplete array type for full_type.
2568         * typeck.c (build_modify_expr): Pass it.
2569         * cp-tree.h: Adjust.
2570
2571 2003-01-16  Jeffrey D. Oldham  <oldham@codesourcery.com>
2572
2573         * cp-tree.h (tsubst_copy_and_build): New declaration.
2574         * pt.c (tsubst_copy): Remove 'build_expr_from_tree' from comment.
2575         (tsubst_expr): Use 'tsubst_copy_and_build'.  Update initial comment.
2576         (tsubst_copy_and_build): New function.
2577
2578 2003-01-16  Mark Mitchell  <mark@codesourcery.com>
2579
2580         * cp-tree.h (lang_type_class): Remove is_partial_instantiation.
2581         (PARTIAL_INSTANTIATION_P): Remove.
2582         (IMPLICIT_TYPENAME_P): Likewise.
2583         (IMPLICIT_TYPENAME_TYPE_DECL_P): Likewise.
2584         (build_typename_type): Remove declaration.
2585         (parmlist_is_exprlist): Likewise.
2586         * decl.c (build_typename_type): Make it static, remove third
2587         parameter.
2588         (push_class_binding): Don't do implicit typename stuff.
2589         (make_typename_type): Likewise.
2590         (lookup_name_real): Likewise.
2591         (grokdeclarator): Don't try to convert declarations into
2592         initializations.  Don't do implicit typename stuff.
2593         (parmlist_is_exprlist): Remove.
2594         (xref_basetypes): Simplify.
2595         * decl2.c (grokfield): Don't try to convert declarations into
2596         initializations.
2597         (build_anon_union_vars): Do this while processing templates, too.
2598         (finish_anon_union): Likewise.
2599         * error.c (dump_type): Remove implicit typename handling.
2600         * parser.c (cp_parser_diagnose_invalid_type_name): New method.
2601         (cp_parser_primary_expression): Correct handling of names not
2602         found by unqualified name lookup in templates.
2603         (cp_parser_nested_name_specifier_opt): Avoid checking dependency
2604         of types when possible.
2605         (cp_parser_simple_declaration): Complain intelligently about some
2606         invalid declarations.
2607         (cp_parser_member_declaration): Likewise.
2608         (cp_parser_constructor_declarator_p): Don't check when we're in a
2609         function scope.
2610         * pt.c (instantiate_class_template): Remove
2611         PARTIAL_INSTANTIATION_P gunk.
2612         * search.c (lookup_field_r): Don't build implicit typenames.
2613         (marked_pushdecls_p): Don't enter dependent base types.
2614         (unmarked_pushdecls_p): Likewise.
2615         * semantics.c (begin_class_definition): Remove implicit typename
2616         stuff.
2617
2618 2003-01-16  Nathan Sidwell  <nathan@codesourcery.com>
2619
2620         PR c++/9212
2621         * parser.c (cp_parser_direct_declarator): If accepting either
2622         abstract or named, the name must be an unqualified-id.
2623
2624 2003-01-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2625
2626         * class.c (layout_virtual_bases): Avoid signed/unsigned warning.
2627
2628 2003-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2629
2630         * decl2.c (check_classfn): Fix uninitialized warning.
2631         (build_anon_union_vars): Likewise.
2632         * pt.c (tsubst_copy): Likewise.
2633
2634 2003-01-14  Jeffrey D. Oldham  <oldham@codesourcery.com>
2635
2636         Further conform g++'s __vmi_class_type_info to the C++ ABI
2637         specification.
2638         * rtti.c (dfs_class_hint_mark): Do not set hints not specified by
2639         the specification.
2640         (class_hint_flags): Likewise.
2641
2642 2003-01-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2643
2644         * config-lang.in: Add semantics.c to gtfiles.
2645         * cp-tree.h (flagged_type_tree_s): Remove lookups field.
2646         (saved_scope): Likewise.
2647         (type_lookups): Remove.
2648         (deferred_access): New structure.
2649         (type_access_control): Remove.
2650         (save_type_access_control): Likewise.
2651         (reset_type_access_control): Likewise.
2652         (decl_type_access_control): Likewise.
2653         (push_deferring_access_checks): Declare.
2654         (resume_deferring_access_checks): Likewise.
2655         (stop_deferring_access_checks): Likewise.
2656         (pop_deferring_access_checks): Likewise.
2657         (get_deferred_access_checks): Likewise.
2658         (pop_to_parent_deferring_access_checks): Likewise.
2659         (perform_deferred_access_checks): Likewise.
2660         (perform_or_defer_access_check): Likewise.
2661         * decl.c (make_typename_type): Use perform_or_defer_access_check.
2662         (make_unbound_class_template): Likewise.
2663         (grokdeclarator): Don't call decl_type_access_control.
2664         * parser.c (cp_parser_context): Remove deferred_access_checks
2665         and deferring_access_checks_p fields.
2666         (cp_parser_context_new): Adjust.
2667         (cp_parser): Remove access_checks_lists.
2668         (cp_parser_defer_access_check): Remove.
2669         (cp_parser_start_deferring_access_checks): Remove.
2670         (cp_parser_stop_deferring_access_checks): Remove.
2671         (cp_parser_perform_deferred_access_checks): Remove.
2672         (cp_parser_nested_name_specifier_opt): Use new deferred access
2673         functions.
2674         (cp_parser_simple_declaration): Likewise.
2675         (cp_parser_template_id): Likewise.
2676         (cp_parser_function_definition): Likewise.
2677         (cp_parser_class_specifier): Likewise.
2678         (cp_parser_lookup_name): Likewise.
2679         (cp_parser_single_declaration): Likewise.
2680         (cp_parser_pre_parsed_nested_name_specifier): Likewise.
2681         (cp_parser_parse_tentatively): Likewise.
2682         (cp_parser_parse_definitely): Likewise.
2683         (yyparse): Likewise.
2684         (cp_parser_init_declarator): Remove access_checks parameter.
2685         Use new deferred access functions.
2686         (cp_parser_function_definition_from_specifiers_and_declarator):
2687         Likewise.
2688         (cp_parser_class_head): Remove deferring_access_checks_p and
2689         saved_access_checks parameters.  Use new deferred access functions.
2690         (cp_parser_member_specification_opt): Don't call
2691         reset_type_access_control.
2692         * search.c (type_access_control): Remove.
2693         * semantics.c: Include "gt-cp-semantics.h".
2694         (deferred_type_access_control): Remove.
2695         (deferred_access_stack): New variable.
2696         (deferred_access_free_list): Likewise.
2697         (push_deferring_access_checks): New function.
2698         (resume_deferring_access_checks): Likewise.
2699         (stop_deferring_access_checks): Likewise.
2700         (pop_deferring_access_checks): Likewise.
2701         (get_deferred_access_checks): Likewise.
2702         (pop_to_parent_deferring_access_checks): Likewise.
2703         (perform_deferred_access_checks): New function, adapted from
2704         cp_parser_perform_deferred_access_checks.
2705         (perform_or_defer_access_check): New function, adapted from
2706         cp_parser_defer_access_check.
2707         (current_type_lookups): Remove.
2708         (deferred_type_access_control): Likewise.
2709         (decl_type_access_control): Likewise.
2710         (save_type_access_control): Likewise.
2711         (reset_type_access_control): Likewise.
2712         (begin_function_definition): Adjust.
2713         (begin_class_definiton): Likewise.
2714
2715 2003-01-13  Jason Merrill  <jason@redhat.com>
2716
2717         PR c++/8748
2718         * class.c (build_base_path): Take the address before calling save_expr.
2719
2720         * call.c (build_user_type_conversion_1): Do set ICS_BAD_FLAG if
2721         all the ambiguous conversions are bad.
2722
2723         * class.c (maybe_warn_about_overly_private_class): Don't stop
2724         searching when we find a nonprivate method.
2725
2726         * typeck.c (build_class_member_access_expr): Use unary_complex_lvalue.
2727
2728 2003-01-12  Mark Mitchell  <mark@codesourcery.com>
2729
2730         * cp-tree.h (get_arglist_len_in_bytes): Remove.
2731
2732         PR c++/9264
2733         * parser.c (cp_parser_elaborated_type_specifier): Handle erroneous
2734         typeame types more robustly.
2735
2736 2003-01-11  Phil Edwards  <pme@gcc.gnu.org>
2737
2738         * parser.c:  Fix comment typos.
2739
2740 2003-01-10  Mark Mitchell  <mark@codesourcery.com>
2741
2742         PR c++/9099
2743         * parser.c (cp_parser_scope_through_which_access_occurs): Handle
2744         an object_type which is not a class type.
2745
2746 2003-01-10  Geoffrey Keating  <geoffk@apple.com>
2747
2748         * parser.c (cp_parser_late_parsing_for_member): Don't cast to void.
2749         (cp_parser_late_parsing_default_args): Likewise.
2750
2751 2003-01-10  Nathanael Nerode  <neroden@gcc.gnu.org>
2752
2753         * cfns.gperf: ANSIfy function declarations.
2754         * cfns.h: Regenerate.
2755         * cp-tree.h: ANSIfy function declarations.
2756
2757 2003-01-10  Mark Mitchell  <mark@codesourcery.com>
2758
2759         * cp-tree.h (reparse_absdcl_as_expr): Remove.
2760         (reparse_absdcl_as_casts): Likewise.
2761         (reparse_decl_as_expr): Likewise.
2762         (finish_decl_parsing): Likewise.
2763         * decl2.c (reparse_absdcl_as_expr): Remove.
2764         (reparse_absdcl_as_casts): Likewise.
2765         (repase_decl_as_expr): Likewise.
2766         (finish_decl_parsing): Likewise.
2767
2768         PR c++/9128
2769         PR c++/9153
2770         PR c++/9171
2771         * parser.c (cp_parser_pre_parsed_nested_name_specifier): New
2772         function.
2773         (cp_parser_nested_name_specifier_opt): Correct the
2774         check_dependency_p false.
2775         (cp_parser_postfix_expression): Fix formatting.
2776         (cp_parser_decl_specifier_seq): Avoid looking for constructor
2777         declarators when possible.
2778         (cp_parser_template_id): Avoid performing name-lookup when
2779         possible.
2780         (cp_parser_class_head): Do not count specializations when counting
2781         levels of templates.
2782         (cp_parser_constructor_declarator_p): Return immediately if
2783         there's no chance that the tokens form a constructor declarator.
2784         * rtti.c (throw_bad_typeid): Add comment.  Do not return an
2785         expression with reference type.
2786         (get_tinfo_decl_dynamic): Do not return an expression with
2787         reference type.
2788         (build_typeid): Add comment.  Do not return an expression with
2789         reference type.
2790         * typeck.c (build_class_member_access_expr): Improve handling of
2791         conditionals and comma-expressions as objects.
2792
2793 2003-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>
2794
2795         * cfns.gperf: ANSIfy function declarations.
2796         * cfns.h: Regenerate.
2797         * cp-tree.h: ANSIfy function declarations.
2798         * parser.c: ANSIfy function declarations & definitions.
2799
2800         * decl.c (bad_specifiers): Fix parameter order error I introduced.
2801
2802 2003-01-09  Geoffrey Keating  <geoffk@apple.com>
2803
2804         Merge from pch-branch:
2805
2806         2003-01-09  Geoffrey Keating  <geoffk@apple.com>
2807
2808         Merge to tag pch-merge-20030102:
2809
2810         * semantics.c (finish_translation_unit): Don't call finish_file.
2811         * parser.c: Don't include ggc.h.
2812         (cp_lexer_new_main): Rename from cp_lexer_new, only create main lexer,
2813         read first token here.  Don't allow PCH files after the first
2814         token is read.
2815         (cp_lexer_new_from_tokens): Duplicate functionality from cp_lexer_new.
2816         (cp_lexer_get_preprocessor_token): Allow LEXER to be NULL.
2817         (cp_parser_new): Call cp_lexer_new_main before allocating GCed memory.
2818         (cp_parser_late_parsing_for_member): Don't duplicate call to
2819         cp_lexer_set_source_position_from_token.
2820         (cp_parser_late_parsing_default_args): Likewise.
2821         (yyparse): Call finish_file after clearing the_parser.
2822
2823         2002-12-11  Geoffrey Keating  <geoffk@apple.com>
2824
2825         * Make-lang.in: Remove $(GGC_H) from all dependencies.
2826         (CXX_TREE_H): Add $(GGC_H).
2827         * class.c: Don't include ggc.h.
2828         (field_decl_cmp): Make parameters be 'const void *' to match qsort.
2829         (method_name_cmp): Likewise.
2830         (resort_data): New variable.
2831         (resort_field_decl_cmp): New.
2832         (resort_method_name_cmp): New.
2833         (resort_sorted_fields): New.
2834         (resort_type_method_vec): New.
2835         (finish_struct_methods): Delete cast.
2836         (finish_struct_1): Delete cast.
2837         * cp-tree.h: Include ggc.h.
2838         (struct lang_type_class): Add reorder attribute to field `methods'.
2839         (union lang_decl_u3): Add reorder attribute to field `sorted_fields'.
2840         (resort_sorted_fields): New prototype.
2841         (resort_type_method_vec): New prototype.
2842         * call.c: Don't include ggc.h.
2843         * decl.c: Likewise.
2844         * decl2.c: Likewise.
2845         * init.c: Likewise.
2846         * lex.c: Likewise.
2847         * method.c: Likewise.
2848         * optimize.c: Likewise.
2849         * parse.y: Likewise.
2850         * pt.c: Likewise.
2851         * repo.c: Likewise.
2852         * search.c: Likewise.
2853         * semantics.c: Likewise.
2854         * spew.c: Likewise.
2855         * tree.c: Likewise.
2856
2857         * lang-specs.h: Remove comment.
2858
2859         2002-12-03  Geoffrey Keating  <geoffk@apple.com>
2860
2861         * cp-tree.h (struct operator_name_info_t): Mark for GTY machinery.
2862         (operator_name_info): Mark to be saved for PCH, specify size.
2863         (assignment_operator_name_info): Likewise.
2864
2865         2002-11-19  Geoffrey Keating  <geoffk@apple.com>
2866
2867         * decl.c (anon_cnt): Mark to be saved for PCH.
2868
2869         2002-10-25  Geoffrey Keating  <geoffk@apple.com>
2870
2871         * lex.c  (init_reswords): Delete now-untrue comment.
2872         Allocate ridpointers using GGC.
2873
2874         2002-10-04  Geoffrey Keating  <geoffk@apple.com>
2875
2876         * cp-tree.h (union lang_decl_u2): Add tags to all fields.
2877
2878         * g++spec.c (lang_specific_driver): Don't include standard
2879         libraries in `added'.
2880
2881         2002-08-27  Geoffrey Keating  <geoffk@redhat.com>
2882
2883         * decl2.c (finish_file): Call c_common_write_pch.
2884         * Make-lang.in (CXX_C_OBJS): Add c-pch.o.
2885
2886         2002-08-17  Geoffrey Keating  <geoffk@redhat.com>
2887
2888         * g++spec.c (lang_specific_driver): Treat .h files as C++ header
2889         files when using g++.
2890         * lang-specs.h: Handle compiling C++ header files.
2891
2892 2003-01-09  Jakub Jelinek  <jakub@redhat.com>
2893
2894         * decl.c (start_decl): Only check DECL_THREAD_LOCAL for VAR_DECLs.
2895
2896 2003-01-09  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2897
2898         * pt.c (push_access_scope_real): Call push_to_top_level for
2899         function in namespace scope.
2900         (pop_access_scope): Call pop_from_top_level for function in
2901         namespace scope.
2902
2903 2003-01-09  Jakub Jelinek  <jakub@redhat.com>
2904
2905         * decl.c (start_decl): Don't set DECL_COMMON for __thread variables.
2906
2907 2003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>
2908
2909         * Make-lang.in (c++.install-common, c++.install-man,
2910         c++.uninstall): Prepend $(DESTDIR) to destination paths in
2911         all (un)installation commands.
2912         (c++.install-common): Rewrite $(LN) commands to support
2913         DESTDIR with "ln" as well as with "ln -s".
2914
2915 2003-01-08  Jason Merrill  <jason@redhat.com>
2916
2917         * parser.c (cp_parser_primary_expression): See through explicitly
2918         scoped ALIAS_DECLs, too.
2919
2920 2003-01-08  Nathanael Nerode  <neroden@gcc.gnu.org>
2921
2922         * decl.c: Remove some #if 0 code.
2923
2924         * decl.c: ANSIfy function declarations.
2925
2926 2003-01-07  Mark Mitchell  <mark@codesourcery.com>
2927
2928         * parser.c (cp_parser_asm_definition): Correct handling of omitted
2929         operands.
2930
2931 2003-01-08  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2932
2933         PR c++/9030
2934         * decl.c (make_typename_type): Check access only when tf_error.
2935         (make_unbound_class_template): Likewise.
2936         * pt.c (saved_access_scope): New variable.
2937         (push_access_scope_real): New function.
2938         (push_access_scope): Likewise.
2939         (pop_access_scope): Likewise.
2940         (tsubst_default_argument): Use them.
2941         (instantiate_template): Likewise.
2942         (regenerate_decl_from_template): Likewise.
2943         (instantiate_decl): Likewise.
2944         (get_mostly_instantiated_function_type): Likewise.
2945
2946 2003-01-07  Nathanael Nerode <neroden@gcc.gnu.org>
2947
2948         * tree.c: Delete bogus #if 0 code.
2949
2950 2003-01-07  Andreas Schwab  <schwab@suse.de>
2951
2952         * class.c (layout_class_type): Don't use
2953         PCC_BITFIELD_TYPE_MATTERS if not defined.
2954
2955 2003-01-06  Mark Mitchell  <mark@codesourcery.com>
2956
2957         PR c++/9165
2958         * decl2.c (build_cleanup): Mark the object as used.
2959
2960         * pt.c (retrieve_local_specialization): Revert 2003-01-05 change.
2961         (hash_local_specialization): New function.
2962         (register_local_specialization): Revert 2003-01-05 change.
2963         (instantiate_decl): Use hash_local_specialization when creating
2964         the local_specializations table.
2965
2966         * decl2.c (mark_used): Do not synthesize thunks.
2967
2968         * class.c (layout_class_type): Correct handling of unnamed
2969         bitfields wider than their types.
2970
2971         PR c++/9189
2972         * parser.c (cp_parser): Remove default_arg_types.  Update
2973         documentation for unparsed_functions_queues.
2974         (cp_parser_late_parsing_default_args): Take a FUNCTION_DECL as the
2975         parameter.
2976         (cp_parser_new): Don't set parser->default_arg_types.
2977         (cp_parser_function_definition): Adjust usage of
2978         unparsed_funtions_queues.
2979         (cp_parser_class_specifier): Don't mess with
2980         parser->default_arg_types.  Handle default argument processing in
2981         a separate phase from function body processing.
2982         (cp_parser_template_declaration_after_export): Adjust usage of
2983         unparsed_functions_queues.
2984         (cp_parser_late_parsing_for_member): Do not handle default
2985         arguments.
2986
2987 2003-01-06  Nathan Sidwell  <nathan@codesourcery.com>
2988
2989         PR c++/9109
2990         * parser.c (cp_parser_declarator_kind): New enum.
2991         (cp_parser_declarator): Adjust.
2992         (cp_parser_direct_declarator): Adjust. Allow for either named or
2993         abstract declarator. Prefer abstract, if possible. Allow
2994         parenthesized function name.
2995         (cp_parser_condition): Adjust cp_parser_declarator call.
2996         (cp_parser_explicit_instantiation): Likewise.
2997         (cp_parser_init_declarator): Likewise.
2998         (cp_parser_type_id): Likewise.
2999         (cp_parser_function_definition): Likewise.
3000         (cp_parser_member_declaration): Likewise.
3001         (cp_parser_parameter_declaration): Use cp_parser_declarator to do
3002         the tentative parsing.
3003         (cp_parser_exception_declaration): Likewise.
3004
3005 2003-01-05  Mark Mitchell  <mark@codesourcery.com>
3006
3007         * parser.c (cp_parser_template_parameter): Adjust call to
3008         cp_parser_parameter_declaration.
3009         (cp_parser_parameter_declaration_list): Likewise.
3010         (cp_parser_parameter_declaration): Replace
3011         greater_than_is_operator_p with template_parm_p parameter.  Do not
3012         cache tokens for template default arguments.
3013
3014         * pt.c (retrieve_local_specialization): Use htab_find, not
3015         htab_find_with_hash.
3016         (register_local_specialization): Use htab_find_slot, not
3017         htab_find_slot_with_hash.
3018         (instantiate_decl): Pass a hash function to htab_create.
3019
3020 2003-01-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3021
3022         * parser.c (cp_parser_binary_expression,
3023         cp_parser_multiplicative_expression,
3024         cp_parser_additive_expression, cp_parser_shift_expression,
3025         cp_parser_relational_expression, cp_parser_equality_expression,
3026         cp_parser_and_expression, cp_parser_exclusive_or_expression,
3027         cp_parser_inclusive_or_expression,
3028         cp_parser_logical_and_expression, cp_parser_logical_or_expression,
3029         cp_parser_binary_expression): Const-ify.
3030
3031 2003-01-04  Mark Mitchell  <mark@codesourcery.com>
3032
3033         * method.c (use_thunk): Disable access control while building the
3034         body of the thunk.
3035
3036 2003-01-03  Nathanael Nerode  <neroden@gcc.gnu.org>
3037
3038         * cvt.c, decl.c, decl2.c: This is the C++ front end, not the C
3039         front end.
3040
3041 2003-01-03  Matt Austern  <austern@apple.com>
3042
3043         * cp-tree.h (struct lang_type_class): add field for key method
3044         (cp_global_trees): rename dynamic_classes to keyed_classes
3045         (key_method): add definition
3046         * class.c (finish_struct_1): compute class's key method, and add
3047         the class to keyed_classes list if there is no key method.
3048         * decl.c (finish_function): add class to keyed_classes list if we
3049         see a definition of the class's key method.
3050         * pt.c (instantiate_class_template): add template specialization
3051         of a dynamic class to keyed_classes list.
3052         * decl2.c (key_method): remove
3053         (finish_file): iterate only through keyed_classes list when
3054         deciding whether to emit vtables, remove class from its list after
3055         we do the emission.
3056
3057 2003-01-02  Jason Merrill  <jason@redhat.com>
3058
3059         * call.c (build_conditional_expr): Stabilize lvalues properly.
3060         * cvt.c (ocp_convert): Don't build NOP_EXPRs of class type.
3061         * tree.c (lvalue_p_1): Don't allow sloppy NOP_EXPRs as lvalues.
3062         Don't allow CALL_EXPR or VA_ARG_EXPR, either.
3063
3064         * call.c (convert_like_real): Call decl_constant_value for an
3065         IDENTITY_CONV even if there are no more conversions.
3066
3067         * cvt.c (build_up_reference): Don't push unnamed temps.
3068
3069         * decl2.c (do_namespace_alias): Namespace aliases are DECL_EXTERNAL.
3070
3071         * dump.c (cp_dump_tree): Don't try to dump class-specific fields
3072         for a backend struct.
3073
3074         * except.c (wrap_cleanups_r, build_throw): Make
3075         MUST_NOT_THROW_EXPRs void.
3076         * init.c (expand_default_init): Update to handle MUST_NOT_THROW_EXPR.
3077
3078         * init.c (build_vec_delete_1): Pre-evaluate the base address.
3079
3080         * init.c (get_temp_regvar): Simplify logic.
3081
3082         * tree.c (cp_copy_res_decl_for_inlining): Only do debug tweaks if
3083         our replacement is a decl.
3084
3085         * decl.c (cp_make_fname_decl): Push the decls inside the
3086         outermost scope.
3087
3088 2003-01-03  Nathan Sidwell  <nathan@codesourcery.com>
3089
3090         PR c++/45, c++/3784
3091         * tree.c (cp_tree_equal, TEMPLATE_PARM_INDEX): The types must be
3092         the same too.
3093
3094 2003-01-03  Graham Stott  <graham.stott@btinternet.com>
3095
3096         * parser.c (struct cp_parser): Add access_checks_lists field
3097         (cp_parser_simple_declaration): Use.
3098         (cp_parser_init_declarator): Likewise.
3099
3100 2003-01-02  Mark Mitchell  <mark@codesourcery.com>
3101
3102         * parser.c (cp_parser_declaration): Accept the __extension__
3103         keyword before the declaration.
3104
3105         PR c++/2843
3106         * parser.c (cp_parser_parameter_declaration): Allow attributes to
3107         appear after the declarator.
3108
3109         * call.c (build_new_method_call): Fix typo in message format
3110         string.
3111
3112 2003-01-02  Mark Mitchell  <mark@codesourcery.com>
3113
3114         * parser.c (cp_lexer_next_token_is): Declare it inline.
3115         (cp_lexer_set_source_position_from_token): Likewise.
3116         (cp_lexer_debugging_p): Likewise.
3117         (cp_parser_parsing_tentatively): Likewise.
3118         (cp_parser_nested_name_specifier_opt): Reduce the number of calls
3119         to the cp_lexer_peek_token.
3120
3121         * parser.c (cp_parser_sizeof_operand): Do not evaluate the
3122         expression.
3123
3124 2003-01-02  Steven Bosscher <s.bosscher@student.tudelft.nl>
3125
3126         * cp/except.c, cp/expr.c, cp/friend.c, cp/g++spec.c,
3127         cp/lang-options.h, cp/lang-specs.h, cp/lex.h, cp/ptree.c,
3128         cp/repo.c: Fix copyright years.
3129
3130 2003-01-01  Neil Booth  <neil@daikokuya.co.uk>
3131
3132         * lex.c: Remove superfluous include of cpplib.h.
3133         (CONSTRAINT): Define without conditions.
3134         (init_cp_pragma): Use c_register_pragma.
3135
3136 2002-12-31  Neil Booth  <neil@daikokuya.co.uk>
3137
3138         * .cvsignore: Remove.
3139
3140 2002-12-31  Steven Bosscher  <s.bosscher@student.tudelft.nl>
3141
3142         * call.c, class.c, cp-lang.c, cp-tree.h, cvt.c, dump.c, error.c,
3143           except.c, expr.c friend.c, g++spec.c, init.c, lang-options.h,
3144           lang-specs.h, lex.c, mangle.c, method.c, optimize.c, parser.c,
3145           pt.c, ptree.c, repo.c, rtti.c, search.c, semantics.c, tree.c,
3146           typeck.c, typeck2.c: Replace "GNU CC" with "GCC" in the
3147           copyright header.
3148         * lex.h: parse.y is dead, so don't mention it.  Also replace the
3149           copyright header with the default GNU copyright header.
3150
3151 2002-12-31  Mark Mitchell  <mark@codesourcery.com>
3152
3153         * cp-tree.h (LOOKUP_TEMPLATES_EXPECTED): Remove.
3154         (lookup_name_namespace_only): Likewise.
3155         (begin_only_namespace_names): Likewise.
3156         (end_only_namespace_names): Likewise.
3157         * decl.c (only_namespace_names): Remove.
3158         (qualify_lookup): Do not check LOOKUP_TEMPLATES_EXPECTED.
3159         (lookup_name_real): Do not check only_namespace_names.
3160         (lookup_name_namespace_only): Remove.
3161         (begin_only_namespace_names): Likewise.
3162         (end_only_namespace_names): Likewise.
3163         * parser.c (cp_parser_nested_name_specifier_opt): Handle erroneous
3164         nested-name-specifiers more gracefully.
3165         (cp_parser_class_or_namespace_name): Avoid looking up namespace
3166         names when they cannot possibly appear.
3167         (cp_parser_template_name): Adjust call to cp_parser_lookup_name.
3168         (cp_parser_elaborated_type_specifier): Likewise.
3169         (cp_parser_namespace_name): Only look for namespace names.
3170         (cp_parser_lookup_name): Add is_namespace parameter.
3171         (cp_parser_lookup_name_simple): Adjust call to
3172         cp_parser_lookup_name.
3173
3174         * parser.c (cp_parser_dependent_type_p): Fix thinko.
3175
3176 2002-12-31  Neil Booth  <neil@daikokuya.co.uk>
3177
3178         * .cvsignore: Update.
3179
3180 2002-12-31  Nathan Sidwell  <nathan@codesourcery.com>
3181
3182         * class.c (modify_vtable_entry): Remove unused variable.
3183         (get_vcall_index): Always expect a non-thunk.
3184         (update_vtable_entry_for_fn): Combine covariant adjustments, when
3185         overriding a thunk. Pass get_vcall_index a non-thunk.
3186
3187         * decl2.c (finish_file): Mark undefined inlines as extern.
3188
3189 2002-12-31  Mark Mitchell  <mark@codesourcery.com>
3190
3191         * cp-tree.def (RETURN_INIT): Remove.
3192         * cp-tree.h (DECL_IN_MEMORY_P): Remove.
3193         (scope_kind): Add sk_block, sk_try, sk_catch, sk_for.
3194         (note_level_for_for): Remove.
3195         (note_level_for_try): Likewise.
3196         (note_level_for_catch): Likewise.
3197         (finish_named_return_value): Likewise.
3198         (do_pushlevel): Change prototype.
3199         (pending_lang_change): Remove.
3200         * decl.c (begin_scope): Handle sk_block, sk_try, sk_catch,
3201         sk_for.
3202         (note_level_for_for): Remove.
3203         (note_level_for_try): Likewise.
3204         (note_level_for_catch): Likewise.
3205         (maybe_inject_for_scope_var): Remove use of DECL_IN_MEMORY_P.
3206         * parser.c (cp_parser_context_free_list): Make it "deletable".
3207         (cp_parser_template_argument): Remove misleading comment.
3208         * pt.c (tsubst_expr): Remove RETURN_INIT code.
3209         * semantics.c (genrtl_named_return_value): Remove.
3210         (do_pushlevel): Take a scope kind as an argument.
3211         (begin_if_stmt): Adjust.
3212         (begin_while_stmt): Likewise.
3213         (begin_for_stmt): Likewise.
3214         (finish_for_init_stmt): Likewise.
3215         (begin_switch_stmt): Likewise.
3216         (begin_handler): Likewise.
3217         (begin_compound_stmt): Likewise.
3218         (finish_named_return_value): Remove.
3219         (cp_expand_stmt): Remove RETURN_INIT case.
3220         * tree.c (cp_statement_code_p): Remove RETURN_INIT case.
3221
3222 2002-12-31  Mark Mitchell  <mark@codesourcery.com>
3223
3224         PR c++/9112
3225         * parser.c (cp_parser_direct_declarator): Handle erroneous
3226         parenthesized declarators correctly.
3227
3228 2002-12-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3229
3230         * cp-tree.h (pending_lang_change): Declare.
3231
3232 2002-12-30  Mark Mitchell  <mark@codesourcery.com>
3233
3234         * parser.c (cp_parser_context_free_list): New variable.
3235         (cp_parser_context_new): Use it.
3236         (cp_parser_error): Check return code from
3237         cp_parser_simulate_error.
3238         (cp_parser_simulate_error): Return a value.
3239         (cp_parser_id_expression): Optimize common case.
3240         (cp_parser_class_name): Likewise.
3241         (cp_parser_class_specifier): Adjust call to
3242         cp_parser_late_parsing_default_args.
3243         (cp_parser_lookup_name): Optimize common case.
3244         (cp_parser_late_parsing_for_member): Adjust call to
3245         cp_parser_late_parsing_default_args.
3246         (cp_parser_late_parsing_default_args): Add scope parameter.
3247         (cp_parser_require): Avoid creating the error message unless it's
3248         needed.
3249         (cp_parser_parse_definitely): Place free'd contexts on the free
3250         list.
3251
3252         * parser.c (cp_parser_declaration_seq_opt): Handle pending_lang_change.
3253
3254 2002-12-30  David Edelsohn  <edelsohn@gnu.org>
3255
3256         * parser.c (cp_parser_parameter_declaration_clause): Treat system
3257         header as extern "C" if NO_IMPLICIT_EXTERN_C undefined.
3258
3259 2002-12-30  Nathanael Nerode  <neroden@gcc.gnu.org>
3260
3261         * config-lang.in, Make-lang.in, operators.def, cp-tree.def:
3262         GCC, not GNU CC.
3263
3264 2002-12-30  Mark Mitchell  <mark@codesourcery.com>
3265
3266         * parse.y: Remove.
3267         * spew.c: Likewise.
3268         * Make-lang.in (gt-cp-spew.h): Remove.
3269         * cp-tree.h (do_pending_lang_change): Remove.
3270         (do_identifier): Change prototype.
3271         (finish_id_expr): Remove.
3272         * decl.c (lookup_name_real): Remove yylex variable.
3273         * decl2.c (build_expr_from_tree): Adjust call to do_identifier.
3274         * lex.c (init_cpp_parse): Remove.
3275         (reduce_cmp): Likewise.
3276         (token_cmp): Likewise.
3277         (yychar): Likewise.
3278         (lastiddecl): Likewise.
3279         (token_count): Likewise.
3280         (reduce_count): Likewise.
3281         (yyhook): Likewise.
3282         (print_parse_statistics): Likewise.
3283         (do_pending_lang_change): Likewise.
3284         (do_identifier): Remove parsing parameter.
3285         * lex.h (lastiddecl): Remove.
3286         (looking_for_typename): Remove.
3287         (looking_for_template): Likewise.
3288         (pending_lang_change): Likewise.
3289         (yylex): Likewise.
3290         * semantics.c (finish_id_expr): Remove.
3291
3292         * decl.c (grokdeclarator): Diagnost "extern thread" and "static
3293         thread" correctly.
3294
3295 2002-12-30  Nathanael Nerode  <neroden@gcc.gnu.org>
3296
3297         * decl.c, decl2.c, decl.h:  GCC, not GNU CC.  This is the C++ front
3298         end, not the C front end.
3299
3300 2002-12-30  Nathan Sidwell  <nathan@codesourcery.com>
3301
3302         * cp-tree.h (THUNK_TARGET): New macro.
3303         (THUNK_VIRTUAL_OFFSET): For result thunks it is always a binfo.
3304         (finish_thunk): Remove offset parms.
3305         * class.c (find_final_overrider): Look through thunks.
3306         (get_vcall_index): Use THUNK_TARGET.
3307         (update_vtable_entry_for_fn): Look through thunks. Set covariant
3308         fixed offset here. Adjust finish_thunk call.
3309         (build_vtbl_initializer): Adjust finish_thunk calls.
3310         * mangle.c (mangle_call_offset): Remove superfluous if.
3311         (mangle_thunk): Adjust.
3312         * method.c (make_thunk): Adjust.
3313         (finish_thunk): Adjust.
3314         (thunk_adjust): Remove assert.
3315         (use_thunk): Use THUNK_TARGET
3316         * dump1.c (cp_dump_tree): Adjust thunk dumping.
3317
3318         PR c++/9054
3319         * class.c (layout_class_type): Set TYPE_CONTEXT of type for base.
3320         * dump.c (cp_dump_tree, RECORD_TYPE): Deal with type for base types.
3321
3322 2002-12-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3323
3324         Remove traditional C constructs 4/n.
3325         * decl2.c (grok_method_quals, warn_if_unknown_interface,
3326         grok_x_components, cp_build_parm_decl, build_artificial_parm,
3327         maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
3328         delete_sanity, check_member_template, check_java_method,
3329         check_classfn, finish_static_data_member_decl, grokfield,
3330         grokbitfield, grokoptypename, grok_function_init,
3331         cplus_decl_attributes, constructor_name, defer_fn,
3332         build_anon_union_vars, finish_anon_union, coerce_new_type,
3333         coerce_delete_type, comdat_linkage, maybe_make_one_only,
3334         key_method, import_export_vtable, import_export_class,
3335         output_vtable_inherit, import_export_decl, import_export_tinfo,
3336         build_cleanup, get_guard, get_guard_bits, get_guard_cond,
3337         set_guard, start_objects, finish_objects,
3338         start_static_storage_duration_function,
3339         finish_static_storage_duration_function, get_priority_info,
3340         start_static_initialization_or_destruction,
3341         finish_static_initialization_or_destruction,
3342         do_static_initialization, do_static_destruction,
3343         prune_vars_needing_no_initialization, write_out_vars,
3344         reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
3345         add_using_namespace, merge_functions, ambiguous_decl,
3346         lookup_using_namespace, lookup_using_namespace,
3347         qualified_lookup_using_namespace, set_decl_namespace,
3348         decl_namespace, current_decl_namespace, push_decl_namespace,
3349         pop_decl_namespace, push_scope, pop_scope, add_function,
3350         arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
3351         lookup_arg_dependent, do_namespace_alias,
3352         validate_nonmember_using_decl, do_nonmember_using_decl,
3353         do_toplevel_using_decl, do_local_using_decl,
3354         do_class_using_decl, do_using_directive, check_default_args,
3355         mark_used, handle_class_head): Use C90 prototypings.  Use booleans.
3356         * parser.c (cp_parser_class_head): Use booleanss.
3357         * decl.c (walk_globals, walk_vtables): Likewise.
3358         * cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
3359         walk_globals): Change return type from 'int' to 'bool'.
3360         * rtti.c (init_rtti_processing, build_headof, throw_bad_cast
3361         throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
3362         build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
3363         get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
3364         qualifier_flags, tinfo_base_init, generic_initializer,
3365         ptr_initializer, dfs_class_hint_mark, ptm_initializer,
3366         dfs_class_hint_unmark, class_hint_flags, class_initializer,
3367         typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
3368         get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
3369         unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
3370         * repo.c (repo_compile_flags, repo_template_declared,
3371         repo_template_defined, repo_class_defined, repo_get_id,
3372         repo_template_used, repo_vtable_used, repo_inline_used,
3373         repo_tinfo_used, repo_template_instantiated, extract_string,
3374         open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
3375         finish_repo): Likewise.
3376         * ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
3377         cxx_print_xnode): Likewise..
3378         * cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
3379         cxx_warn_unused_global_decl, cp_expr_size): Likewise.
3380         * cxxfilt.c (demangle_it, print_demangler_list, usage,
3381         standard_symbol_characters, hp_symbol_characters, main, fatal):
3382         Likewise.
3383         (strip_underscore):  Change type from 'int' to 'bool'.
3384         (main): Use boolean constants.
3385
3386 2002-12-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3387
3388         Remove traditional C constructs 3/n.
3389         * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
3390         build_up_reference, warn_ref_binding, convert_to_reference,
3391         convert_from_reference, convert_lvalue, cp_convert, ocp_convert,
3392         convert_to_void, convert, convert_force, build_type_conversion,
3393         build_expr_type_conversion, type_promotes_to,
3394         perform_qualification_conversions): Use C90 prototyping style.
3395         * decl2.c (grok_array_decl): Use boolean constant.
3396         (delete_sanity): Likewise.
3397         * typeck.c (build_unary_op): Likewise.
3398         * semantics.c (finish_switch_cond): Likewise.
3399         * parser.c (cp_parser_direct_new_declarator): Likewise.
3400         * init.c (build_new): Likewise.
3401
3402 2002-12-27  Mark Mitchell  <mark@codesourcery.com>
3403
3404         * Make-lang.in (po-generated): Remove parse.c.
3405         (CXX_OBJS): Remove parse.o and spew.o.  Add parser.o.
3406         ($(srcdir)/cp/parse.h): Remove target.
3407         ($(srcdir)/cp/parse.c): Likewise.
3408         (gt-cp-parse.h): Likewise.
3409         (gt-cp-parser.h): New target.
3410         (c++.distclean): Do not remove parse.output.
3411         (c++.maintainer-clean): Do not remove parse.c or parse.h.
3412         (cp/spew.o): Remove target.
3413         (cp/lex.o): Adjust dependencies.
3414         (cp/pt.o): Likewise.
3415         (cp/parse.o): Likewise.
3416         (cp/TAGS): Do not mention parse.c.
3417         (cp/parser.o): New target.
3418         * NEWS: Mention the new parser.
3419         * call.c (build_scoped_method_call): Simplify.
3420         (build_method_call): Likewise.
3421         (build_new_function_call): Adjust calls to add_function_candidate
3422         and add_template_candidate.
3423         (build_new_op): Improve handling of erroroneous operands.
3424         (convert_default_arg): Remove circular argument processing.
3425         (name_as_c_string): New function.
3426         (build_new_method_call): Use it.
3427         (perform_implicit_conversion): Use error_operand_p.
3428         * class.c (finish_struct_anon): Use constructor_name_p.
3429         (check_field_decls): Likewise.
3430         (pop_nested_class): Use OVL_NEXT, not OVL_CHAIN.
3431         (resolve_address_of_overloaded_function): Likewise.
3432         (instantiate_type): Tweak pointer-to-member handling.
3433         (get_primary_binfo): Remove incorrect assertion.
3434         * config-lang.in (gtfiles): Add parser.c, remove parse.c.
3435         * cp-tree.h (DEFARG_TOKENS): New macro.
3436         (default_arg): New structure.
3437         (cp_tree_node_structure_enum): Add TS_CP_DEFAULT_ARG.
3438         (lang_tree_node): Add default_arg.
3439         (cp_tree_index): Add CPTI_TYPE_INFO_REF_TYPE.
3440         (type_info_ref_type): New macro.
3441         (saved_scope): Make processing_explicit_instantiation a boolean.
3442         (check_access): New field.
3443         (unparsed_text): Remove.
3444         (language_function): Remove unparsed_inlines.
3445         (error_operand_p): New macro.
3446         (lang_decl): Adjust pending_inline_info.
3447         (DEFARG_POINTER): Remove.
3448         (tag_types): Add typenames.
3449         (lookup_ualified_name): Declare.
3450         (lookup_name_real): Likewise.
3451         (shadow_tag): Adjust prototype.
3452         (get_scope_of_declarator): Declare it.
3453         (process_next_inline): Remove it.
3454         (check_for_missing_semicolon): Likewise.
3455         (maybe_get_template_decl_from_type_decl): Declare it.
3456         (finish_label_stmt): Adjust prototype.
3457         (finish_non_static_data_meber): Declare it.
3458         (finish_pseudo_destructor_call_expr): Rename to ...
3459         (finish_pseudo_destructor_expr): ... this.
3460         (finish_compound_literal): Declare it.
3461         (begin_inline_definitions): Remove it.
3462         (init_spew): Remove.
3463         (peekyylex): Likewise.
3464         (arbitrate_lookup): Likewise.
3465         (frob_opname): Likewise.
3466         (maybe_snarf_defarg): Likewise.
3467         (add_defarg_fn): Likewise.
3468         (do_pending_defargs): Likewise.
3469         (done_pending_defargs): Likewise.
3470         (unprocessed_defarg_fn): Likewise.
3471         (replace_defarg): Likewise.
3472         (end_input): Likewise.
3473         (get_overloaded_fn): Likewise.
3474         * cvt.c (convert_to_reference): Improve error handling.
3475         * decl.c (lookup_name_real): Do not declare it static.
3476         (maybe_push_to_top_level): Set check_access.
3477         (identifier_type_value): Adjust call to lookup_name_real.
3478         (lookup_qualified_name): New method.
3479         (lookup_name_real): Remove special-case parsing code.
3480         (lookup_name-nonclass): Adjust call to lookup_name_real.
3481         (lookup_name_namespace_only): Likewise.
3482         (lookup_name): Likewise.
3483         (check_tag_decl): Return the type declared.
3484         (shadow_tag): Likewise.
3485         (register_dtor_fn): Tweak check_access.
3486         (grokfndecl): Use constructor_name_p.
3487         (get_scope_of_declarator): New function.
3488         (grokdeclarator): Obscure tweaks for slightly different declarator
3489         representations.
3490         (start_method): Return error_mark_node to indicate failure.
3491         (cp_tree_node_structure_enum): Use TS_CP_DEFAULT_ARG for DEFAULT_ARGs.
3492         * decl2.c (constructor_name_full): Simplify.
3493         (constructor_name): Use it.
3494         (build_expr_from_tree): Adjust for changes to do new parser.
3495         (push_scope): Improve robustness.
3496         (validate_nonmember_using_decl): Process declarations, not names.
3497         (do_class_using_decl): Likewise.
3498         (handle_class_head): Do not mess with CLASSTYPE_DECLARED_CLASS
3499         here.
3500         * error.c (dump_expr): Handle IDENTIFIER_NODEs and BASELINKs.
3501         * expr.c (cxx_expand_expr): Handle BASELINKs.
3502         * init.c (member_init_ok_or_else): Issue more errors.
3503         (build_offset_ref): Tweak handling of FUNCTION_DECLs.
3504         * lex.c: Do not include parse.h.
3505         (yypring): Do not declare.
3506         (yylval): Likewise.
3507         (make_reference_declarator): Remove error-generating code.
3508         (rid_to_yy): Remove.
3509         (cxx_init): Do not call init_spew.
3510         (yypring): Remove.
3511         (check_for_missing_semicolon): Remove.
3512         * lex.h (got_scope): Remove.
3513         (got_object): Remove.
3514         * method.c (hack_identifier): Use finish_non_static_data_member.
3515         (implicitly_declare_fn): Adjust use of constructor_name.
3516         * parser.c: New file.
3517         * pt.c (parse.h): Do not include it.
3518         (maybe_get_template_decl_from_template): Do not declare it.
3519         (finish_member_template_decl): Tweak.
3520         (begin_explicit_instantiation): Adjust for
3521         processing_explicit_instantiation being boolean.
3522         (end_explicit_instantiation): Likewise.
3523         (maybe_process_partial_specialization): Tighten specialization
3524         test.
3525         (retrieve_local_specialization): Adjust ue of hash table.
3526         (eq_local_specializations): New function.
3527         (register_local_specialization): Likewise.
3528         (push_template_decl_real): Remove unnecessary test.
3529         (maybe_get_template_decl_from_type_decl): Don't make it static.
3530         (for_each_template_parm_r): Handle TYPEOF_TYPE.
3531         (tsubst_copy): Use retrieive_local_specialization to handle
3532         PARM_DECL.  Adjust handling of CONST_DECLs.  Handle BASELINKs.
3533         Handle COMPONENT_REFs with pseudo-destructor-expressions.
3534         Simplify handling of CALL_EXPR and METHOD_CALL_EXPR.
3535         (tsubst_expr): Pass decls, not names, to do_local_using_decl.
3536         (unify): Tweak handling of CONST_DECLs.
3537         (regenerate_decl_from_template): Use push_nested_class.
3538         (template_for_substitution): New funciton.
3539         (instantiate_decl): Use it.  Register parameters as local
3540         specializations.
3541         * rtti.c (init_rtti_processing): Set type_info_ref_type.
3542         (build_typeid): Use it.
3543         (get_typeid): Likeise.
3544         * search.c (accessible_p): Use check_access, not
3545         flag_access_control.
3546         (adjust_result_of_qualified_name_lookup): Pay attention to the
3547         context_class.
3548         * semantics.c (finish_asm_stmt): Adjust error handling.
3549         (finish_label_stmt): Return the statement.
3550         (finish_non_static_data_member): New function.
3551         (finish_class_expr): Handle BASELINKs.
3552         (finish_call_expr): Handle PSEUDO_DTOR_EXPR.
3553         (finish_object_call_expr): Simplify handling during templates.
3554         (finish_pseudo_destructor_call_expr): Rename to ...
3555         (finish_pseudo_dtor_expr): ... this.
3556         (finish_compound_literal): New function.
3557         (begin_inline_definitions): Remove.
3558         (finish_sizeof): Remove special template handling.
3559         * spew.c: Do not include parse.h.
3560         * tree.c (get_overloaded_fn): Remove.
3561         * typeck.c (build_class_member_access_expr): Handle
3562         PSEUDO_DTOR_EXPR.  Adjust handling of static member functions.
3563         (lookup_destructor): New function.
3564         (finish_class_member_access_expr): Use it.
3565         (convert_arguments): Simplify.
3566         (build_unary_op): Handle BASELINKs.
3567
3568 2002-12-26  Nathan Sidwell  <nathan@codesourcery.com>
3569
3570         PR c++/4803
3571         * decl2.c (mark_used): Defer inline functions.
3572         (finish_file): Merge deferred_fns loops. Check all used
3573         inline functions have a definition.
3574         * method.c (make_thunk): Thunks are not inline.
3575
3576         PR c++/5116, c++/764
3577         * call.c (build_new_op): Make sure template class operands are
3578         instantiated.
3579
3580 2002-12-24  Nathan Sidwell  <nathan@codesourcery.com>
3581
3582         PR C++/7964
3583         * cp-tree.h (resolve_scoped_fn_name): Prototype.
3584         * call.c (resolve_scoped_fn_name): New function. Deal with
3585         more template expansion. Broken out of ...
3586         * parse.y (parse_finish_call_expr): ... here. Call it.
3587         * decl2.c (build_expr_from_tree, CALL_EXPR): Use
3588         resolve_scoped_fn_name and build_call_from_tree.
3589
3590         PR c++/9053
3591         * decl.c (duplicate_decls): Templates may be disambiguated by
3592         return type.
3593
3594         PR c++/8702
3595         * decl2.c (check_classfn): Use lookup_fnfield_1. List all
3596         conversion operators on failure.
3597
3598 2002-12-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3599
3600         Remove traditional C constructs 2/n.
3601         * call.c (tourney, build_field_call, equal_functions, joust,
3602         compare_ics, build_over_call, build_java_interface_fn_ref,
3603         convert_like_real, op_error, build_object_call, resolve_args,
3604         build_vfield_ref, check_dtor_name, build_scoped_method_call,
3605         build_addr_func, build_call, build_method_call, null_ptr_cst_p,
3606         sufficient_parms_p, build_conv, non_reference, strip_top_quals,
3607         standard_conversion, reference_related_p,
3608         reference_compatible_p, convert_class_to_reference,
3609         direct_reference_binding, reference_binding,
3610         ,implicit_conversion, is_complete, promoted_arithmetic_type_p,
3611         add_template_conv_candidate, any_viable, any_strictly_viable,
3612         build_this, splice_viable, print_z_candidates,
3613         build_user_type_conversion, build_new_function_call,
3614         conditional_conversion, build_conditional_expr, build_new_op,
3615         build_op_delete_call, enforce_access, call_builtin_trap,
3616         convert_arg_to_ellipsis, build_x_va_arg, cxx_type_promotes_to,
3617         convert_default_arg, type_passed_as, convert_for_arg_passing,
3618         in_charge_arg_for_name, is_properly_derived_from,
3619         maybe_handle_implicit_object, maybe_handle_ref_bind,
3620         source_type, add_warning, can_convert, can_convert_arg,
3621         perform_implicit_conversion, can_convert_arg_bad,
3622         initialize_reference, add_conv_candidate,
3623         add_template_candidate_real, add_template_candidate): Ansify.
3624
3625 2002-12-22  Nathan Sidwell  <nathan@codesourcery.com>
3626
3627         PR c++/8572
3628         * cp-tree.h (grokoptypename): Add SCOPE parameter.
3629         * decl2.c (grokoptypename): Add SCOPE parameter. tsubst the type
3630         if in a template scope.
3631         * parse.y (unoperator): Return the scope.
3632         (operator_name): Adjust grokoptypename call.
3633
3634 2002-12-22  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3635
3636         * cp-tree.h (make_unbound_class_template): Use tsubst_flags_t.
3637         * decl.c (make_unbound_class_template): Adjust.  Check for tf_error.
3638         * pt.c (tsubst) [OFFSET_TYPE]: Check for tf_error.
3639
3640 2002-12-20  Kazu Hirata  <kazu@cs.umass.edu>
3641
3642         * ChangeLog: Fix a typo.
3643         * class.c: Fix comment typos.
3644         * cp-tree.h: Likewise.
3645
3646 2002-12-18  Jason Merrill  <jason@redhat.com>
3647
3648         Handle anonymous unions at the tree level.
3649         C++ ABI change: Mangle anonymous unions using the name of their
3650         first named field (by depth-first search).  Should not cause
3651         binary compatibility problems, though, as the compiler previously
3652         didn't emit anything for affected unions.
3653         * cp-tree.def (ALIAS_DECL): New tree code.
3654         * decl2.c (build_anon_union_vars): Build ALIAS_DECLs.  Return the
3655         first field, not the largest.
3656         (finish_anon_union): Don't mess with RTL.  Do set DECL_ASSEMBLER_NAME,
3657         push the decl, and write it out at namespace scope.
3658         * decl.c (lookup_name_real): See through an ALIAS_DECL.
3659         (pushdecl): Add namespace bindings for ALIAS_DECLs.
3660         * rtti.c (unemitted_tinfo_decl_p): Don't try to look at the name
3661         of a decl which doesn't have one.
3662         * typeck.c (build_class_member_access_expr): Don't recurse if
3663         we already have the type we want.
3664
3665 2002-12-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3666
3667         PR c++/8099
3668         * friend.c (make_friend_class): Allow partial specialization
3669         when declaration is not a template friend.
3670
3671 2002-12-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3672
3673         PR c++/3663
3674         * pt.c (lookup_template_class): Copy TREE_PRIVATE and
3675         TREE_PROTECTED to created decl nodes.
3676
3677 2002-12-18  Mark Mitchell  <mark@codesourcery.com>
3678
3679         * class.c (build_base_field): Do not set DECL_PACKED on the
3680         FIELD_DECL.
3681
3682 2002-12-18  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3683
3684         * cp-tree.h (struct tree_srcloc): Use location_t.
3685         (SOURCE_LOCUS): New.
3686         (SRCLOC_FILE, SRCLOC_LINE): Adjust.
3687
3688 2002-12-17  Jason Merrill  <jason@redhat.com>
3689
3690         * decl.c (finish_function): Also complain about no return in
3691         templates.
3692         * semantics.c (finish_return_stmt): Also call check_return_expr in
3693         templates.
3694         * typeck.c (check_return_expr): In a template, just remember that we
3695         saw a return.
3696
3697 2002-12-16  Jason Merrill  <jason@redhat.com>
3698
3699         * semantics.c (simplify_aggr_init_exprs_r): Don't change the type
3700         of the CALL_EXPR.
3701
3702         * semantics.c (do_pushlevel): Call pushlevel after adding the
3703         SCOPE_STMT.
3704         (do_poplevel): Call poplevel before adding the SCOPE_STMT.
3705         * parse.y (function_body): Go back to using compstmt.
3706         * decl.c (pushdecl): Skip another level to get to the parms level.
3707
3708         * call.c (build_new_method_call): Use is_dummy_object to determine
3709         whether or not to evaluate the object parameter to a static member
3710         function.
3711
3712 2002-12-14  Jason Merrill  <jason@redhat.com>
3713
3714         * semantics.c (simplify_aggr_init_exprs_r): Also prepend the
3715         return slot for normal functions.  Set CALL_EXPR_HAS_RETURN_SLOT_ADDR.
3716         * tree.c (build_cplus_new): If the type isn't TREE_ADDRESSABLE,
3717         don't bother with an AGGR_INIT_EXPR.
3718         (cp_copy_res_decl_for_inlining): If the type isn't TREE_ADDRESSABLE,
3719         just generate a new decl normally.  Take return slot parm.
3720         * cp-tree.h: Adjust prototype.
3721
3722 2002-12-13  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3723
3724         PR C++/8031
3725         * cvt.c (convert_to_pointer_force): Don't try comparing against
3726         erronous type.
3727
3728 2002-12-13  Geoffrey Keating  <geoffk@apple.com>
3729
3730         * cp-tree.h: Have the multiple-include guards around
3731         the entire file.
3732
3733 2002-12-10  David Edelsohn  <edelsohn@gnu.org>
3734
3735         * cp/spew.c (feed_input): Change limit to last_pos and pos to cur_pos
3736         for SPEW_DEBUG.
3737         (snarf_method): Same.
3738         (snarf_defarg): Same.
3739
3740 2002-12-10  Mark Mitchell  <mark@codesourcery.com>
3741
3742         PR c++/8372
3743         * pt.c (tsubst_copy): Handle destructor names more correctly.
3744
3745 2002-12-10  Matt Austern   <austern@apple.com>
3746
3747         * cp-tree.h: get rid of needs_virtual_reinit bit.
3748
3749 2002-12-09  Mark Mitchell  <mark@codesourcery.com>
3750
3751         * NEWS: Document removal of in-class initialization extension for
3752         static data members of non-arithmetic, non-enumeration type.
3753         * decl.c (check_static_variable_definition): Do not allow that
3754         extension.
3755         * decl2.c (grokfield): Do not call digest_init when processing
3756         templates.
3757
3758 2002-12-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3759
3760         * error.c (dump_expr): Fix format specifier warning.
3761
3762 2002-12-04  Geoffrey Keating  <geoffk@apple.com>
3763
3764         * class.c (finish_struct_1): Correct comment.
3765         * cp-tree.c (DECL_SORTED_FIELDS): Likewise.
3766
3767 2002-12-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3768
3769         PR C++/8799
3770         * error.c (dump_expr): Don't ever try to dump a non-existent
3771         expression.
3772
3773 2002-12-03  Nathan Sidwell  <nathan@codesourcery.com>
3774
3775         Implement covariant returns.
3776         * cp-tree.h (IS_AGGR_TYPE_2): Remove.
3777         (struct lang_decl_flags): Add this_thunk_p flag.
3778         Rename vcall_offset to virtual_offset.
3779         (struct lang_decl): Rename delta to fixed_offset.
3780         (DECL_THIS_THUNK_P, DECL_RESULT_THUNK_P): New #defines.
3781         (SET_DECL_THUNK_P): Add THIS_ADJUSTING arg.
3782         (THUNK_DELTA, THUNK_VCALL_OFFSET): Rename to ...
3783         (THUNK_FIXED_OFFSET, THUNK_VIRTUAL_OFFSET): ... here.
3784         (make_thunk): Add this_adjusting arg.
3785         (finish_thunk): Declare.
3786         (mangle_thunk): Add this_adjusting arg.
3787         * class.c (get_vcall_index): Use base function for lookup.
3788         (update_vtable_entry_for_fn): Generate covariant thunk.
3789         (finish_struct_1): Set DECL_VINDEX to NULL for thunks.
3790         (build_vtbl_initializer): Use base function for lookup.
3791         Finish covariant thunk here. Adjust thunk generation.
3792         * dump.c (cp_dump_tree): Simplify DECL_GLOBAL_[CD]TOR_P handling.
3793         Adjust thunk dumping.
3794         * mangle.c (mangle_call_offset): New function.
3795         (mangle_thunk): Adjust for covariant thunks.
3796         * method.c (make_thunk): Adjust. Do not set name here.
3797         (finish_thunk): New function. Set name here.
3798         (use_thunk): Generate covariant thunks too.
3799         (thunk_adjust): New function.
3800         * search.c (covariant_return_p): Remove. Fold into ...
3801         (check_final_overrider): ... here. Simplify.
3802         * semantics.c (emit_associated_thunks): Walk covariant thunk lists.
3803
3804 2002-12-03  Jason Merrill  <jason@redhat.com>
3805
3806         PR c++/8674
3807         * call.c (build_over_call): Check specifically for TARGET_EXPR
3808         when eliding.
3809
3810         PR c++/8461, c++/8625
3811         * call.c (convert_for_arg_passing): Don't mess with error_mark_node.
3812         (cp_convert_parm_for_inlining): Remove.
3813         * cp-lang.c (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
3814         Remove.
3815         * cp-tree.h (ADDR_IS_INVISIREF): Remove.
3816         * except.c (stabilize_throw_expr): Remove ADDR_IS_INVISIREF code.
3817
3818         * call.c (build_user_type_conversion_1): Don't set ICS_BAD_FLAG on
3819         an ambiguous conversion.
3820
3821 2002-12-03  Mark Mitchell  <mark@codesourcery.com>
3822
3823         PR c++/8688
3824         * decl.c (reshape_init): Handle erroneous initializers.
3825
3826 2002-12-02  Mark Mitchell  <mark@codesourcery.com>
3827
3828         PR c++/8720
3829         * spew.c (remove_last_token): Make sure that last_chunk is set
3830         correctly.
3831
3832         PR c++/8615
3833         * error.c (dump_expr): Handle character constants with
3834         TREE_OVERFLOW set.
3835
3836 2002-12-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3837
3838         DR 180
3839         * decl.c (grokdeclarator): Require class-key for all friend class.
3840         Output the correct type and context in the error message.
3841
3842 2002-12-01  Mark Mitchell  <mark@codesourcery.com>
3843
3844         PR c++/5919
3845         * pt.c (unify): Use variably_modified_type_p to test validity of
3846         template argument types.
3847
3848         PR c++/8727
3849         * cp-tree.h (lang_type_class): Add typeinfo_var.
3850         (CLASSTYPE_TYPEINFO_VAR): New macro.
3851         * rtti.c (get_tinfo_decl): Use it.
3852
3853         PR c++/8663
3854         * init.c (expand_member_init): Always get the main variant of a
3855         base class.
3856
3857 2002-12-01  Mark Mitchell  <mark@codesourcery.com>
3858
3859         PR c++/8332
3860         PR c++/8493
3861         * decl.c (cxx_init_decl_processing): Use size_type_node, not
3862         c_size_type_node.
3863         * decl2.c (coerce_new_type): Likewise.
3864         * except.c (do_allocate_exception): Likewise.
3865
3866 2002-11-30  Zack Weinberg  <zack@codesourcery.com>
3867
3868         * call.c, class.c, cp-lang.c, cvt.c, cxxfilt.c, decl.c, decl2.c,
3869         dump.c, error.c, except.c, expr.c, friend.c, g++spec.c, init.c,
3870         lex.c, mangle.c, method.c, optimize.c, parse.y, pt.c, ptree.c,
3871         repo.c, rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
3872         typeck2.c: Include coretypes.h and tm.h.
3873         * Make-lang.in: Update dependencies.
3874
3875 2002-11-30  Mark Mitchell  <mark@codesourcery.com>
3876
3877         PR c++/8227
3878         * decl.c (layout_var_decl): Deal gracefully with erroneous types.
3879         (check_initializer): Validate the type of the initialized
3880         variable, even if the initializer is absent.
3881         * typeck.c (cp_type_quals): Deal gracefully with erroneous types.
3882
3883         PR c++/8214
3884         * typeck.c (convert_for_assignment): Do not use
3885         decl_constant_value on the operand.
3886
3887         PR c++/8511
3888         * pt.c (instantiate_decl): Handle template friends defined outside
3889         of the class correctly.
3890
3891 2002-11-29  Joe Buck <jbuck@synopsys.com>
3892
3893         * parse.y (class_head_defn): Set CLASSTYPE_DECLARED_CLASS for
3894         anonymous structs.
3895
3896 2002-11-29  Mark Mitchell  <mark@codesourcery.com>
3897
3898         * class.c (walk_subobject_offsets): Recur on binfos as well as on
3899         types.
3900         (layout_nonempty_base_or_field): Pass it a binfo when processing a
3901         base class.
3902         (layout_empty_base): Likewise.
3903         (build_base_field): Likewise.
3904
3905 2002-11-27  Mark Mitchell  <mark@codesourcery.com>
3906
3907         * class.c (build_base_field): Make sure we get the canonical base
3908         when descending through primary bases.
3909
3910 2002-11-26  Geoffrey Keating  <geoffk@apple.com>
3911
3912         * decl.c (check_initializer): Don't error on initialisation of
3913         a scalar with a brace-enclosed expression.
3914
3915 2002-11-26  Nathan Sidwell  <nathan@codesourcery.com>
3916
3917         * cp-tree.h (DECL_LANG_FLAG_4): Document more uses.
3918         (template_parms_equal): Remove prototype.
3919         * typeck.c (buuld_indirect_ref): Reformat.
3920
3921 2002-11-25  Jason Merrill  <jason@redhat.com>
3922
3923         * init.c (build_vec_init): Use a FOR_STMT instead of an IF_STMT
3924         and a DO_STMT.
3925
3926 2002-11-25  Mark Mitchell  <mark@codesourcery.com>
3927
3928         * tree.c (cp_build_qualified_type_real): Correct handling of
3929         array types.
3930         * class.c (walk_subobject_offsets): Fix thinko.
3931         (build_base_field): Record offsets of empty bases in primary
3932         virtual bases.
3933         (layout_class_type): Record offsets of empty bases in fields.
3934
3935         * search.c (is_subobject_of_p_1): Fix thinko.
3936         (lookup_field_queue_p): Likewise.
3937
3938 2002-11-24  Mark Mitchell  <mark@codesourcery.com>
3939
3940         * class.c (layout_class_type): Reuse tail padding when laying out
3941         virtual bases.
3942
3943 2002-11-22  Mark Mitchell  <mark@codesourcery.com>
3944
3945         * rtti.c (qualifier_flags): Fix thinko.
3946
3947 2002-11-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3948
3949         Remove traditional C constructs 1/n.
3950         * cp-tree.h (init_method, set_mangled_name_for_decl,
3951         build_opfncall, hack_identifier, make_thunk, use_thunk,
3952         synthesize_method, implicitly_declare_fn,
3953         skip_artificial_parms_for, optimize_function, calls_setjmp_p,
3954         maybe_clone_body): Remove use of PARAMS.
3955
3956         * method.c (do_build_assign_ref, do_build_copy_constructor,
3957         synthesize_exception_spec, locate_dtor, locate_ctor, locate_copy):
3958         Likewise.
3959         (synthesize_method): Use 'bool' type and constants instead of
3960         'int'.
3961         (locate_copy): Likewise.
3962         (implicitly_declare_fn): Likewise.
3963
3964         * optimize.c (calls_setjmp_r, update_cloned_parm, dump_function):
3965         Remove old-style declaration.
3966         (maybe_clone_body): Use 'bool' type and constants.
3967
3968 2002-11-21  Glen Nakamura  <glen@imodulo.com>
3969
3970         PR c++/8342
3971         * typeck.c (get_member_function_from_ptrfunc): Make sure that a
3972         SAVE_EXPR for instance_ptr doesn't get evaluated first inside one
3973         of the branches of a COND_EXPR.
3974
3975 2002-11-19  Mark Mitchell  <mark@codesourcery.com>
3976
3977         * pt.c (for_each_template_parm): Free allocated memory.
3978         * search.c (is_subobject_of_p_1): New function.
3979         (is_subobject_of_p): Avoid walking virtual bases multiple times.
3980
3981 2002-11-19  Jason Thorpe  <thorpej@wasabisystems.com>
3982
3983         * g++spec.c (lang_specific_spec_functions): New.
3984
3985 2002-11-15  Kazu Hirata  <kazu@cs.umass.edu>
3986
3987         * ChangeLog: Follow spelling conventions.
3988         * class.c: Likewise.
3989         * decl2.c: Likewise.
3990
3991 2002-11-14  Zack Weinberg  <zack@codesourcery.com>
3992
3993         * search.c (dfs_push_decls): Do not try to reorder elements
3994         3..n of method_vec if method_vec has only two elements.
3995         Reverse order of two tests to avoid accessing unallocated
3996         memory.
3997
3998 2002-11-14  Mark Mitchell  <mark@codesourcery.com>
3999
4000         * class.c (dfs_find_final_overrider): Adjust so that the most
4001         derived object is a binfo, rather than a class type.
4002         (find_final_overrider): Likewise.
4003         (add_vcall_offset_vtbl_entries_1): Simplify accordingly.
4004         (add_vcall_offset): Likewise.
4005
4006 2002-11-09  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4007
4008         PR c++/8389
4009         * pt.c (instantiate_template): Push class scope for member
4010         functions.
4011         (get_mostly_instantiated_function_type): Likewise.  Don't call
4012         tsubst on context.  Remove CONTEXTP and TPARMSP parameters.
4013         * cp-tree.h (get_mostly_instantiated_function_type): Adjust.
4014         * mangle.c (write_encoding, write_unqualified_name): Adjust.
4015
4016 2002-11-07  Mark Mitchell  <mark@codesourcery.com>
4017
4018         * class.c (add_vcall_offset_vtbl_entries_1): Correct ordering of
4019         vcall offfsets.  Split out ...
4020         (add_vcall_offset): ... new function.
4021
4022         PR c++/8338
4023         * pt.c (for_each_template_parm): Add htab parameter.
4024         (process_partial_specialization): Adjust call.
4025         (push_template_decl_real): Likewise.
4026         (pair_fn_data): Add visited.
4027         (for_each_template_parm_r): Avoid walking duplicates more than
4028         once.
4029         (uses_template_parms): Adjust call to for_each_template_parm.
4030
4031 2002-11-07  Mark Mitchell  <mark@codesourcery.com>
4032
4033         * class.c (add_implicitly_declared_members): Put implicitly
4034         declared functions at the end of TYPE_METHODs when -fabi-version
4035         is at least 2.
4036
4037 2002-11-05  Geoffrey Keating  <geoffk@apple.com>
4038
4039         * decl2.c (finish_file): Correct spelling.
4040
4041 2002-11-03  Mark Mitchell  <mark@codesourcery.com>
4042
4043         * call.c (build_special_member_call): Do not try to lookup VTTs by
4044         name.
4045         * class.c (vtbl_init_data): Add generate_vcall_entries.
4046         (get_vtable_decl): Do not look up virtual tables by name.
4047         (copy_virtuals): Do not use BV_USE_VCALL_INDEX_P.
4048         (set_primary_base): Do not set CLASSTYPE_RTTI.
4049         (determine_primary_base): Likewise.
4050         (get_matching_virtual): Remove.
4051         (get_vcall_index): New function.
4052         (update_vtable_entry_for_fn): Do not try to use virtual thunks
4053         when they are not required.  Assign vcall indices at this point.
4054         (finish_struct_1): Do not set CLASSTYPE_NEEDS_VIRTUAL_REINIT.
4055         Do update dynamic_classes.
4056         (build_vtt): Do not add VTTs to the symbol table.
4057         (build_ctor_vtbl_group): Likewise.
4058         (build_vtbl_initializer): Simplify handling of vcall indices.
4059         (build_vcall_offset_vtbl_entries): Pretend to build vcall offsets
4060         for the most derived class.
4061         (add_vcall_offset_vtbl_entries_1): But do not actually add them to
4062         the vtable.
4063         * cp-tree.h (dynamic_classes): New macro.
4064         (lang_type_class): Remove rtti.  Add vtables.  Add vcall_indices.
4065         (CLASSTYPE_RTTI): Remove.
4066         (CLASSTYPE_NEEDS_VIRTUAL_REINIT): Remove.
4067         (CLASSTYPE_VCALL_INDICES): New macro.
4068         (CLASSTYPE_VTABLES): Likewise.
4069         (BV_USE_VCALL_INDEX_P): Remove.
4070         (build_vtable_path): Remove.
4071         * decl2.c (finish_vtable_vardecl): Remove.
4072         (key_method): Remove #if 0'd code.
4073         (finish_vtable_vardecl): Rename to ...
4074         (maybe_emit_vtables): ... this.
4075         (finish_file): Use it.
4076         * search.c (look_for_overrides_here): Update comment.
4077
4078 2002-11-01  Zack Weinberg  <zack@codesourcery.com>
4079
4080         PR c/7353 redux
4081         * decl2.c (grokfield): Reject TYPE_DECLs with initializers.
4082
4083 2002-10-30  Jason Merrill  <jason@redhat.com>
4084
4085         PR c++/8186
4086         * cp-tree.h (ADDR_IS_INVISIREF): New macro.
4087         * call.c (convert_for_arg_passing): Set it.
4088         * except.c (stabilize_throw_expr): Recurse for such an arg.
4089
4090 2002-10-31  Mark Mitchell  <mark@codesourcery.com>
4091
4092         * cp-tree.h (lang_decl_flags): Remove init_priority.
4093         (lang_decl): Add delta.
4094         (GLOBAL_INIT_PRIORITY): Remove.
4095         (THUNK_DELTA): Revise definition.
4096         * decl2.c (start_objects): Don't set GLOBAL_INIT_PRIORITY.
4097         * dump.c (cp_dump_tree): Don't dump it.
4098
4099 2002-10-30  Mark Mitchell  <mark@codesourcery.com>
4100
4101         PR c++/8160
4102         * typeck2.c (process_init_constructor): Call complete_array_type.
4103
4104         PR c++/8149
4105         * decl.c (make_typename_type): Issue errors about invalid results.
4106
4107 2002-10-30  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4108
4109         Core issue 287, PR c++/7639
4110         * cp-tree.h (lang_type_class): Add decl_list field.
4111         (CLASSTYPE_DECL_LIST): New macro.
4112         (maybe_add_class_template_decl_list): Add declaration.
4113         * class.c (duplicate_tag_error): Initialize CLASSTYPE_DECL_LIST.
4114         (unreverse_member_declarations): Reverse CLASSTYPE_DECL_LIST.
4115         (maybe_add_class_template_decl_list): New function.
4116         (add_implicitly_declared_members): Use it.
4117         * decl.c (maybe_process_template_type_declaration): Likewise.
4118         (pushtag): Likewise.
4119         * friend.c (add_friend): Likewise.
4120         (make_friend_class): Likewise.
4121         * semantics.c (finish_member_declaration): Likewise.
4122         (begin_class_definition): Initialize CLASSTYPE_DECL_LIST.
4123         * pt.c (instantiate_class_template): Use CLASSTYPE_DECL_LIST
4124         to process members and friends in the order of declaration.
4125
4126 2002-10-29  Mark Mitchell  <mark@codesourcery.com>
4127
4128         PR c++/8287
4129         * decl.c (finish_destructor_body): Create the label to jump to
4130         when returning from a destructor here.
4131         (finish_function_body): Rather than here.
4132
4133 2002-10-25  Zack Weinberg  <zack@codesourcery.com>
4134
4135         PR c++/7266
4136         * decl.c (grokdeclarator): Check that TREE_OPERAND 0 of a
4137         SCOPE_REF is not null before dereferencing it.
4138
4139 2002-10-25  Mark Mitchell  <mark@codesourcery.com>
4140
4141         * call.c (build_over_call): Use DECL_CONTEXT, not
4142         DECL_VIRTUAL_CONTEXT.
4143         * class.c (modify_vtable_entry): Don't mess with
4144         DECL_VIRTUAL_CONTEXT.
4145         (set_vindex): Remove.
4146         (set_primary_base): Remove vfuns_p parameter.
4147         (determine_primary_base): Likewise.
4148         (modify_all_vtables): Likewise.
4149         (layout_class_type): Likewise.  Adjust calls to other functions
4150         accordingly.
4151         (finish_struct_1): Adjust calls to modified functions.  Set
4152         DECL_VINDEX here.
4153         * cp-tree.h (lang_type_class): Remove vsize.
4154         (CLASSTYPE_VSIZE): Remove.
4155         (lang_decl): Remove thunks.
4156         (DECL_THUNKS): Adjust.
4157         (DECL_VIRTUAL_CONTEXT): Remove.
4158         (duplicate_decls): Don't copy it.
4159         * pt.c (build_template_decl): Don't set it.
4160         (tsubst_decl): Likewise.
4161         * typeck.c (expand_ptrmemfunc_cst): Don't use it.
4162
4163         * class.c (build_vtbl_initializer): Don't use build_vtable_entry.
4164         (build_vtable_entry): Remove.
4165         * cp-tree.h (BINFO_VIRTUALS): Expand documentation.
4166         (lang_decl): Add thunks.
4167         (DECL_THUNKS): New macro.
4168         * decl.c (duplicate_decls): Copy it.
4169         * method.c (make_thunk): Simplify, and add thunks to DECL_THUNKS.
4170         * semantics.c (emit_associated_thunks): Simplify.
4171
4172 2002-10-24  David Edelsohn  <edelsohn@gnu.org>
4173
4174         PR c++/7228
4175         * cp-tree.h (CLASSTYPE_READONLY_FIELDS_NEED_INIT): Check that
4176         lang_type structure exists before accessing field.
4177         (SET_CLASSTYPE_READONLY_FIELDS_NEED_INIT): New macro.
4178         (CLASSTYPE_REF_FIELDS_NEED_INIT): Similar.
4179         (SET_CLASSTYPE_REF_FIELDS_NEED_INIT): New macro.
4180         * class.c (check_field_decls): Use new macros.
4181         * typeck2.c (process_init_constructor): Remove redundant check for
4182         existence of lang_type structure.
4183
4184 2002-10-24  Mark Mitchell  <mark@codesourcery.com>
4185
4186         * class.c (end_of_base): New method.
4187         (end_of_class): Use it.  Check indirect virtual bases.
4188
4189         * class.c (check_field_decls): Fix typo.
4190
4191 2002-10-23  Mark Mitchell  <mark@codesourcery.com>
4192
4193         PR c++/8067
4194         * decl.c (maybe_inject_for_scope_var): Ignore __FUNCTION__ and
4195         related variables.
4196
4197         PR c++/7679
4198         * spew.c (next_token): Do not return an endless stream of
4199         END_OF_SAVED_INPUT tokens.
4200         (snarf_method): Add three END_OF_SAVED_INPUT tokens to the end of
4201         the cached token stream.
4202         (snarf_defarg): Likewise.
4203
4204 2002-10-23  Zack Weinberg  <zack@codesourcery.com>
4205
4206         * cp-lang.c (cp_var_mod_type_p): New: C++ hook for
4207         variably_modified_type_p.
4208         * cp-tree.h: Remove prototype of variably_modified_type_p.
4209         * tree.c (variably_modified_type_p): Remove; now implemented
4210         in language-independent code.
4211
4212 2002-10-22  Mark Mitchell  <mark@codesourcery.com>
4213
4214         PR c++/6579
4215         * spew.c (snarf_parenthesized_expression): New function.
4216         (snarf_block): Use it.
4217
4218 2002-10-22  Richard Henderson  <rth@redhat.com>
4219
4220         * method.c (use_thunk): Always compute vcall_value; assert that
4221         it is not zero.  Use can_output_mi_thunk; use output_mi_thunk
4222         for vcall thunks as well.
4223
4224 2002-10-21  Mark Mitchell  <mark@codesourcery.com>
4225
4226         * class.c (empty_base_at_nonzero_offset_p): New function.
4227         (layout_nonempty_base_or_field): Do not check for conflicts when
4228         laying out a virtual base using the GCC 3.2 ABI.
4229         (build_base_field): Correct checking for presence of empty classes
4230         at nonzero offsets when clearing CLASSTYPE_NEARLY_EMPTY_P.
4231
4232         * class.c (include_empty_classes): Use normalize_rli.
4233         (layout_class_type): Likewise.
4234
4235         * decl.c (reshape_init): Tweak handling of character arrays.
4236
4237         PR c++/8218
4238         * cp-tree.h (lang_type_class): Add contains_empty_class_p.
4239         (CLASSTYPE_CONTAINS_EMPTY_CLASS_P): New macro.
4240         * class.c (check_bases): Update CLASSTYPE_CONTAINS_EMPTY_CLASS_P.
4241         (check_field_decls): Likewise.
4242         (layout_class_type): Likewise.
4243         (finish_struct_1): Initialize it.
4244         (walk_subobject_offsets): Use it to prune searches.
4245
4246 2002-10-20  Mark Mitchell  <mark@codesourcery.com>
4247
4248         * method.c (use_thunk): Compute the vcall index as a HOST_WIDE_INT.
4249         * optimize.c (optimize_function): Replace ASM_OUTPUT_MI_THUNK with
4250         TARGET_ASM_OUTPUT_MI_THUNK in comments.
4251
4252 2002-10-18  Zack Weinberg  <zack@codesourcery.com>
4253
4254         * decl.c (start_decl): Point users of the old initialized-
4255         typedef extension at __typeof__.
4256
4257 2002-10-18  Mark Mitchell  <mark@codesourcery.com>
4258
4259         * Make-lang.in (method.o): Depend on TARGET_H.
4260         * method.c (target.h): Include it.
4261         (use_thunk): Use target hooks.  Use vcall thunks, if available.
4262
4263 2002-10-18  Mark Mitchell  <mark@codesourcery.com>
4264
4265         * class.c (base_derived_from): Make sure return value is a bool.
4266
4267 2002-10-18  Mark Mitchell  <mark@codesourcery.com>
4268
4269         * class.c (find_final_overrider_data_s): Remove overriding_fn and
4270         overriding_base.
4271         (dfs_base_derived_from): New function.
4272         (base_derived_from): Likewise.
4273         (dfs_find_final_overrider): Use base_derived_from.
4274         (find_final_overrider): Adjust.
4275
4276 2002-10-18  Jason Merrill  <jason@redhat.com>
4277
4278         PR c++/8080
4279         * semantics.c (finish_for_cond, finish_while_cond): Don't mess
4280         with condition decls in a template.
4281
4282 2002-10-17  Nathan Sidwell  <nathan@codesourcery.com>
4283
4284         * class.c (add_method): Compare template parms too.
4285
4286 2002-10-17  Mark Mitchell  <mark@codesourcery.com>
4287
4288         PR c++/7584
4289         * class.c (handle_using_decl): Allow the declaration used to be
4290         from an ambiguous base.
4291
4292         * pt.c (convert_template_argument): Revert this change:
4293                 2002-10-16  Mark Mitchell  <mark@codesourcery.com>
4294                 * pt.c (convert_template_argument): Do not fold non-type
4295                 template rguments when inside a template.
4296
4297         * init.c (expand_default_init): Handle brace-enclosed initializers
4298         correctly.
4299
4300 2002-10-16  Mark Mitchell  <mark@codesourcery.com>
4301
4302         * mangle.c (write_expression): Correct handling of enumeration
4303         constants.
4304         (write_template_arg): Likewise.
4305         * pt.c (convert_template_argument): Do not fold non-type template
4306         arguments when inside a template.
4307
4308         PR c++/7478
4309         * cvt.c (convert_to_reference): Allow references as the incoming
4310         type.
4311
4312 2002-10-16  Mark Mitchell  <mark@codesourcery.com>
4313
4314         PR c++/7524
4315         * method.c (do_build_assign_ref): Use cp_build_qualified_type, not
4316         build_qualified_type.
4317
4318 2002-10-15  Richard Henderson  <rth@redhat.com>
4319
4320         * error.c (dump_expr): Use real_to_decimal directly, and with
4321         the new arguments.
4322
4323 2002-10-15  Mark Mitchell  <mark@codesourcery.com>
4324
4325         * decl.c (reshape_init): Fix typo.
4326
4327         * cp-tree.h (operator_name_info_t): Add arity.
4328         * lex.c (init_operators): Initialize it.
4329         * mangle.c (write_conversion_operator_name): New function.
4330         (write_unqualified_name): Use it.
4331         (write_template_args): Accept template arguments as a TREE_LIST.
4332         (write_expression): Adjust handling of qualified names to match
4333         specification.
4334
4335 2002-10-15  Jason Merrill  <jason@redhat.com>
4336
4337         * call.c (call_builtin_trap): New fn.
4338         (convert_arg_to_ellipsis): Use it.  Downgrade error to warning.
4339         (build_call): Don't set current_function_returns_abnormally outside
4340         a function.
4341
4342 2002-10-14  Mark Mitchell  <mark@codesourcery.com>
4343
4344         * class.c (check_field_decls): Remove empty_p parameter.  Instead,
4345         clear CLASSTYPE_EMPTY_P.
4346         (build_base_field): Likewise.
4347         (build_base_fields): Likewise.
4348         (check_bases_and_members): Likewise.
4349         (create_vtbl_ptr): Likewise.
4350         (layout_class_type): Likewise.  Ensure that empty classes have
4351         size zero when used as base classes in the 3.2 ABI.
4352         (finish_struct_1): Initialize CLASSTYPE_EMPTY_P and
4353         CLASSTYPE_NEARLY_EMPTY_P.  Adjust calls to avoid passing empty_p
4354         parameter.
4355         (is_empty_class): Correct definition when using post-3.2 ABI.
4356         * cp-tree.h (lang_type_class): Add empty_p.
4357         (CLASSTYPE_EMPTY_P): New macro.
4358
4359 2002-10-12  Nathan Sidwell  <nathan@codesourcery.com>
4360
4361         * init.c (build_delete): Do not apply save_expr for arrays.
4362         (build_vec_delete): Likewise.
4363
4364 2002-10-14  Mark Mitchell  <mark@codesourcery.com>
4365
4366         * decl.c (layout_var_decl): Call layout_decl even for variables
4367         whose type is an array with unspecified bounds.
4368
4369         PR c++/7176
4370         * lex.c (do_identifier): Add another option for the parsing
4371         parameter.
4372         * parse.y (do_id): Use it.
4373
4374 2002-10-11  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4375
4376         PRs C++/6803, C++/7721 and C++/7803
4377         * decl.c (grokdeclarator): Gracefully handle template-name as
4378         decl-specifier.
4379
4380 2002-10-11  Jason Molenda  <jmolenda@apple.com>
4381
4382         * init.c (build_field_list): Provide uses_unions_p with a default
4383         value.
4384
4385 2002-10-11  Mark Mitchell  <mark@codesourcery.com>
4386
4387         PR c++/5661
4388         * cp-tree.h (variably_modified_type_p): New function.
4389         (grokdeclarator) Tighten check for variably modified types as
4390         fields.
4391         * pt.c (convert_template_argument): Do not allow variably modified
4392         types as template arguments.
4393         * tree.c (variably_modified_type_p): New function.
4394
4395         * NEWS: Document removal of "new X = ..." extension.
4396         * class.c (initialize_array): Set TREE_HAS_CONSTRUCTOR on
4397         brace-enclosed initializers.
4398         * cp-tree.h (CP_AGGREGATE_TYPE_P): New macro.
4399         (initialize_local_var): Remove declaration.
4400         (expand_static_init): Likewise.
4401         * decl.c (next_initializable_field): New function.
4402         (reshape_init): Likewise.
4403         (check_initializer): Use them.  Build dynamic initializer for
4404         aggregates here too.
4405         (initialize_local_var): Simplify, and incorporate cleanup
4406         insertion code as well.
4407         (destroy_local_var): Remove.
4408         (cp_finish_decl): Tidy.
4409         (expand_static_init): Fold checks for whether or not a variable
4410         needs initialization into this function.  Simplify.
4411         * decl2.c (do_static_initialization): Simplify.
4412         * init.c (build_init): Do not set TREE_SIDE_EFFECTS when it will
4413         be done for us automatically.
4414         (expand_default_init): Handle brace-enclosed initializers
4415         correctly.
4416         (expand_aggr_init_1): Remove RTL-generation code.
4417         (build_vec_init): Remove "new X = ..." support.
4418         * parse.y (new_initializer): Likewise.
4419         * rtti.c (get_pseudo_ti_init): Set TREE_HAS_CONSTRUCTOR on
4420         brace-enclosed initializer.
4421         (create_pseudo_type_info): Likewise.
4422         * typeck2.c (store_init_value): Don't try to handle digest_init
4423         being called more than once.
4424         (digest_init): Tidy handling of brace-enclosed initializers.
4425
4426 2002-10-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4427
4428         * decl.c (typename_hash): Use htab_hash_pointer.
4429
4430 2002-10-10  Jim Wilson  <wilson@redhat.com>
4431
4432         * decl.c (duplicate_decls): Don't call decl_attributes.
4433
4434 2002-10-09  Zack Weinberg  <zack@codesourcery.com>
4435
4436         PR c/7353
4437         * decl.c (start_decl): Unconditionally issue error for
4438         'typedef foo = bar'.
4439         (cp_finish_decl): Remove special case for TYPE_DECL with initializer.
4440         (grokdeclarator): Remove redundant error for 'typedef foo = bar'.
4441
4442 2002-10-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4443
4444         * decl2.c (prune_vtable_vardecl): Delete unused function.
4445
4446 2002-10-03  Mark Mitchell  <mark@codesourcery.com>
4447
4448         PR c++/7754
4449         * decl2.c (finish_anon_union): Do not expand anonymous unions when
4450         procesing template functions.
4451         * pt.c (tsubst_decl, case VAR_DECL): Try to complete the variable
4452         type. Call layout_decl.
4453         (tsubst_expr, case DECL_STMT): Handle anonymous unions.
4454
4455 2002-10-07  Richard Henderson  <rth@redhat.com>
4456
4457         * decl2.c, pt.c: Revert c++/7754 fix.
4458
4459 2002-10-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4460
4461         PR c++/7804
4462         * error.c (dump_expr) [REAL_CST]: Output in decimal format.
4463
4464 2002-10-03  Mark Mitchell  <mark@codesourcery.com>
4465
4466         PR c++/7931
4467         * pt.c (for_each_template_parm_r): Handle BASELINKs.
4468
4469         PR c++/7754
4470         * decl2.c (finish_anon_union): Do not expand anonymous unions when
4471         procesing template functions.
4472         * pt.c (tsubst_decl, case VAR_DECL): Try to complete the variable
4473         type. Call layout_decl.
4474         (tsubst_expr, case DECL_STMT): Handle anonymous unions.
4475
4476 2002-10-03  Mark Mitchell  <mark@codesourcery.com>
4477
4478         PR c++/8006
4479         * mangle.c (CLASSTYPE_TEMPLATE_ID_P): Handle instances of template
4480         template parameters.
4481         (globals): Add entity and need_abi_warning.
4482         (decl_is_template_id): Use TYPE_TEMPLATE_INFO, not
4483         CLASSTYPE_TEMPLATE_INFO.
4484         (is_std_substitution): Use CLASSTYPE_TI_TEMPLATE, not
4485         TYPE_TI_TEMPLATE.
4486         (write_prefix): Handle typename types correctly.
4487         (write_template_prefix): Handle template template parameters
4488         correctly.
4489         (start_mangling): Add entity parameter.
4490         (finish_mangling): Warn about names whose mangling will change.
4491         (mangle_decl_string): Adjust.
4492         (mangle_type_string): Likewise.
4493         (mangle_special_for_type): Likewise.
4494         (mangle_ctor_vtbl_for_type): Likewise.
4495         (mangle_thunk): Likewise.
4496         (mangle_guard_variable): Likewise.
4497         (mangle_ref_init_variable): Likewise.
4498
4499 2002-10-02  Mark Mitchell  <mark@codesourcery.com>
4500
4501         PR c++/7188.
4502         * cp-tree.def (CTOR_INITIALIZER): Use one slot, not two.
4503         * cp-tree.h (emit_base_init): Rename to ....
4504         (emit_mem_initializers): ... this.
4505         (expand_member_init): Change prototype.
4506         * init.c (perform_member_init): Compute explicit, rather than
4507         requiring it as a parameter.
4508         (sort_member_init): Rename to ...
4509         (sort_mem_initializers): ... this.  Process bases and data members
4510         together.
4511         (sort_base_init): Remove.
4512         (emit_base_init): Rename to ...
4513         (emit_mem_initializers): ... this.
4514         (expand_aggr_vbase_init_1): Remove.
4515         (construct_virtual_bases): Rename to ...
4516         (construct_virtual_base): ... this.
4517         (expand_member_init): Rework handling of base initializers.
4518         * method.c (do_build_copy_constructor): Use
4519         finish_mem_initializers.
4520         * parse.y (member_init): Adjust calls to expand_member_init.
4521         * pt.c (tsubst_expr): Simplify CTOR_INITIALIZER case.
4522         (tsubst_initializer_list): Use expand_member_init.
4523         * semantics.c (finish_mem_intiailizers): Simplify.
4524
4525 2002-10-02  Matt Austern  <austern@apple.com>
4526         * decl.c (walk_vtables_r): Fixed typo that caused result to
4527         never get a nonzero value.
4528
4529 2002-10-02  Roger Sayle  <roger@eyesopen.com>
4530
4531         PR optimization/6627
4532         * cp-tree.h (enum ptrmemfunc_vbit_where_t): Delete definition
4533         from here, and move it to tree.h.
4534         * decl.c (cxx_init_decl_processing): If storing the vbit
4535         in function pointers, ensure that force_align_functions_log
4536         is atleast one.
4537
4538 2002-10-02  Matt Austern  <austern@apple.com>
4539
4540         * class.c (check_field_decls): Changed warning about const member
4541         variables so that it doesn't get issued for a class aggregate.
4542
4543 2002-10-01  Mark Mitchell  <mark@codesourcery.com>
4544
4545         * decl.c (cp_finish_decl): Make sure array types are laid out,
4546         even if the array bounds are unknown.
4547
4548 2002-10-01  Steve Ellcey  <sje@cup.hp.com>
4549
4550         * class.c (build_vtbl_initializer): Change build_c_cast
4551         to build1.
4552
4553 2002-10-01  Mark Mitchell  <mark@codesourcery.com>
4554
4555         * decl.c (cp_finish_decl): Make sure array types are laid out,
4556         even if the array bounds are unknown.
4557
4558         * decl.c (cp_finish_decl): Correct check for dynamic
4559         initialization of thread-local storage.
4560
4561 2002-09-30  Nathan Sidwell  <nathan@codesourcery.com>
4562
4563         * tree.c (really_overloaded_fn): TEMPLATE_ID_EXPRs are also
4564         overloaded.
4565
4566 2002-09-30  Steve Ellcey  <sje@cup.hp.com>
4567
4568         * class.c (build_vtbl_initializer): Add cast.
4569         (add_vcall_offset_vtbl_entries_1):
4570         Use TARGET_VTABLE_DATA_ENTRY_DISTANCE for offset.
4571
4572 2002-09-30  Mark Mitchell  <mark@codesourcery.com>
4573
4574         * class.c (walk_subobject_offsets): Correct the calculation of
4575         offsets for virtual bases.  Correct the counting of array
4576         elements.
4577         (layout_nonempty_base_or_field): Simplify.  Correct the
4578         calculation of offsets to be propagated through the binfo
4579         hierarchy.
4580         (build_base_field): Avoid creating a FIELD_DECL for empty bases.
4581         Add the FIELD_DECL to TYPE_FIELDS.
4582         (build_base_fields): Adjust accordingly.
4583         (layout_virtual_bases): Use build_base_field.
4584         (end_of_class): Return a tree, not an integer.
4585         (warn_about_ambiguous_direct_bases): Rename to ...
4586         (warn_about_ambiguous_bases): ... this.
4587         (include_empty_classes): New function.
4588         (layout_class_type): Create an alternative version of the type to
4589         be used when as a base class type.  Do not call
4590         finish_record_layout until we are done laying out the class.
4591         * cp-tree.h (lang_type_class): Remove size, size_unit.  Add
4592         as_base.
4593         (CLASSTYPE_SIZE): Reimplement.
4594         (CLASSTYPE_SIZE_UNIT): Likewise.
4595         (CLASSTYPE_ALIGN): Likweise.
4596         (CLASSTYPE_USER_ALIGN): Likewise.
4597         (CLASSTYPE_AS_BASE): New macro.
4598         (DECL_INITIALIZED_P): Likewise.
4599         (extract_init): Remove prototype.
4600         (build_forced_zero_init): Rename to ...
4601         (build_zero_init): ... this.
4602         (force_store_init_value): Remove.
4603         * decl.c (obscure_complex_init): Remove.
4604         (duplicate_decls): Copy DECL_INITIALIZED_P.
4605         (check_initializer): Do not leave junk in DECL_INITIAL.
4606         (cp_finish_decl): Handle zero-initialization of entities with
4607         static storage duration.
4608         * expr.c (extract_init): Remove.
4609         * init.c (build_forced_zero_init): Remove.
4610         (build_zero_init): New function.
4611         (build_default_init): Use it.
4612         (build_field_list): Skip FIELD_DECLs for base subobjects.
4613         (push_base_cleanups): Likewise.
4614         * method.c (do_build_assign_ref): Likewise.
4615         (synthesize_exception_spec): Likewise.
4616         * pt.c (tsubst_decl): Clear DECL_INITIALIZED_P.
4617         (regenerate_decl_from_template): To not set DECL_INITIAL for a
4618         static data member whose initialization took place in its class.
4619         (instantiate_decl): Do not pass an initializer to cp_finish_decl
4620         in that situation.
4621         * search.c (dfs_push_decls): Skip FIELD_DECLs for base subobjects.
4622         (dfs_unuse_fields): Likewise.
4623         * tree.c (pod_type_p): Handle error_mark_node.
4624         (zero_init_p): Likewise.
4625         * typeck.c (lookup_anon_field): Skip FIELD_DECLs for base
4626         subobjects.
4627         * typeck2.c (store_init_value): Remove #if 0'd code.
4628         (force_store_init_value): Remove.
4629         (process_init_constructor): Use build_zero_init.
4630
4631 2002-09-29  Nathan Sidwell  <nathan@codesourcery.com>
4632
4633         PR c++/7788
4634         * rtti.c (unemitted_tinfo_decl_p): Check it has a field.
4635
4636 2002-09-29  Kazu Hirata  <kazu@cs.umass.edu>
4637
4638         * cp-tree.h: Fix comment typos.
4639         * decl.c: Likewise.
4640         * pt.c: Likewise.
4641
4642 2002-09-25  Mark Mitchell  <mark@codesourcery.com>
4643
4644         * cp/class.c (contains_empty_class_p): New method.
4645         (walk_subobject_offsets): Correct computation of field offset.
4646         (layout_empty_base): Correct placement of emtpy base classes.
4647         (layout_class_type): Warn about ABI changes.
4648
4649 2002-09-23  Mark Mitchell  <mark@codesourcery.com>
4650
4651         * cp/class.c (layout_virtual_bases): Do not round the size of the
4652         type to a multiple of the alignment before laying out virtual bases.
4653         (layout_class_type): Correct handling of bit-fields that are wider
4654         than their type inside unions.  Round the size of the type to a
4655         even number of bytes when computing the size without virtual
4656         bases.
4657         * cp/cp-tree.h (abi_version_at_least): New macro.
4658
4659 2002-09-21  Kazu Hirata  <kazu@cs.umass.edu>
4660
4661         * ChangeLog: Follow spelling conventions.
4662         * ChangeLog.2: Likewise.
4663         * call.c: Likewise.
4664         * class.c: Likewise.
4665         * cp-tree.h: Likewise.
4666         * cvt.c: Likewise.
4667         * decl.c: Likewise.
4668         * decl2.c: Likewise.
4669         * except.c: Likewise.
4670         * friend.c: Likewise.
4671         * g++spec.c: Likewise.
4672         * init.c: Likewise.
4673         * lex.c: Likewise.
4674         * mangle.c: Likewise.
4675         * method.c: Likewise.
4676         * operators.def: Likewise.
4677         * optimize.c: Likewise.
4678         * pt.c: Likewise.
4679         * rtti.c: Likewise.
4680         * search.c: Likewise.
4681         * semantics.c: Likewise.
4682         * spew.c: Likewise.
4683         * tree.c: Likewise.
4684         * typeck.c: Likewise.
4685
4686 2002-09-18  Devang Patel  <dpatel@apple.com>
4687
4688         * cp/cp-tree.h: New prototype for walk_vtabls().
4689         * cp/decl.c (walk_vtables_r): New function.
4690         (struct cp_binding_level): Add new members, namespaces,
4691         names_size and vtables.
4692         (add_decl_to_level): Add decl in namespaces or vtables
4693         chain, if conditions match.
4694         (walk_vtables): New function.
4695         (walk_namespaces_r): Travers separate namespace chain
4696         for namespace decls.
4697         (wrapup_globals_for_namespace): Use names_size instead
4698         of list_length().
4699         * cp/decl2.c (finish_file): Use walk_vtables() instead of
4700         walk_globals() to walk vtable decls.
4701
4702 2002-09-18  Nathan Sidwell  <nathan@codesourcery.com>
4703
4704         * decl.c (grokdeclarator): Use assert, not internal_error. Don't
4705         ICE with invalid pointers & references.
4706
4707 2002-09-17  Zack Weinberg  <zack@codesourcery.com>
4708
4709         * Make-lang.in: Remove all references to the demangler.
4710         * cxxfilt.c: Moved to binutils.
4711
4712 2002-09-16  Nathan Sidwell  <nathan@codesourcery.com>
4713
4714         PR c++/7718
4715         * pt.c (tsubst_decl): Remove assert.
4716
4717         Remove DR 295 implementation.
4718         * pt.c (check_cv_quals_for_unify): Disable function & method cases.
4719         * tree.c (cp_build_qualified_type_real): Likewise. Don't warn
4720         about ignoring volatile qualifiers.
4721
4722         * search.c (lookup_member): Correct documentation.
4723
4724 2002-09-16  Geoffrey Keating  <geoffk@apple.com>
4725
4726         * cp-tree.h (union lang_tree_node): Add chain_next option.
4727
4728 2002-09-16  Nathan Sidwell  <nathan@codesourcery.com>
4729
4730         * parse.y (parse_finish_call_expr): Check lookup_member result.
4731
4732         PR c++/7015
4733         * semantic.c (finish_asm_stmt): Fix operand/output_operands
4734         thinko.
4735         * typeck.c (c_expand_asm_operands): Protect from error_mark_node.
4736
4737 2002-09-15  Nathan Sidwell  <nathan@codesourcery.com>
4738
4739         PR c++/7919
4740         * call.c (build_over_call): Convert this pointer for fns found by
4741         using decls.
4742
4743 2002-09-15  Kazu Hirata  <kazu@cs.umass.edu>
4744
4745         * ChangeLog: Follow spelling conventions.
4746         * ChangeLog.1: Likewise.
4747
4748 2002-09-14  Nathan Sidwell  <nathan@codesourcery.com>
4749
4750         PR c++/7768
4751         * pt.c (build_template_decl): Copy DECL_DESTRUCTOR_P.
4752
4753 2002-09-14  Kazu Hirata  <kazu@cs.umass.edu>
4754
4755         * error.c: Fix comment formatting.
4756         * except.c: Likewise.
4757         * expr.c: Likewise.
4758         * friend.c: Likewise.
4759         * g++spec.c: Likewise.
4760         * init.c: Likewise.
4761         * lex.c: Likewise.
4762         * mangle.c: Likewise.
4763         * method.c: Likewise.
4764         * optimize.c: Likewise.
4765         * pt.c: Likewise.
4766         * rtti.c: Likewise.
4767         * search.c: Likewise.
4768         * semantics.c: Likewise.
4769         * spew.c: Likewise.
4770         * tree.c: Likewise.
4771         * typeck.c: Likewise.
4772         * typeck2.c: Likewise.
4773
4774 2002-09-13  Matt Austern  <austern@apple.com>
4775
4776         PR C++/7828
4777         * cp/cp-tree.h, cp/tree.c: New function non_cast_lvalue_p.
4778         * cp/call.c: Change call-by-const-reference mechanism to use
4779         non_cast_lvalue_p when deciding whether the create a temporary.
4780         We need a temporary when passing, e.g. (long) x by const ref.
4781
4782 2002-09-13  Nathan Sidwell  <nathan@codesourcery.com>
4783
4784         * pt.c (unify, ARRAY_TYPE): Element type can be more qualified.
4785
4786 2002-09-13  Kazu Hirata  <kazu@cs.umass.edu>
4787
4788         * decl.c: Fix comment formatting.
4789         * decl2.c: Likewise.
4790
4791 2002-09-12  Kazu Hirata  <kazu@cs.umass.edu>
4792
4793         * call.c: Fix comment formatting.
4794         * class.c: Likewise.
4795         * cp-lang.c: Likewise.
4796         * cp-tree.h: Likewise.
4797         * cvt.c: Likewise.
4798
4799 2002-09-11  Zack Weinberg  <zack@codesourcery.com>
4800
4801         * Make-lang.in: Build cp/cxxfilt.o from $(srcdir)/cp/cxxfilt.c,
4802         and c++filt from cxxfilt.o + version.o + $(LIBDEPS).
4803         * cxxfilt.c: New file: split from libiberty/cplus-dem.c, with
4804         minor adjustments (use version_string, eliminate yet another
4805         duplicate of xmalloc)
4806
4807 2002-09-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4808
4809         * cp-tree.h (require_complete_eh_spec_types): Add prototype.
4810
4811 2002-09-05  Jason Merrill  <jason@redhat.com>
4812
4813         * typeck2.c (add_exception_specifier): Only pedwarn for an
4814         incomplete type.
4815         (require_complete_eh_spec_types): New fn.
4816         (cxx_incomplete_type_diagnostic): Also support pedwarning.
4817         * typeck.c (complete_type_or_diagnostic): Likewise.
4818         * call.c (build_call): Call require_complete_eh_spec_types.
4819         * rtti.c (get_pseudo_ti_desc): Give an error rather than aborting
4820         on an incomplete type.
4821
4822 2002-09-04  Jakub Jelinek  <jakub@redhat.com>
4823
4824         * decl.c (start_cleanup_fn): Clear interface_only before
4825         start_function, restore it afterwards.
4826
4827 2002-09-02  Nathan Sidwell  <nathan@codesourcery.com>
4828
4829         * cp-tree.h (finish_builtin_type): Remove.
4830         * decl2.c (finish_builtin_type): Move to common code.
4831         * decl.c (build_ptrmemfunc_type): Adjust.
4832         * rtti.c (create_pseudo_type_info): Adjust.
4833         (create_tinfo_types): Adjust.
4834
4835 2002-08-31  Jason Merrill  <jason@redhat.com>
4836
4837         * cp-lang.c (cp_expr_size): Allow initialization from a
4838         CONSTRUCTOR.
4839
4840 2002-08-30  Richard Henderson  <rth@redhat.com>
4841
4842         PR opt/7515
4843         * tree.c: Include target.h.
4844         (cp_cannot_inline_tree_fn): Don't auto-inline functions that
4845         don't bind locally.
4846         * Makefile.in (tree.o): Update.
4847
4848 2002-08-27  Mark Mitchell  <mark@codesourcery.com>
4849
4850         * class.c (layout_virtual_bases): Warn about bugs in G++ that
4851         result in incorrect object layouts.
4852         (layout_class_type): Likewise.
4853
4854 2002-08-24  Matt Austern  <austern@apple.com>
4855
4856         * tree.c (lvalue_p_1): Add argument for whether casts of lvalues
4857         are allowable.
4858         (real_lvalue_p): Update caller.
4859         (lvalue_p): Ditto.
4860         (non_cast_lvalue_or_else): New.
4861         * tree.h: Declare it.
4862         * typeck.c (build_unary_op): Use non_cast_lvalue_or_else.
4863
4864 2002-08-22  Mark Mitchell  <mark@codesourcery.com>
4865
4866         * typeck.c (build_class_member_access_expr): Handle COMPOUND_EXPR
4867         and COND_EXPR specially; fix error message output.
4868
4869 2002-08-22  Jason Merrill  <jason@redhat.com>
4870
4871         * pt.c (tsubst_expr): RETURN_EXPR is now RETURN_STMT_EXPR.
4872         * semantics.c (nullify_returns_r): Likewise.
4873
4874 2002-08-17  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4875
4876         Fix PR/7621
4877         * typeck.c (finish_class_member_access_expr): Diagnose cases where
4878         name lookup finds nothing.
4879
4880 2002-08-15  Jason Merrill  <jason@redhat.com>
4881
4882         * semantics.c (finish_then_clause): Remove redundant assignment.
4883         (finish_if_stmt, begin_switch_stmt, finish_switch_stmt): Move the
4884         extra binding level outside the if/switch statement.
4885         (finish_while_cond, finish_for_cond): Rewrite complex condition
4886         into the loop body.
4887
4888 2002-08-15  Alexandre Oliva  <aoliva@redhat.com>
4889
4890         * parse.y (sizeof, alignof, typeof): New non-terminals to
4891         increment skip_evaluation.  Replace terminals with them and
4892         decrement skip_evaluation at the end of rules using them.
4893         * decl2.c (mark_used): Don't assemble_external if
4894         skipping evaluation.
4895
4896 2002-08-15  Gabriel Dos Reis  <gdr@nerim.net>
4897
4898         Fix PR/7504
4899         * parse.y (parse_finish_call_expr): Handle incomplete
4900         type used to name a scope.
4901
4902 2002-08-15  Nathan Sidwell  <nathan@codesourcery.com>
4903
4904         PR c++/7598
4905         * typeck.c (build_unary_op): Fold offsetof idiom. Fixes
4906         regression caused by my 2002-08-08 patch.
4907
4908 2002-08-13  Mark Mitchell  <mark@codesourcery.com>
4909
4910         * decl.c (pushdecl_class_level): Honor requests to bind names to
4911         OVERLOADs.
4912
4913 2002-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4914
4915         * decl2.c (build_call_from_tree): Fix uninitialized variable.
4916         * parse.y (parse_finish_call_expr): Likewise.
4917         * repo.c (old_args, old_dir, old_main): Const-ify.
4918
4919 2002-08-11  Gabriel Dos Reis  <gdr@nerim.net>
4920
4921         * decl.c (duplicate_decls): Replace DECL_SOURCE_FILE
4922         DECL_SOURCE_LINE with DECL_SOURCE_LOCATION.
4923         * optimize.c (maybe_clone_body): Likewise.
4924         * pt.c (tsubst_enum): Likewise.
4925         (lookup_template_class): Likewise.
4926         * tree.c (cp_copy_res_decl_for_inlining): Likewise.
4927
4928 2002-08-10  Neil Booth  <neil@daikokuya.co.uk>
4929
4930         * lang-specs.h: Remove -ansi.
4931
4932 2002-08-10  Nathan Sidwell  <nathan@codesourcery.com>
4933
4934         * tree.c (maybe_dummy_object): Replace // with /* */
4935
4936 2002-08-09  Mark Mitchell  <mark@codesourcery.com>
4937
4938         * call.c (standard_conversion): Use build_ptrmem_type.
4939         * cp-tree.h (build_ptrmem_type): New function.
4940         (adjust_result_of_qualified_name_lookup): Likewise.
4941         * decl.c (grokvardecl): Do not look for OFFSET_TYPEs to indicate
4942         static data members.
4943         (build_ptrmem_type): New function.
4944         (grokdeclarator): Do not use build_offset_type when encountering a
4945         qualified name.
4946         * parse.y (parse_finish_call_expr): Use
4947         adjust_result_of_qualified_name_lookup.
4948         * search.c (adjust_result_of_qualified_name_lookup): New function.
4949         * typeck.c (qualify_type_recursive): Use TYPE_PTRMEM_* rather than
4950         accessing OFFSET_TYPEs directly.
4951
4952 2002-08-08  Mike Stump  <mrs@apple.com>
4953
4954         * call.c (add_builtin_candidate): legal -> valid, illegal -> invalid.
4955         (type_decays_to): Likewise.
4956         * class.c (find_final_overrider): Likewise.
4957         (maybe_note_name_used_in_class): Likewise.
4958         * decl.c (current_tmpl_spec_kind): Likewise.
4959         (add_binding): Likewise.
4960         (push_class_binding): Likewise.
4961         (duplicate_decls): Likewise.
4962         (layout_var_decl): Likewise.
4963         (grokfndecl): Likewise.
4964         (grokdeclarator): Likewise.
4965         (check_default_argument): Likewise.
4966         * decl2.c (handle_class_head): Likewise.
4967         * error.c (dump_template_decl): Likewise.
4968         * init.c (build_offset_ref): Likewise.
4969         * pt.c (check_specialization_scope): Likewise.
4970         (determine_specialization): Likewise.
4971         (check_explicit_specialization): Likewise.
4972         (maybe_check_template_type): Likewise.
4973         (process_partial_specialization): Likewise.
4974         (check_default_tmpl_args): Likewise.
4975         (push_template_decl_real): Likewise.
4976         (convert_template_argument): Likewise.
4977         (try_class_unification): Likewise.
4978         (get_bindings_real): Likewise.
4979         (do_decl_instantiation): Likewise.
4980         * semantics.c (begin_function_definition): Likewise.
4981         (finish_member_declaration): Likewise.
4982         (check_multiple_declarators): Likewise.
4983         * typeck.c (comp_array_types): Likewise.
4984         (comptypes): Likewise.
4985         (expr_sizeof): Likewise.
4986         (build_binary_op): Likewise.
4987         (dubious_conversion_warnings): Likewise.
4988         (check_return_expr): Likewise.
4989
4990 2002-08-08  Mark Mitchell  <mark@codesourcery.com>
4991
4992         * typeck.c (build_class_member_access_expr): Do not return
4993         error_mark_node when no error has occurred.
4994
4995 2002-08-08  Nathan Sidwell  <nathan@codesourcery.com>
4996
4997         * typeck.c (build_component_addr): Remove.
4998         (build_unary_op): Just check it's not a bitfield, and then build
4999         an ADDR_EXPR.
5000
5001 2002-08-08  Nathan Sidwell  <nathan@codesourcery.com>
5002
5003         * class.c (convert_to_base): Correct check for error_mark_node.
5004         (create_vtable_ptr): Remove unused VFUNS_P parm.
5005
5006 2002-08-08  Nathan Sidwell  <nathan@codesourcery.com>
5007
5008         * cp/Make-lang.in (c++.mostlyclean): Remove coverage files.
5009
5010 2002-08-07  Mark Mitchell  <mark@codesourcery.com>
5011
5012         Rework build_component_ref.
5013         * call.c (build_vfield_ref): Do not go through build_component_ref.
5014         (build_field_call): Use build_class_member_access_expr.
5015         (build_user_type_conversion_1): Use BASELINK_FUNCTIONS.
5016         (build_object_call): Likewise.
5017         * class.c (convert_to_base): New function.
5018         (type_requires_array_cookie): Use BASELINK_FUNCTIONS.
5019         (instantiate_type): Handle BASELINKs.
5020         * cp-tree.def (BASELINK): New tree code.
5021         * cp-tree.h (BASELINK_P): Reimplement.
5022         (SET_BASELINK_P): Remove.
5023         (BASELINK_BINFO): Reimplement.
5024         (BASELINK_FUNCTIONS): Likewise.
5025         (BASELINK_ACCESS_BINFO): Likewise.
5026         (BASELINK_OPTYPE): Likewise.
5027         (convert_to_base): New function.
5028         (name_p): Likewise.
5029         (build_object_ref): Remove.
5030         (build_component_ref_1): Likewise.
5031         (build_component_ref): Likewise.
5032         (build_x_component_ref): Likewise.
5033         (build_class_member_access_expr): New function.
5034         (finish_class_member_access_expr): Likewise.
5035         (build_ptrmemfunc_access_expr): Likewise.
5036         * decl.c (grokdeclarator): Handle BASELINKs.
5037         * decl2. (build_expr_from_tree): Handle COMPONENT_REFs by using
5038         finish_class_member_access_expr.
5039         (arg_assoc): Handle BASELINKs.
5040         (do_class_using_decl): Likewise.
5041         * error.c (dump_decl): Likewise.
5042         (dump_expr): Use build_ptrmemfunc_access_expr.
5043         * except.c (dtor_nothrow): Use CLASSTYPE_DESTRUCTORS to find
5044         destructors.
5045         (build_throw): Use BASELINK_FUNCTIONS.
5046         * init.c (perform_member_init): Use
5047         build_class_member_access_expr.
5048         (build_offset_ref): Handle BASELINKs.  Use
5049         build_class_member_access_expr.
5050         * method.c (hack_identifier): Likewise.
5051         * parse.y (do_id): Use BASELINK, not TREE_LIST.
5052         (primary): Remove uses of build_object_ref.
5053         * pt.c (lookup_template_function): Handle BASELINKs.
5054         (resolve_overloaded_unification): Likewise.
5055         * search.c (build_baselink): Build a BASELINK, not a TREE_LIST.
5056         (lookup_field): Use BASELINK, not TREE_LIST.
5057         (lookup_fnfiels): Likewise.
5058         (setup_class_bindings): Likewise.
5059         * semantics.c (finish_object_call_expr): Do not use
5060         build_method_call when we already know what function is being
5061         called.
5062         * spew.c (identifier_type): Use BASELINK, not TREE_LIST.
5063         * tree.c (really_overloaded_fn): Use OVL_CHAIN for OVERLOADs, not
5064         TREE_CHAIN.
5065         (name_p): New function.
5066         * typeck.c (build_object_ref): Remove.
5067         (build_component_ref_1): Likewise.
5068         (build_x_component_ref): Likewise.
5069         (build_class_member_access_expr): New function.
5070         (finish_class_member_access_expr): Likewise.
5071         (build_ptrmemfunc_access_expr): Likewise.
5072         (get_member_function_from_ptrfunc): Use
5073         build_ptrmemfunc_access_expr.
5074         (build_binary_op): Likewise.
5075         (build_unary_op): Likewise.
5076         (build_ptrmemfunc): Likewise.
5077         (pfn_from_ptrmemfunc): Likewise.
5078         * typeck2.c (build_m_component_ref): Adjust comment.
5079
5080 2002-08-07  Neil Booth  <neil@daikokuya.co.uk>
5081
5082         * Make-lang.in (CXX_C_OBJS): Update.
5083         * cp-lang.c (LANG_HOOKS_DECODE_OPTION): Use c_common_decode_option.
5084         * cp-tree.h (cxx_decode_option): Remove.
5085         * decl2.c (compare_options, lang_f_options, unsupported_options,
5086         cxx_decode_option): Remove.
5087
5088 2002-08-06  Gabriel Dos Reis  <gdr@nerim.net>
5089
5090         * typeck.c (build_x_unary_op): Handle pointer-to-member.
5091
5092 2002-08-05  Geoffrey Keating  <geoffk@redhat.com>
5093
5094         * class.c: Don't include obstack.h.
5095         (popclass):
5096         * decl2.c: Delete bogus comment.
5097         * error.c: Don't include obstack.h.
5098         * except.c: Likewise.
5099         (dump_type): Correct comment.
5100         * method.c: Don't include obstack.h.
5101         * tree.c: Likewise.
5102
5103 2002-08-04  Gabriel Dos Reis  <gdr@nerim.net>
5104
5105         Fix PR/2213
5106         * cvt.c (cp_convert_to_pointer): Reject conversions from integral
5107         expressions to pointer-to-data-member of pointer-to-member-functions.
5108
5109 2002-08-04  Geoffrey Keating  <geoffk@redhat.com>
5110
5111         * cvt.c (ocp_convert): Delete obsolete code.
5112         * parse.y (permanent_obstack): Delete declaration.
5113         * pt.c (permanent_obstack): Delete declaration.
5114         * repo.c (permanent_obstack): Delete declaration.
5115         (open_repo_file): Use xmalloc instead of permanent_obstack.
5116         (init_repo): Use xstrdup instead of permanent_obstack.
5117
5118 2002-08-04  Nathan Sidwell  <nathan@codesourcery.com>
5119
5120         * cp-tree.h (VF_DERIVED_VALUE): Remove.
5121         * class.c (finish_struct_1): Use VF_BINFO_VALUE not VF_DERIVED_VALUE.
5122
5123 2002-08-03  Nathan Sidwell  <nathan@codesourcery.com>
5124
5125         PR 7470.
5126         C++ ABI change - vfunc ordering.
5127         * class.c (add_virtual_function): Remove.
5128         (dfs_modify_all_vtables): Take list of all declared
5129         virtuals. Assign all that are not in primary base.
5130         (check_for_override): Adjust comments.
5131         (create_vtable_ptr): Take single list of virtuals. Build chain
5132         of declared virtuals here.
5133         (layout_class_type): Take single list of virtuals. Adjust.
5134         (finish_struct_1): Keep virtuals on single list. Adjust.
5135
5136 2002-08-02  Mark Mitchell  <mark@codesourcery.com>
5137
5138         * init.c (build_member_call): Use build_new_method_call, not
5139         build_method_call.
5140
5141 2002-08-02  Krister Walfridsson  <cato@df.lth.se>
5142
5143         * Make-lang.in (spew.o, lex.o, pt.o): Add path to parse.h dependencies.
5144
5145 2002-08-02  Mark Mitchell  <mark@codesourcery.com>
5146
5147         * call.c (build_method_call): Issue a more helpful error message
5148         about ambiguous method names.
5149
5150 2002-08-02  Nathan Sidwell  <nathan@codesourcery.com>
5151
5152         * tree.c (build_shared_int_cst): Make cache file scope, and
5153         GTY it.
5154
5155 2002-08-02  Jason Merrill  <jason@redhat.com>
5156
5157         * cp-lang.c (LANG_HOOKS_EXPR_SIZE): Define.
5158         (cp_expr_size): New fn.
5159         * call.c (build_over_call): Lose empty class hackery.
5160         (convert_arg_to_ellipsis): Promote non-POD warning to error.
5161         * typeck.c (build_modify_expr): Don't use save_expr on an lvalue.
5162
5163         * semantics.c (expand_body): Do tree optimization in the function
5164         context, too.
5165
5166 2002-08-01  Neil Booth  <neil@daikokuya.co.uk>
5167
5168         * cp-tree.h: Move all warning and flag declarations to c-common.h.
5169         * decl.c: Move all warning and flag variables to c-common.c.
5170         * decl2.c: Move all warning and flag variables to c-common.c.
5171         * lex.c (flag_digraphs): Remove.
5172         (warn_traditional): Now in c-common.c.
5173
5174 2002-07-31  Mark Mitchell  <mark@codesourcery.com>
5175
5176         * call.c (build_field_call): Do not look up the field by name.
5177         (build_method_call): Simplify.
5178         (struct z_candidate): Add access_path and conversion_path.  Remove
5179         basetype_path.
5180         (convert_class_to_reference): Adjust use of
5181         add_function_candidate.
5182         (add_candidate): Add conversion_path argument.
5183         (add_function_candidate): Use it.
5184         (add_conv_dndidate): Likewise.
5185         (build_builtin_candidate): Likewise.
5186         (add_template_candidate_real): Add conversion_path argument.
5187         (add_template_conv_candidate): Likewise.
5188         (add_template_candidate): Likewise.
5189         (build_user_type_conversion_1): Use it.
5190         (build_new_function_call): Remove name lookup code.  Adjust use of
5191         add_template_candidate and add_function_candidate.
5192         (build_new_op): Likewise.
5193         (convert_like_real): Use build_special_member_call.
5194         (build_over_call): Use cand->conversion_path.
5195         (build_special_member_call): New method.
5196         (build_new_method_call): Remove name lookup code.
5197         * cp-tree.def (OFFSET_REF): Update documentation.
5198         (TEMPLATE_ID_EXPR): Likewise.
5199         * cp-tree.h (BASELINK_ACCESS_BINFO): New macro.
5200         (BASELINK_OPTYPE): Likewise.
5201         (build_new_method_call): Adjust prototype.
5202         (build_special_member_call): New method.
5203         (build_baselink): New method.
5204         (build_offset_ref_call_from_tree): Likewise.
5205         (build_call_from_tree): Likewise.
5206         (finish_qualified_call_expr): Remove.
5207         (finish_call_expr): Adjust prototype.
5208         (build_x_function_call): Remove.
5209         * cvt.c (ocp_convert): Use build_special_member_call.
5210         * decl2.c (reparse_absdcl_as_expr): Use finish_call_expr.
5211         (build_expr_from_tree): Adjust handling for TEMPLATE_ID_EXPR and
5212         CALL_EXPR.
5213         (build_offset_ref_call_from_tree): New function.
5214         (build_call_from_tree): Likewise.
5215         * init.c (expand_cleanup): Use build_special_member_call.
5216         (expand_default_init): Likewise.
5217         (build_member_call): Use finish_call_expr.
5218         (build_new_1): Use build_special_member_call.
5219         (push_base_cleanups): Likewise.
5220         * method.c (do_build_assign_ref): Likewise.
5221         * parse.y (template_id): Do not pass a COMPONENT_REF to
5222         lookup_template_function.
5223         (primary): Use parse_finish_call_epxr, not finish_call_expr.
5224         (parse_finish_call_expr): New function.
5225         * pt.c (lookup_template_function): Add assertions.
5226         * search.c (lookup_base): Allow T to be a binfo.
5227         (build_baselink): New function.
5228         (lookup_member): Use it.
5229         * semantics.c (finish_call_expr): Do not do name lookup.
5230         (finish_object_call_expr): Remove #if 0'd code.
5231         (finish_qualified_call_expr): Remove.
5232         * typeck.c (build_x_function_call): Remove.
5233         (build_static_case): Use build_special_member_call.
5234         * typeck2.c (build_functional_cast): Likewise.
5235
5236 2002-07-30  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
5237
5238         * lang-specs.h: Remove __GXX_ABI_VERSION, moved to gcc.c.
5239
5240 2002-07-30  Gabriel Dos Reis  <gdr@nerim.net>
5241
5242         * cp-tree.h (VF_DERIVED_VALUE): Restore from previous deletion.
5243
5244 2002-07-30  Nathan Sidwell  <nathan@codesourcery.com>
5245
5246         * cp-tree.h (CLASSTYPE_VFIELDS, VF_*, BV_*): Add more
5247         documentation.
5248
5249 2002-07-29  Alan Modra  <amodra@bigpond.net.au>
5250
5251         * cp-tree.h: Comment typo fix.
5252
5253 2002-07-29  Richard Earnshaw  <rearnsha@arm.com>
5254
5255         * spew.c (space_for_token): Allocate zeroed memory for a new token
5256         chunk.
5257
5258 2002-07-27  Roger Sayle  <roger@eyesopen.com>
5259
5260         * decl.c (builtin_function_1): No need to explicitly mark
5261         BUILT_IN_RETURN and BUILT_IN_EH_RETURN as noreturn.
5262
5263 2002-07-27  Roger Sayle  <roger@eyesopen.com>
5264
5265         * decl2.c (cxx_decode_option): Support -fno-builtin-foo.
5266
5267 2002-07-26  Jason Merrill  <jason@redhat.com>
5268
5269         * call.c (build_over_call): Likewise.
5270         (cp_convert_parm_for_inlining): New fn.
5271         (convert_for_arg_passing): New fn.
5272         (convert_default_arg, build_over_call): Use it.
5273         (type_passed_as): New fn.
5274         * pt.c (tsubst_decl): Use it.
5275         * decl2.c (cp_build_parm_decl): New fn.
5276         (build_artificial_parm): Use it.
5277         (start_static_storage_duration_function): Likewise.
5278         * decl.c (start_cleanup_fn, grokdeclarater): Likewise.
5279         (grokparms): Don't mess with DECL_ARG_TYPE.
5280         * typeck.c (convert_arguments): Use convert_for_arg_passing.
5281         * cp-lang.c (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
5282         Define.
5283         * cp-tree.h: Declare new fns.
5284
5285 2002-07-26  Neil Booth  <neil@daikokuya.co.uk>
5286
5287         * cp-tree.h (flag_operator_names): Remove.
5288         * decl2.c (flag_operator_names): Remove.
5289         (lang_f_options): Remove operator-names.
5290         * lex.c (D_OPNAME): Remove.
5291         (reswords): Remove operator names.
5292         (rid_to_yy): Remove operator names.
5293         (init_reswords): No need to handle D_OPNAME.
5294         * spew.c (read_process_identifier): There are no operator
5295         names.
5296
5297 2002-07-26  Jason Merrill  <jason@redhat.com>
5298
5299         * dump.c (cp_dump_tree): Call c_dump_tree.
5300         * Make-lang.in (CXX_C_OBJS): Add c-dump.o.
5301
5302 2002-07-25  Neil Booth  <neil@daikokuya.co.uk>
5303
5304         * error.c (print_whitespace): Remove.
5305         * g++spec.c (LIBUNWIND): Move.
5306         * mangle.c (mangled_position, write_signed_number): Remove.
5307
5308 2002-07-25  Neil Booth  <neil@daikokuya.co.uk>
5309
5310         * decl2.c (cxx_decode_option): Similarly.
5311
5312 2002-07-25  Gabriel Dos Reis  <gdr@nerim.net>
5313
5314         * cp-tree.h (cxx_sizeof_nowarn): Now a macro.
5315         (cxx_sizeof_or_alignof_type): Take a third argument.
5316         (cxx_sizeof): Adjust definition.
5317         (cxx_alignof): Likewise.
5318         * init.c (build_delete): Use cxx_sizeof_nowarn to reflect reality.
5319         * typeck.c (cxx_sizeof_or_alignof_type): Take a third argument for
5320         complaining.
5321         (c_sizeof_nowarn): Remove definition.
5322         (build_unary_op): Use cxx_sizeof_nowarn.
5323
5324 2002-07-24  Geoffrey Keating  <geoffk@redhat.com>
5325
5326         * tree.c (cp_build_qualified_type_real): When copying
5327         pointer-to-method types, unshare the record that holds
5328         the cached pointer-to-member-function type.
5329
5330 2002-07-23  Neil Booth  <neil@daikokuya.co.uk>
5331
5332         * cp-tree.h (FILE_FUNCTION_PREFIX_LEN): Remove.
5333
5334 2002-07-23  Gabriel Dos Reis  <gdr@nerim.net>
5335
5336         Fix PR/7363:
5337         * typeck.c (cxx_sizeof_or_alignof_type): New function.
5338         (c_sizeof): Remove definition.
5339         (expr_sizeof): Use cxx_sizeof.
5340         * decl2.c (build_expr_from_tree): Use cxx_sizeof_or_alignof_type.
5341         * decl.c (finish_destructor_body): Use cxx_sizeof.
5342         * semantics.c (finish_alignof): Likewise.
5343         (finish_alignof): Use cxx_alignof.
5344         * cp-tree.h (cxx_sizeof, cxx_alignof): New macros.
5345         (cxx_sizeof_or_alignof_type): Declare.
5346         (my_friendly_assert): Move to ../c-common.h.
5347
5348 2002-07-23  Neil Booth  <neil@daikokuya.co.uk>
5349
5350         * class.c, method.c, pt.c, search.c: Don't define obstack macros.
5351
5352 2002-07-22  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5353
5354         PR c++/7347, c++/7348
5355         * cp-tree.h (tsubst_flags_t): Add tf_parsing.
5356         * decl.c (make_typename_type): Use it.
5357         (make_unbound_class_template): Likewise.
5358         (lookup_name_real): Don't call type_access_control if scope is
5359         template parameter dependent.
5360         * parse.y (template_arg): Call make_unbound_class_template with
5361         tf_parsing set.
5362         (nest_name_specifier): Call make_typename_type with tf_parsing set.
5363         (typename_sub0): Likewise.
5364         (typename_sub1): Likewise.
5365         (instantiate_decl): Push class scope.
5366         * pt.c (regenerate_decl_from_template): Call pushclass and popclass
5367         for both static variable and member function template.
5368         (instantiate_decl) Call pushclass and popclass when tsubst'ing type
5369         and arguments.
5370         * search.c (type_access_control): Do type access for TEMPLATE_DECL
5371         too.
5372
5373 2002-07-20  Roger Sayle  <roger@eyesopen.com>
5374
5375         * decl2.c (cxx_decode_option): Simplify -fhandle-exceptions
5376         test by using positive_option.  Make whitespace consistent.
5377
5378 2002-07-20  Gabriel Dos Reis  <gdr@nerim.net>
5379
5380         * spew.c (struct unparsed_test): Replace 'filename' and 'lineno'
5381         members with 'locus'.  Adjust use throughout.
5382         (struct feed):  Likewise.
5383         (alloc_unparsed_test): Change prototype, take a 'const location_t *'.
5384         Adjust use.
5385         (snarf_defarg): Use error(), not error_with_file_and_line().
5386
5387 2002-07-19  Chris Demetriou  <cgd@broadcom.com>
5388
5389         * lang-specs.h (@c++): Include "%2" (cc1plus_spec) wherever
5390         cpp_options is included.
5391
5392 2002-07-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5393
5394         PR c++/2862, c++/2863
5395         * pt.c (determine_specialization): Compare the length of
5396         TYPE_ARG_TYPES.  Tidy.
5397
5398 2002-07-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5399
5400         PR c++/3797
5401         * decl.c (duplicate_decls): Don't propagate inlining parameters from
5402         olddecl to newdecl when newdecl is a specialization of the
5403         instantiation olddecl.
5404
5405 2002-07-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5406
5407         PR c++/4802, c++/5387
5408         * decl.c (make_typename_type): Use enforce_access.
5409
5410 2002-07-17  Scott Snyder <snyder@fnal.gov>
5411
5412         PR c++/7320
5413         * rtti.c (get_tinfo_decl): Set DECL_COMDAT.
5414
5415 2002-07-12  Mark Mitchell  <mark@codesourcery.com>
5416
5417         * class.c (add_method): Correct handling of conversion operators.
5418
5419 2002-07-11  Mark Mitchell  <mark@codesourcery.com>
5420
5421         PR c++/7224
5422         * class.c (add_method): Simplify.
5423
5424 2002-07-11  Jason Merrill  <jason@redhat.com>
5425
5426         PR c++/7279
5427         * tree.c (cp_copy_res_decl_for_inlining): Also copy
5428         TREE_ADDRESSABLE.
5429
5430 2002-07-10  Graham Stott  <graham.stott@btinternet.com>
5431
5432         * pt.c (template_parm_this_level_p, push_template_decl_real):
5433         Pass depth as int pointer.
5434
5435 2002-07-11  Tim Josling  <tej@melbpc.org.au>
5436
5437         Remove front end hard coding from gengtype.c.
5438
5439         * config-lang.in (gtfiles): Add files needed for this front end.
5440
5441 2002-07-10  Mark Mitchell  <mark@codesourcery.com>
5442
5443         * cp-tree.h (unqualified_name_lookup_error): Declare it.
5444         (begin_function_definition): Adjust prototype.
5445         * lex.c (unqualified_name_lookup_error): New function, split out
5446         from ...
5447         (do_identifier): ... here.
5448         * parse.y (parse_begin_function_definition): New function.
5449         (fn.def1): Use it.
5450         * semantics.c (begin_function_definition): Accept decl-specifiers
5451         and attributes as separate parameters.
5452
5453 2002-07-10  Jason Merrill  <jason@redhat.com>
5454
5455         PR c++/6255
5456         * decl.c (lookup_name_real): Build a new TYPENAME_TYPE rather than
5457         modifying the old one.
5458
5459 2002-07-09  Mark Mitchell  <mark@codesourcery.com>
5460
5461         * cp-tree.h (constructor_name_p): Declare it.
5462         (check_template_template_default_arg): Likewise.
5463         * class.c (handle_using_decl): Use constructor_name_p.
5464         * decl.c (grokdeclarator): Likewise.
5465         * decl2.c (constructor_name_p): Define it.
5466         * init.c (build_member_call): Use constructor_name_p.
5467         * parse.y (template_parm): Use check_template_template_default_arg.
5468         * pt.c (check_explicit_specialization): Use constructor_name_p.
5469         * semantics.c (check_template_template_default_arg): New function.
5470
5471 2002-07-08  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5472
5473         * pt.c (can_complete_type_without_circularity): Add static to
5474         function definition.
5475
5476 2002-07-08  Mark Mitchell  <mark@codesourcery.com>
5477
5478         * cp-tree.h (have_extern_spec): Declare it
5479         * decl.c (have_extern_spec): Define it.
5480         (start_decl): Eliminate use of used_extern_spec.
5481         (start_function): Likewise.
5482         * parse.y (have_extern_spec): Remove declaration.
5483         (used_extern_spec): Likewise.
5484         (frob_specs): Eliminate use of used_extern_spec.
5485         (.hush_warning): Likewise.
5486
5487 2002-07-07  Mark Mitchell  <mark@codesourcery.com>
5488
5489         * Make-lang.in (cp/parse.o): Depend on decl.h.
5490         * cp-tree.h (do_decl_instantiation): Change prototype.
5491         * parse.y: Include decl.h.
5492         (parse_decl_instantiation): New function.
5493         (explicit_instantiation): Use it.
5494         * pt.c (do_decl_instantiation): Accept a DECL, not a DECLARATOR
5495         and DECLSPECS.
5496
5497 2002-07-07  Roger Sayle  <roger@eyesopen.com>
5498
5499         * error.c (dump_function_name): Use DECL_TEMPLATE_RESULT for
5500         constructor and destructor tests when passed a TEMPLATE_DECL.
5501
5502 2002-07-05  Jason Merrill  <jason@redhat.com>
5503
5504         * cvt.c (cp_convert_to_pointer): Call force_fit_type for null
5505         pointers.
5506
5507         PR optimization/7145
5508         * tree.c (cp_copy_res_decl_for_inlining): Also copy DECL_INITIAL.
5509
5510 2002-07-05  Nathan Sidwell  <nathan@codesourcery.com>
5511
5512         Repair damage on weak-impared targets caused by my previous patch.
5513         * cp-tree.h (import_export_tinfo): Add parameter.
5514         * decl2.c (import_export_tinfo): Add parameter, post adjust
5515         DECL_COMDAT.
5516         * rtti.c (emit_tinfo_decl): DECL_COMDAT is (nearly) always setup by
5517         import_export_tinfo.
5518
5519 2002-07-03  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5520
5521         PR c++/6944
5522         * init.c (build_aggr_init): Remove qualifiers of init before calling
5523         build_vec_init.
5524         (build_vec_init): Flatten multi-dimensional array during cleanup.
5525         (build_vec_delete_1): Abort if the type of each element is array.
5526
5527 2002-07-03  Graham Stott  <graham.stott@btinternet.com>
5528
5529         * pt.c (instantiate_class_template): Fix typo.
5530
5531 2002-07-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5532
5533         * typeck2.c (cxx_incomplete_type_diagnostic): Fix typo caused
5534         by CVS conflict in my last patch.
5535
5536 2002-07-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5537
5538         PR c++/6716
5539         * pt.c (can_complete_type_without_circularity): New function.
5540         (instantiate_class_template): Use it.
5541         * typeck2.c (cxx_incomplete_type_diagnostic): Improve error
5542         message due to incomplete fields.
5543
5544 2002-07-01  Mark Mitchell  <mark@codesourcery.com>
5545
5546         PR c++/7112
5547         * mangle.c (write_expression): Add mangling for sizeof when
5548         applied to a type.
5549         * operators.def: Remove stale comment.
5550
5551 2002-06-30  Nathan Sidwell  <nathan@codesourcery.com>
5552
5553         * cp-tree.h (CPTI_TINFO_DECL_TYPE): Replace with ...
5554         (CPTI_TYPE_INFO_PTR_TYPE): ... this.
5555         (tinfo_decl_type): Replace with ...
5556         (type_info_ptr_type): ... this.
5557         (import_export_tinfo): Declare.
5558         (tinfo_decl_p): Rename to ...
5559         (unemitted_tinfo_decl_p): ... this.
5560         * decl2.c (import_export_decl): Break out tinfo handling into ...
5561         (import_export_tinfo): ... here. New function.
5562         (finish_file): Adjust.
5563         * rtti.c (TINFO_REAL_NAME): New macro.
5564         (init_rtti_processing): Create the tinfo types.
5565         (get_tinfo_decl_dynamic): Use type_info_ptr_type, get_tinfo_ptr.
5566         (get_tinfo_decl): Adjust.
5567         (get_tinfo_ptr): New function.
5568         (get_type_id): Use it.
5569         (tinfo_base_init): Create vtable decl here, if it doesn't exist.
5570         (ptr_initializer): Use get_tinfo_ptr.
5571         (ptm_initializer): Likewise.
5572         (synthesize_tinfo_var): Break into ...
5573         (get_pseudo_ti_init): ... this. Just create the initializer.
5574         (get_pseudo_ti_desc): .. and this.
5575         (create_real_tinfo_var): Remove.
5576         (create_pseudo_type_info): Don't create the vtable decl here.
5577         (get_vmi_pseudo_type_info): Remove.
5578         (create_tinfo_types): Adjust.
5579         (tinfo_decl_p): Rename to ...
5580         (unemitted_tinfo_decl_p): ... here. Adjust.
5581         (emit_tinfo_decl): Adjust. Create the initializer.
5582
5583 2002-06-27  Mark Mitchell  <mark@codesourcery.com>
5584
5585         PR c++/6695
5586         * pt.c (tsubst_friend_class): Substitute into the context of the
5587         friend before using it.
5588
5589 2002-06-26  Mark Mitchell  <mark@codesourcery.com>
5590
5591         * cp-tree.h (xref_tag): Change prototype.
5592         (handle_class_head): Likewise.
5593         (build_x_component_ref): Likewise.
5594         * decl.c (cxx_init_decl_processing): Adjust call to xref_tag.
5595         (xref_tag): Take attributes as a separate parameter.
5596         (xref_tag_from_type): Adjust call to xref_tag.
5597         * decl2.c (build_expr_from_tree): Adjust call to
5598         build_x_component_ref.
5599         (handle_class_head): Take attributes as a separate parameter.
5600         * parse.y (parse_xref_tag): New function.
5601         (parse_handle_class_head): Likewise.
5602         (primary): Use parse_xref_tag.
5603         (class_head_decl): Use parse_handle_class_head.
5604         (class_head_defn): Likewise.
5605         * rtti.c (init_rtti_processing): Adjust call to xref_tag.
5606         (build_dynamic_cast_1): Likewise.
5607         (create_pseudo_type_info): Likewise.
5608         (emit_support_tinfos): Likewise.
5609         * typeck.c (build_object_ref): Adjust call to
5610         build_x_component_ref.
5611         (build_x_component_ref): Remove protect parameter.
5612
5613 2002-06-25  Mark Mitchell  <mark@codesourcery.com>
5614
5615         * call.c (build_op_delete_call): Use BASELINK_FUNCTIONS.
5616         * class.c (handle_using_decl): Likewise.
5617         (instantiate_type): Likewise.
5618         * cp-tree.h (BASELINK_FUNCTIONS): New macro.
5619         (xref_basetypes): Change prototype.
5620         (begin_mem_initializers): New function.
5621         (get_overloaded_fn): Likewise.
5622         * decl.c (xref_basetypes): Simplify.
5623         * error.c (dump_expr): Use BASELINK_FUNCTIONS.
5624         * init.c (build_offset_ref): Likewise.
5625         * parse.y (base_init): Use begin_mem_initializers().
5626         (structsp): Adjust call to xref_basetypes.
5627         * pt.c (determine_specialization): Use BASELINK_FUNCTIONS.
5628         (instantiate_class_template): Adjust call to xref_basetypes.
5629         * semantics.c (begin_mem_initializers): New function.
5630         * tree.c (is_overloaded_fn): Use BASELINK_FUNCTIONS.
5631         (really_overlaoded_fn): Likewise.
5632         (get_overloaded_fn): New function.'
5633         (get_first_fn): USe BASELINK_FUNCTIONS.
5634
5635 2002-06-24  Mark Mitchell  <mark@codesourcery.com>
5636
5637         * cp-tree.h (SCALAR_TYPE_P): New macro.
5638         (check_for_out_of_scope_variable): New function.
5639         (at_class_scope_p): Likewise.
5640         (finish_fname): Likewise.
5641         * class.c (finish_struct): Use at_function_scope_p.
5642         * decl.c (check_for_out_of_scope_variable): New function, split
5643         out from do_identifier.
5644         (finish_enum): Use at_function_scope_p.
5645         * lex.c (do_identifier): Use check_for_out_of_scope_variable.
5646         * parse.y (VAR_FUNC_NAME): Give it <ttype>.  Use finish_fname.
5647         (primary): Use at_function_scope_p.
5648         * search.c (at_class_scope_p): New function.
5649         * semantics.c (finish_fname): Likewise.
5650         (check_multiple_declarators): Use at_function_scope_p.
5651
5652 2002-06-23  Mark Mitchell  <mark@codesourcery.com>
5653
5654         * parse.y (parse_scoped_id): New function.
5655         (primary): Use it.
5656         * cp-tree.h (do_scoped_id): Adjust declaration.
5657         * lex.c (do_scoped_id): Remove call to yylex.
5658         * decl2.c (build_expr_from_tree): Adjust use of do_scoped_id.
5659         * typeck2.c (add_exception_specifier): Use tree_cons, rather than
5660         expanding it inline.
5661
5662 2002-06-23  Matt Thomas  <matt@3am-software.com>
5663
5664         * decl.c (finish_function): Change "#ifdef VMS_TARGET" to
5665         "#if VMS_TARGET".
5666
5667 2002-06-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5668
5669         * mangle.c (integer_type_codes): Const-ify.
5670
5671 2002-06-20  Richard Henderson  <rth@redhat.com>
5672
5673         PR c++/6747
5674         * typeck.c (mark_addressable): Don't test TREE_ADDRESSABLE early.
5675         Call put_var_into_stack.
5676
5677 2002-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5678
5679         * spew.c (remove_last_token): Use ARRAY_SIZE in lieu of explicit
5680         array size calculation.
5681
5682 2002-06-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5683
5684         PR c++/6892
5685         * pt.c (tsubst_expr): Handle FILE_STMT.
5686
5687 2002-06-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5688
5689         PR c++/6723
5690         * pt.c (lookup_template_class): Don't build complete argument of
5691         BOUND_TEMPLATE_TEMPLATE_PARM if appeared as a default template
5692         argument.
5693
5694 2002-06-19  Akim Demaille  <akim@epita.fr>
5695
5696         * parse.y (TYPENAME): Rename as tTYPENAME to avoid the clash with
5697         decl.h's TYPENAME.
5698         * spew.c, lex.c: Adjust.
5699         * parse.y (explicit_instantiation): Add empty action to override
5700         the default $$ = $1 where it introduces a type clash.
5701
5702 2002-06-14  Jason Merrill  <jason@redhat.com>
5703
5704         * semantics.c (begin_for_stmt): Push the 'for' scope before
5705         adding the FOR_STMT.
5706
5707         C++ ABI changes.
5708         * class.c (build_base_field): Set DECL_PACKED.
5709         (layout_class_type): Don't use tail padding of PODs.
5710         * mangle.c (write_unqualified_name): Fix template conversion op
5711         mangling.
5712
5713 2002-06-16  Richard Henderson  <rth@redhat.com>
5714
5715         PR opt/6793
5716         * tree.c (cp_cannot_inline_tree_fn): Don't short-circuit test
5717         after template instantiation.
5718
5719 2002-06-16  Richard Henderson  <rth@redhat.com>
5720
5721         * cp-tree.h, decl2.c (flag_ms_extensions): Move to c-common.
5722
5723 2002-06-15  Gabriel Dos Reis  <gdr@codesourcery.com>
5724
5725         * cp-tree.h (compiler_error): Remove declaration.
5726         * lex.c (compiler_error): Remove definition.
5727
5728 2002-06-14  Steve Ellcey  <sje@cup.hp.com>
5729
5730         * g++spec.c (LIBUNWIND): New.
5731         (lang_specific_driver): Add it if USE_UNWIND_EXCEPTIONS is set.
5732
5733 2002-06-13  Jessica Han  <jessica@cup.hp.com>
5734
5735         * class.c (build_vtable): Use TARGET_VTABLE_ENTRY_ALIGN.
5736         (build_vtbl_initializer): Honor TARGET_VTABLE_DATA_ENTRY_DISTANCE.
5737         (build_vbase_offset_vtbl_entries): Likewise.
5738         * rtti.c (build_headof): Likewise.
5739         (get_tinfo_decl_dynamic): Likewise.
5740         (create_pseudo_type_info): Likewise.
5741
5742 2002-06-12  Stan Shebs  <shebs@apple.com>
5743
5744         * mpw-config.in: Remove file, no longer used.
5745         * mpw-make.sed: Ditto.
5746
5747 2002-06-07  Zack Weinberg  <zack@codesourcery.com>
5748
5749         * decl2.c: Update call to cpp_handle_option.
5750
5751 2002-06-07  H.J. Lu  (hjl@gnu.org)
5752
5753         * decl2.c (flag_use_cxa_atexit): Set to DEFAULT_USE_CXA_ATEXIT.
5754
5755 2002-06-06  Gabriel Dos Reis  <gdr@codesourcery.com>
5756
5757         * error.c (cp_error_at): Fix typo.
5758
5759 2002-06-04  Gabriel Dos Reis  <gdr@codesourcery.com>
5760
5761         * error.c (cp_diagnostic_starter): Adjust call.
5762         (maybe_print_instantiation_context): Change prototype to take a
5763         'diagnostic_info *'.
5764         (print_instantiation_full_context): Likewise.
5765         (print_instantiation_partial_context): Likewise.
5766         (cp_diagnostic_starter): Likewise.
5767         (cp_diagnostic_finalizer): Likewise.
5768         (cp_print_error_function): Likewise.
5769         (cp_printer): Take a secondary parameter as a 'text_info *'.
5770         Remove output_state savings.  Adjust calls.
5771
5772 2002-06-03  Geoffrey Keating  <geoffk@redhat.com>
5773
5774         * pt.c (inline_parm_levels): Mark for GC.
5775
5776         * mangle.c (start_mangling): Allocate G.substitutions here...
5777         (init_mangle): ... rather than here.
5778         (finish_mangling): Clear the varray pointer when done with it.
5779         * spew.c (yylexstring): Don't use VARRAY_FREE.
5780         * search.c (bfs_walk): Don't use VARRAY_FREE.
5781         * decl2.c (pending_statics): Use gengtype to mark.
5782         (deferred_fns): Likewise.
5783         (ssdf_decls): Likewise.
5784         (init_decl2): Delete.
5785         * decl.c (pop_from_top_level): Don't use VARRAY_FREE.
5786         (cxx_init_decl_processing): Don't call init_decl2.
5787         (cxx_pop_function_context): Don't use VARRAY_FREE.
5788         * cp-tree.h (struct saved_scope): No need for special marking
5789         of varrays.
5790         (struct language_function): Likewise.
5791         (local_classes): Use gengtype to mark.
5792         (init_decl2): Delete prototype.
5793         * class.c (init_class_processing): Don't use
5794         ggc_add_tree_varray_root.
5795         (build_vtbl_initializer): Don't use VARRAY_FREE.
5796
5797         * decl.c (typename_compare): Don't use same_type_p.
5798
5799         * decl.c: Include hashtab.h instead of hash.h.
5800         (typename_hash): Update to use htab_h.
5801         (typename_compare): Likewise.
5802         (typename_htab): Use gengtype to mark.
5803         (build_typename_type): Update to use htab_h.
5804         * Make-lang.in (cp/decl.o): Use HASHTAB_H instead of hash.h.
5805
5806         * Make-lang.in (gt-cp-tree.h): New rule.
5807         (cp/tree.o): Depend on gt-cp-tree.h.
5808         * config-lang.in (gtfiles): Add cp/tree.c.
5809         * tree.c: Include gt-cp-tree.h.
5810         (list_hash_table): Use gengtype to mark.
5811         (init_tree): Use gengtype to mark trees.
5812
5813         * Make-lang.in (cp/decl.o): Add debug.h dependency.
5814         * call.c (struct z_candidate): Use gengtype.
5815         (USER_CONV_CAND): Use WRAPPER_ZC.
5816         (convert_class_to_reference): Use build_zc_wrapper.
5817         (build_type_conversion_1): Likewise.
5818         (build_over_call): Use WRAPPER_ZC.
5819         (add_warning): Use build_zc_wrapper.
5820         * cp-lang.c (LANG_HOOKS_MARK_TREE): Delete.
5821         * cp-tree.h (struct lang_identifier): Use gengtype.
5822         (struct template_parm_index_s): Likewise.
5823         (struct ptrmem_cst): Likewise.
5824         (struct tree_binding): Likewise.
5825         (struct tree_overload): Likewise.
5826         (struct tree_srcloc): Likewise.
5827         (struct tree_wrapper): Likewise.  Also modify to have a pointer
5828         to struct z_candidate rather than void.
5829         (enum cp_tree_node_structure_enum): New.
5830         (union lang_tree_node): New.
5831         (cxx_mark_tree): Delete prototype.
5832         (cp_tree_node_structure): New prototype.
5833         (build_ptr_wrapper): Delete prototype.
5834         (build_int_wrapper): Delete prototype.
5835         (build_zc_wrapper): New prototype.
5836         * decl.c: Include debug.h
5837         (cxx_mark_tree): Delete.
5838         (cp_tree_node_structure): New.
5839         * tree.c (build_ptr_wrapper): Delete.
5840         (build_int_wrapper): Delete.
5841         (build_zc_wrapper): New.
5842
5843         * cp-tree.h [! ENABLE_TREE_CHECKING] (LANG_TYPE_PTRMEM_CHECK):
5844         Correct typo.  Patch from k_fukui@highway.ne.jp.
5845
5846         * semantics.c (current_stmt_tree): Update for change to
5847         struct language_function.
5848         (finish_mem_initializers): Likewise.
5849         * decl.c (cxx_init_decl_processing): Don't set mark_lang_status.
5850         * cp-tree.h (struct language_function): Rename from
5851         cp_language_function.  Change all uses.
5852         (cp_function_chain): Don't need to cast.
5853
5854         * class.c (duplicate_tag_error): Reset discriminator.
5855         (check_bases_and_members): Update for data structure changes.
5856         * cp-tree.h (struct lang_id2): Use gengtype.
5857         (flagged_type_tree): Likewise.
5858         (SET_LANG_ID): Use GGC on struct lang_id2.
5859         (struct cp_language_function): Use gengtype.  Remove field
5860         'x_vcalls_possible_p'.
5861         (current_vcalls_possible_p): Delete.
5862         (struct lang_type_header): New.
5863         (struct lang_type_class): Rename from struct lang_type.  Include
5864         struct lang_type_header.
5865         (struct lang_type_ptrmem): New.
5866         (struct lang_type): New.
5867         (LANG_TYPE_CLASS_CHECK): New.  Use it in all the appropriate macros.
5868         (LANG_TYPE_PTRMEM_CHECK): New.  Use it in all the appropriate macros.
5869         (TYPE_SET_PTRMEMFUNC_TYPE): Set discriminator, update for changes.
5870         (struct lang_decl_flags): Use gengtype.  Add discriminators.
5871         (struct lang_decl): Use gengtype.  Add and use discriminators.
5872         Update the macros that reference moved fields.
5873         (LANG_DECL_U2_CHECK): New function.  Use it when appropriate.
5874         (SET_DECL_THUNK_P): Set discriminator too.
5875         (clear_inline_text_obstack): Delete prototype.
5876         (finish_inline_definitions): Delete prototype.
5877         (mark_pending_inlines): Delete prototype.
5878         (lang_check_failed): New prototype.
5879         * decl.c (struct named_label_use_list): Use gengtype.
5880         (struct named_label_list): Likewise.
5881         (mark_binding_level): Delete.
5882         (mark_named_label_lists): Delete.
5883         (push_local_name): Set discriminator on DECL_LANG_SPECIFIC.
5884         (cxx_init_decl_processing): Use generated marker routine.
5885         (begin_destructor_body): Delete dead set to
5886         current_vcalls_possible_p.
5887         (mark_lang_function): Delete.
5888         (mark_cp_function_context): Delete.
5889         (lang_mark_tree): Use generated marker routines.
5890         * decl2.c (start_objects): Set discriminator when setting
5891         GLOBAL_INIT_PRIORITY.
5892         * lex.c (retrofit_lang_decl): Set discriminators.
5893         (copy_lang_type): Update for changes to lang_type structure.
5894         (cp_make_lang_type): Set discriminator.
5895         * parse.y: Use gengtype on YYLVAL.  Don't use dots in identifiers.
5896         * search.c: Include ggc.h.
5897         * semantics.c (anon_aggr_type_p): Use the macro, don't hand-code it.
5898         (finish_inline_definitions): Delete.
5899         * spew.c (struct token): Use gengtype.
5900         (struct token_chunk): New.
5901         (struct unparsed_text): Use gengtype.  Store tokens in chunks.
5902         (struct feed): Use gengtype.
5903         (feed_obstack): Delete.
5904         (feed): Mark as GC root.
5905         (pending_inlines): Mark as GC root.
5906         (pending_inlines_tail): Likewise.
5907         (processing_these_inlines): Likewise.
5908         (token_obstack): Make static.
5909         (first_token): Likewise.
5910         (init_spew): Don't initialize deleted things; use gengtype for roots.
5911         (clear_inline_text_obstack): Delete.
5912         (feed_input): Use GC for struct feed.  Update for changes to
5913         struct unparsed_text.
5914         (mark_pending_inlines): Delete.
5915         (next_token): Rename from add_token.  Change all callers.  Update
5916         for changes to struct unparsed_text.
5917         (space_for_token): New.
5918         (remove_last_token): New.
5919         (alloc_unparsed_text): New.
5920         (snarf_block): Take an unparsed_text.  Update for changes to struct
5921         unparsed_text.
5922         (snarf_method): Update for changes to struct unparsed_text.
5923         (snarf_defarg): Update for changes to struct unparsed_text.
5924         * tree.c (lang_check_failed): New.
5925
5926         * Make-lang.in (gt-cp-call.h gt-cp-decl2.h gt-cp-parse.h
5927         gt-cp-pt.h gt-cp-repo.h gt-cp-spew.h): New rules.
5928         (cp/spew.o): Add dependency on gt-<filename>.h.
5929         (cp/decl2.o): Add dependency on gt-<filename>.h.
5930         (cp/call.o): Add dependency on gt-<filename>.h.
5931         (cp/pt.o): Add dependency on gt-<filename>.h.
5932         (cp/repo.o): Add dependency on gt-<filename>.h.
5933         (cp/parse.o): Add dependency on gt-<filename>.h.
5934         * call.c: Use gengtype for roots.
5935         * config-lang.in (gtfiles): Add cp-tree.h decl.h lex.h call.c
5936         decl2.c parse.y pt.c repo.c spew.c.
5937         * cp-tree.h: Use gengtype for roots.
5938         (struct saved_scope): Use GGC, gengtype.
5939         (cp_parse_init): Delete prototype.
5940         (init_pt): Delete prototype.
5941         * decl.c: Use gengtype for roots.
5942         (mark_saved_scope): Delete.
5943         (cxx_init_decl_processing): Don't call deleted initilisation
5944         routines.
5945         (signed_size_zero_node): Delete, unused.
5946         * decl.h: Use gengtype for roots.
5947         * decl2.c: Use gengtype for roots.
5948         * lex.h: Use gengtype for roots.
5949         * parse.y: Use gengtype for roots.
5950         (cp_parse_init): Delete.
5951         * pt.c: Use gengtype for roots.
5952         (init_pt): Delete.
5953         * repo.c: Use gengtype for roots.
5954         * spew.c: Use gengtype for roots.
5955
5956         * Make-lang.in: Allow for filename changes.  Add gtype-cp.h.
5957         (cp/decl.o): Add dependency on gtype-cp.h.
5958         * decl.c: Remove use of add_deletable_root, use GTY marker instead.
5959         Include gtype-cp.h.  Allow for filename changes.
5960
5961         * Make-lang.in (cp/gt-decl.h): Generate using gengtype.
5962         (cp/decl.o): Add cp/gt-decl.h dependency.
5963         * config-lang.in (gtfiles): New.
5964         * tree.h: Rename struct binding_level to struct cp_binding_level.
5965         * decl.c: Rename struct binding_level to struct cp_binding_level.
5966         Include cp/gt-decl.h.
5967         (struct cp_binding_level): Use gengtype.
5968         (make_binding_level): Use GGC on struct cp_binding_level.
5969         (mark_binding_level): Use gt_ggc_m_cp_binding_level.
5970         (cxx_init_decl_processing): Mark free_binding_level as
5971         deletable.
5972
5973         * decl.c (mark_cp_function_context): Update calling sequence.
5974
5975         * decl.c (start_function): Don't free 'struct
5976         cp_language_function'.
5977         (pop_cp_function_context): Likewise.
5978         (save_function_data): Allocate it using GC.
5979         * semantics.c (genrtl_start_function): Don't free 'struct
5980         cp_language_function'.
5981
5982 2002-05-31  Matthew Woodcraft  <mattheww@chiark.greenend.org.uk>
5983
5984         * lang-specs.h: Use cpp_debug_options.
5985
5986 2002-05-28  Zack Weinberg  <zack@codesourcery.com>
5987
5988         * mangle.c, tree.c: Include real.h.
5989         * Make-lang.in: Update dependency lists.
5990
5991 2002-05-25  Neil Booth  <neil@daikokuya.demon.co.uk>
5992
5993         * lex.c: Don't include c-lex.h.
5994         * parse.y, spew.c: Don't include c-lex.h; include c-pragma.h.
5995
5996 2002-05-23  Neil Booth  <neil@daikokuya.demon.co.uk>
5997
5998         * spew.c (yyungetc, snarf_block): Remove indent_level handling.
5999
6000 2002-05-22  Richard Henderson  <rth@redhat.com>
6001
6002         * decl.c (obscure_complex_init): Check for VAR_DECL
6003         before using DECL_THREAD_LOCAL.
6004
6005 2002-05-22  Richard Henderson  <rth@redhat.com>
6006
6007         * decl.c (check_tag_decl): Handle RID_THREAD.
6008         (obscure_complex_init): Reject run-time init of tls.
6009         (grokvardecl, grokdeclarator): Handle RID_THREAD.
6010         * lex.c (reswords): Add __thread.
6011         (rid_to_yy): Map RID_THREAD to SCSPEC.
6012
6013 2002-05-22  Neil Booth  <neil@daikokuya.demon.co.uk>
6014
6015         * cp-lang.c (LANG_HOOKS_POST_OPTIONS): Use c_common_post_options.
6016         * cp-tree.h (cxx_post_options): Kill.
6017         * cp-lex.c (cxx_post_options): Kill.
6018
6019 2002-05-21  Richard Henderson  <rth@redhat.com>
6020
6021         * lex.c (rid_to_yy): Add RID_THREAD.
6022
6023 2002-05-21  Alexandre Oliva  <aoliva@redhat.com>
6024
6025         * init.c (build_vec_init): Test for trivial copy-assignment when
6026         copy-assigning arrays.
6027
6028 2002-05-20  Andreas Jaeger  <aj@suse.de>
6029
6030         * init.c (build_default_init): Remove unused variable.
6031
6032 2002-05-20  Alexandre Oliva  <aoliva@redhat.com>
6033
6034         * call.c (any_strictly_viable): New.
6035         (build_new_op): Use it for COMPOUND_EXPR and ADDR_EXPRs.
6036
6037 2002-05-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6038
6039         * error.c (dump_type) [TYPEOF_TYPE]: Fix parenthesis printing.
6040
6041 2002-05-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6042
6043         PR c++/186, DR 259
6044         * pt.c (do_decl_instantiation): Don't complain explicit
6045         instantiation after explicit specialization.
6046         (do_type_instantiation): Likewise.
6047
6048 2002-05-19  Alexandre Oliva  <aoliva@redhat.com>
6049
6050         * cp-tree.h (complete_type_or_diagnostic): Changed prototype,
6051         renamed from...
6052         (complete_type_or_else): ... this.  Redefined as macro.
6053         (cxx_incomplete_type_diagnostic): Declare.
6054         (cxx_incomplete_type_error): Define as macro.
6055         * init.c (build_delete): Warn about incomplete types other than
6056         void, and use the built-in operator delete for them.
6057         * typeck.c (complete_type_or_diagnostic): Renamed from
6058         complete_type_or_else.  Added warn_only argument, passed to...
6059         * typeck2.c (cxx_incomplete_type_diagnostic): ... this.  Print
6060         warnings or errors depending on new warn_only argument.  Renamed
6061         from...
6062         (cxx_incomplete_type_error): ... this.  New implementation in
6063         terms of cxx_incomplete_type_diagnostic.
6064
6065 2002-05-18  Jason Merrill  <jason@redhat.com>
6066
6067         PR c++/6611
6068         * decl2.c (import_export_decl): If we clear
6069         DECL_NOT_REALLY_EXTERN, make sure DECL_EXTERNAL is set.
6070
6071 2002-05-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6072
6073         PR c++/6620
6074         * pt.c (verify_class_unification): Don't check if PARM is template
6075         parameter dependent.  Simplify.
6076         (unify) [TEMPLATE_PARM_INDEX]: Handle when ARG is a template
6077         parameter dependent expression.
6078
6079 2002-05-14  Jason Merrill  <jason@redhat.com>
6080
6081         * rtti.c (get_tinfo_decl): Don't call comdat_linkage.
6082         Do set DECL_COMDAT.
6083         (synthesize_tinfo_var): Take the public decl.
6084         (create_real_tinfo_var): Likewise.  Check DECL_COMDAT.
6085         (emit_tinfo_decl): Adjust.  Call import_export_decl.
6086         * decl2.c (import_export_decl): Simplify tinfo decl handling.
6087
6088 2002-05-14  Alexandre Oliva  <aoliva@redhat.com>
6089
6090         * cp-tree.h (struct lang_type): Added non_zero_init.
6091         (CLASSTYPE_NON_ZERO_INIT_P): New macro.
6092         (zero_init_p, force_store_init_value, build_forced_zero_init): Declare.
6093         * class.c (check_field_decls): Test non_zero_init.
6094         * cvt.c (convert_to_pointer_force): Use cp_convert_to_pointer for
6095         zero-to-NULL conversions.
6096         * decl.c (obscure_complex_init): Don't reset DECL_INITIAL of a
6097         type that needs zero-initialization without zeros.
6098         (check_initializer_decl): Compute zero-initializer for types
6099         that require a non-trivial one.
6100         * init.c (build_forced_zero_init): New function.
6101         (build_default_init): Use it.
6102         * tree.c (zero_init_p): New function.
6103         * typeck2.c (force_store_init_value): New function.
6104         (process_init_constructor): Create non-trivial zero-initializers
6105         for array members and class fields.
6106
6107 2002-05-14  Neil Booth  <neil@daikokuya.demon.co.uk>
6108
6109         * lang-specs.h: Remove redundant -lang-c++.
6110
6111 2002-05-13  Jason Merrill  <jason@redhat.com>
6112
6113         * class.c (build_vtbl_ref_1): Use fixed_type_or_null.
6114         (fixed_type_or_null): See through reference vars.
6115         (build_base_path): Vtable contents are constant.
6116         * typeck.c (get_member_function_from_ptrfunc): Likewise.
6117
6118 2002-05-12  Jason Merrill  <jason@redhat.com>
6119
6120         * cp-lang.c (ok_to_generate_alias_set_for_type): Backend-created
6121         structs are safe.
6122
6123 2002-05-09  Neil Booth  <neil@daikokuya.demon.co.uk>
6124
6125         * cp-tree.h (flag_ansi): Remove.
6126         * decl2.c (flag_ansi): Remove.
6127         (cxx_decode_option): Set flag_iso and flag_undef.
6128
6129 2002-05-09  Jason Merrill  <jason@redhat.com>
6130
6131         * typeck.c (get_member_function_from_ptrfunc): Reorganize.
6132         Use subtraction rather than a bitmask to get the index.
6133         * cvt.c (cp_convert_to_pointer): Bail on an error_mark_node.
6134
6135         * pt.c (tsubst_expr) [ASM_STMT]: Copy ASM_INPUT_P.
6136
6137 2002-05-07  Neil Booth  <neil@daikokuya.demon.co.uk>
6138
6139         * Make-lang.in (decl2.o): Update.
6140         * cp-tree.h (warn_multichar): Remove.
6141         * decl2.c: Include c-common.h.
6142         (warn_multichar): Remove.
6143
6144 2002-05-03  Jason Merrill  <jason@redhat.com>
6145
6146         * tree.c (build_cplus_array_type): Only const and volatile get
6147         special handling.
6148
6149         * decl.c (BOOL_TYPE_SIZE): Move default to defaults.h.
6150
6151 2002-04-30  Mark Mitchell  <mark@codesourcery.com>
6152
6153         ABI change, returning simple classes from functions.
6154         * class.c (finish_struct_bits): Only mark TREE_ADDRESSABLE if
6155         TYPE_HAS_TRIVIAL_INIT_REF is false or
6156         TYPE_HAS_NONTRIVIAL_DESTRUCTOR is true.
6157
6158 2002-04-30  Jason Merrill  <jason@redhat.com>
6159
6160         PR debug/6436
6161         * decl.c (grokdeclarator): Don't override TYPE_NAME of an
6162         anonymous class with a typedef if there are attributes.
6163
6164 2002-04-29  Paul Eggert  <eggert@twinsun.com>
6165
6166         * parse.y (nomods_initdcl0): Replace $<ttype>3 with $<ttype>$.
6167
6168 2002-04-29  Jakub Jelinek  <jakub@redhat.com>
6169
6170         PR c++/6477
6171         * decl.c (follow_tag_typedef): Check if TYPE_NAME (original) is
6172         non-NULL first.
6173
6174 2002-04-29  Mark Mitchell  <mark@codesourcery.com>
6175
6176         PR c++/6492
6177         * pt.c (tsubst_friend_class): If the friend has an explicit scope,
6178         enter that scope before name lookup.
6179
6180         PR c++/6486
6181         * method.c (do_build_copy_constructor): Avoid building
6182         cv-qualified reference types.
6183
6184 2002-04-29  Nathan Sidwell  <nathan@codesourcery.com>
6185
6186         PR c++/5719
6187         * decl.c (grok_op_properties): Assignment ops don't have to return
6188         by value. operator% should.
6189
6190 2002-04-28  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
6191
6192         PR c/6343
6193         * decl.c (duplicate_decls): Call merge_weak.
6194
6195 2002-04-26  Richard Henderson  <rth@redhat.com>
6196
6197         * parse.y (malloced_yyss, malloced_yyvs): New.
6198         (yyoverflow): Re-add.  Set them.
6199         (free_parser_stacks): New.
6200
6201 2002-04-26  Mark Mitchell  <mark@codesourcery.com>
6202
6203         PR c++/6497
6204         * method.c (do_build_assign_ref): Pass a derivation to
6205         build_method_call when calling base class assignment operators.
6206
6207 2002-04-26  Richard Henderson  <rth@redhat.com>
6208
6209         * parse.y (yyoverflow): Revert.
6210
6211 2002-04-26  Richard Henderson  <rth@redhat.com>
6212
6213         PR c/3581
6214         * parse.y (string): Remove.  Update all uses to use STRING
6215         instead, and not call combine_strings.
6216         * rtti.c (tinfo_name): Use fix_string_type.
6217         * semantics.c (finish_asm_stmt): Don't call combine_strings.
6218         * spew.c (yylexstring): New.
6219         (read_token): Use it.
6220
6221 2002-04-25  Richard Henderson  <rth@redhat.com>
6222
6223         PR c/2161
6224         * parse.y (yyoverflow): New.
6225
6226 2002-04-25  Jason Merrill  <jason@redhat.com>
6227
6228         PR c++/5607
6229         * search.c (check_final_overrider): No longer static.
6230         * class.c (update_vtable_entry_for_fn): Call it.
6231         * cp-tree.h: Adjust.
6232
6233 2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>
6234
6235         * cp-lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.
6236         * cp-tree.h (cxx_set_yydebug): Die.
6237         * lex.c (YYDEBUG): Get from c-lex.h.
6238         (cxx_set_yydebug): Remove.
6239         * parse.y: Include c-lex.h.
6240         (YYDEBUG): Get from c-lex.h.
6241
6242 2002-04-24  Mark Mitchell  <mark@codesourcery.com>
6243
6244         PR c++/6438.
6245         * cvt.c (convert_to_void): Don't unconditionally make COND_EXPRs
6246         void.
6247
6248 2002-04-24  Neil Booth  <neil@daikokuya.demon.co.uk>
6249
6250         * cp-lang.c (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE,
6251         LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE, LANG_HOOKS_ATTRIBUTE_TABLE):
6252         Redefine.
6253         * cp-tree.h (cp_attribute_table): Rename.
6254         * decl.c (lang_attribute_table): Remove declaration.
6255         (cxx_init_decl_processing): Don't set it.
6256         * tree.c (cp_attribute_table): Rename.
6257
6258 2002-04-24  Jason Merrill  <jason@redhat.com>
6259
6260         PR c++/6331
6261         * method.c (do_build_copy_constructor): Use cp_build_qualified_type.
6262         * typeck.c (build_modify_expr): Allow arrays to differ in cv-quals.
6263         The pedwarn for array assignment is now unconditional.
6264         * tree.c (build_cplus_array_type_1): Still process simple array types
6265         normally in templates.
6266
6267         PR c++/6395
6268         * decl.c (make_rtl_for_nonlocal_decl): Don't mess with #pragma i/i
6269         stuff for comdats.
6270
6271 2002-04-23  Jakub Jelinek  <jakub@redhat.com>
6272
6273         * parse.y (check_class_key): Allow KEY to be union/enum/struct/class
6274         node with attributes.
6275
6276 2002-2-23  David O'Brien  <obrien@FreeBSD.org>
6277
6278         * g++spec.c (MATH_LIBRARY_PROFILE, LIBSTDCXX_PROFILE): Add.
6279         Use MATH_LIBRARY_PROFILE and LIBSTDCXX_PROFILE if profile flag given.
6280
6281 2002-04-23  Mark Mitchell  <mark@codesourcery.com>
6282
6283         PR c++/6256:
6284         * pt.c (tsubst_friend_class): Handle templates with explicit
6285         nested names.
6286
6287         PR c++/6331:
6288         * typeck.c (merge_types): Remember the cv-qualification of pointer
6289         types when merging them.
6290
6291 2002-04-20  Neil Booth  <neil@daikokuya.demon.co.uk>
6292
6293         * cp-lang.c (LANG_HOOKS_FUNCTION_INIT,
6294         LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_MARK): Redefine.
6295         * cp-tree.h (cxx_push_function_context, cxx_pop_function_context,
6296         cxx_mark_function_context): New.
6297         * decl.c (push_cp_function_context, pop_cp_function_context,
6298         mark_cp_function_context): Rename for consistency.
6299         (cxx_init_decl_processing): Don't set old hooks.
6300
6301 2002-04-19  Neil Booth  <neil@daikokuya.demon.co.uk>
6302
6303         * call.c (convert_type_from_ellipsis): Rename, update.
6304         * cp-lang.c (LANG_HOOKS_TYPE_PROMOTES_TO): Redefine.
6305         * cp-tree.h (convert_type_from_ellipsis): Rename.
6306         * decl.c (cxx_init_decl_processing): Don't set hook.
6307
6308 2002-04-18  Neil Booth  <neil@daikokuya.demon.co.uk>
6309
6310         * call.c (build_new_method_call): Update.
6311         * cp-lang.c (LANG_HOOKS_INCOMPLETE_TYPE_ERROR): Redefine.
6312         * cp-tree.h (cxx_incomplete_type_error): New.
6313         * decl.c (grokdeclarator, grokparms): Update.
6314         * decl2.c (check_classfn): Update.
6315         * pt.c (tsubst): Update.
6316         * typeck.c (complete_type_or_else, expr_sizeof,
6317         decay_conversion): Update.
6318         * typeck2.c (incomplete_type_error): Rename.
6319         (add_exception_specifier): Update.
6320
6321 2002-04-18  Jason Merrill  <jason@redhat.com>
6322
6323         PR c++/5658
6324         * search.c (setup_class_bindings): A class template qualifies as a
6325         type binding.
6326
6327 2002-04-17  Jakub Jelinek  <jakub@redhat.com>
6328
6329         PR c++/6316
6330         * decl2.c (finish_file): Clear DECL_EXTERNAL in a separate loop
6331         before expanding.
6332
6333 2002-04-16  Mark Mitchell  <mark@codesourcery.com>
6334
6335         * init.c (begin_init_stmts): Remove commented out code.
6336         (finish_init_stmts): Set STMT_EXPR_NO_SCOPE.
6337         * semantics.c (begin_gobal_stmt_expr): Adjust call to
6338         expand_start_stmt_expr.
6339
6340 2002-04-15  Mark Mitchell  <mark@codesourcery.com>
6341
6342         * decl.c (register_dtor_fn): Pass the address of dso_handle, not
6343         dso_handle itself, to __cxa_atexit.
6344
6345 2002-04-15  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
6346
6347         * error.c (cxx_print_error_function): Adjust call to macros.
6348
6349 2002-04-14  Jakub Jelinek  <jakub@redhat.com>
6350
6351         * class.c (layout_virtual_bases): Do all dsize computation on trees.
6352
6353 2002-04-14  Jason Merrill  <jason@redhat.com>
6354
6355         * typeck.c (get_member_function_from_ptrfunc): Don't do
6356         gratuitious division and multiplication on
6357         ptrmemfunc_vbit_in_delta targets.
6358
6359 2002-04-12  Mark Mitchell  <mark@codesourcery.com>
6360
6361         PR c++/5373.
6362         * semantics.c (finish_expr_stmt): Remember the type of the
6363         expression before any conversions are performed.
6364
6365 2002-04-12  Mark Mitchell  <mark@codesourcery.com>
6366
6367         PR c++/5189.
6368         * call.c (add_template_candidate_real): Do not treat member
6369         templates as copy constructors.
6370
6371 2002-04-12  Mark Mitchell  <mark@codesourcery.com>
6372
6373         * decl.c (duplicate_decls): Do not copy the RTL for a variable
6374         declaration if the old variable had an incomplete type and the new
6375         variable does not.
6376         (complete_vars): Do not call layout_decl for completed variables.
6377
6378 2002-04-12  Richard Sandiford  <rsandifo@redhat.com>
6379
6380         * decl.c (duplicate_decls): Don't try to unify an implicit typedef
6381         with an explicit one.
6382         (follow_tag_typedef): New.
6383         (lookup_tag): Use it to extract the tag of an explicit typedef.
6384         (xref_tag): Likewise.
6385
6386 2002-04-11  Andrew Haley  <aph@redhat.com>
6387
6388         * typeck.c (type_after_usual_arithmetic_conversions):
6389         If two types have the same variant, return immediately.
6390         When two floating-point operands are the same precision:
6391           convert to float if one of the operands is float;
6392           if neither operand is one of the standard types, return the type
6393           of the first operand.
6394
6395 2002-04-10  Nathan Sidwell  <nathan@codesourcery.com>
6396
6397         PR c++/5507
6398         * decl.c (make_typename_type): Remove implicit typenameness.
6399
6400 2002-04-09  Jason Merrill  <jason@redhat.com>
6401
6402         PR optimization/6189
6403         * semantics.c (genrtl_start_function): Don't free
6404         DECL_SAVED_FUNCTION_DATA for inline functions.
6405
6406         * init.c (build_member_call): For now, don't convert to
6407         intermediate base if it would cause an error.
6408
6409 2002-04-08  Paolo Carlini  <pcarlini@unitus.it>
6410
6411         * parse.y (namespace_qualifier, maybe_identifier,
6412         begin_explicit_instantiation, end_explicit_instantiation,
6413         apparent_template_type, .finish_template_type,
6414         do_id, maybe_init, defarg_again, component_decl_1):
6415         Add ending ';', in accordance with POSIX.
6416
6417 2002-04-06  Mark Mitchell  <mark@codesourcery.com>
6418
6419         PR c++/5571
6420         * class.c (layout_class_type): Remember incomplete static
6421         variables.
6422         (finish_struct_1): Call complete_vars, not
6423         hack_incomplete_structures.
6424         * cp-tree.h (hack_incomplete_structures): Rename to ...
6425         (complete_vars): ... this.
6426         (struct saved_scope): Remove incomplete.
6427         (namespace_scope_incomplete): Remove.
6428         * decl.c (struct binding_level): Remove incomplete.
6429         (incomplete_vars): New variable.
6430         (mark_binding_level): Don't mark incomplete.
6431         (print_binding_level): Don't print it.
6432         (mark_saved_scope): Don't mark incomplete.
6433         (pushdecl): Use maybe_register_incopmlete_var.
6434         (cxx_init_decl_processing): Register incomplete_vars for GC.
6435         (start_decl_1): Clarify error message.
6436         (hack_incomplete_vars): Remove.
6437         (maybe_register_incomplete_var): New function.
6438         (complete_vars): Likewise.
6439
6440 2002-04-06  Jason Merrill  <jason@redhat.com>
6441
6442         PR c++/4934
6443         * error.c (dump_expr) [CONVERT_EXPR]: Make sure TREE_TYPE (t) is
6444         set before checking it.
6445
6446         PR c++/525
6447         * init.c (build_member_call): Use build_scoped_ref.
6448         (resolve_offset_ref): Likewise.
6449         * call.c (build_scoped_method_call): Likewise.
6450         * tree.c (maybe_dummy_object): Kludge around current_class_type being
6451         wrong.
6452         * typeck2.c (build_scoped_ref): Return the binfo via binfo_p parm.
6453         * cp-tree.h: Adjust.
6454
6455         * init.c (push_base_cleanups): Just use build_scoped_method_call.
6456
6457         PR c++/6179
6458         * method.c (implicitly_declare_fn): Pass unqualified type to
6459         synthesize_exception_spec.
6460
6461 2002-04-04  Neil Booth  <neil@daikokuya.demon.co.uk>
6462
6463         * cp-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
6464         * cvt.c: Update comment.
6465         * init.c (expand_cleanup_for_base): Update.
6466         * semantics.c (finish_parenthesized_expr): Update.
6467         * typeck.c (cp_truthvalue_conversion): Update.
6468
6469 2002-04-04  Jason Merrill  <jason@redhat.com>
6470
6471         * semantics.c (finish_eh_cleanup): New fn.
6472         * cp-tree.h: Add prototype.
6473         * init.c (perform_member_init, expand_cleanup_for_base): Use
6474         finish_eh_cleanup.
6475         * cp-tree.def (SUBOBJECT, CTOR_STMT): Remove.
6476         * cp-tree.h: Remove references.
6477         * decl.c (begin_constructor_body, end_constructor_body): Likewise.
6478         * dump.c (cp_dump_tree): Likewise.
6479         * pt.c (tsubst_expr): Likewise.
6480         * semantics.c (genrtl_ctor_stmt, genrtl_subobject): Remove.
6481         (cp_expand_stmt): Remove handling of CTOR_STMT and SUBOBJECT.
6482         * tree.c (cp_statement_code_p): Likewise.
6483
6484         * init.c (build_new_1): Set CLEANUP_EH_ONLY on deleting cleanup.
6485
6486         PR c++/5636
6487         * semantics.c (nullify_returns_r): Just set CLEANUP_EH_ONLY on
6488         cleanup for nrv.
6489
6490         PR c++/5104
6491         * typeck.c (comptypes) [FUNCTION_TYPE]: Don't compare exception
6492         specifiers.
6493         [METHOD_TYPE]: Use same code as FUNCTION_TYPE.
6494
6495 2002-04-03  Richard Henderson  <rth@redhat.com>
6496
6497         * cp-lang.c (cxx_warn_unused_global_decl): New.
6498         (LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): New.
6499
6500 2002-04-03  Neil Booth  <neil@daikokuya.demon.co.uk>
6501
6502         * cp-lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): Redefine.
6503         * tree.c (init_tree): Don't set hook.
6504
6505 2002-04-03  Roger Sayle  <roger@eyesopen.com>
6506
6507         PR c++/5998:
6508         * decl.c (duplicate_decls): Don't mess with assembler names when
6509         redeclaring builtin functions as static.
6510
6511 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
6512
6513         * call.c (build_addr_func): Update.
6514         * class.c (resolve_address_of_overloaded_function): Update.
6515         * cp-lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
6516         * cp-tree.h (cxx_mark_addressable): New.
6517         * decl.c (register_dtor_fn, cxx_maybe_build_cleanup): Update.
6518         * decl2.c (build_cleanup): Update.
6519         * except.c (build_throw): Update.
6520         * init.c (resolve_offset_ref): Update.
6521         * pt.c (convert_nontype_argument): Update.
6522         * semantics.c (finish_asm_stmt, simplify_affr_init_exprs_r): Update.
6523         * typeck.c (decay_conversion, build_array_ref, build_unary_op,
6524         unary_complex_lvalue): Update.
6525         (mark_addressable): Rename.
6526
6527 2002-04-01  Roger Sayle  <roger@eyesopen.com>
6528
6529         PR c++/5998:
6530         * decl.c (duplicate_decls):  Overwrite the RTL when (and only
6531         when) overwriting a built-in function.  Don't use COPY_DECL_RTL,
6532         but follow the SET_DECL_RTL idiom used elsewhere in the function.
6533
6534 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
6535
6536         * cp-lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
6537         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
6538         * decl.c (grokdeclarator): Update.
6539         * mangle.c (write_integer_cst): Update.
6540         * typeck.c (build_binary_op): Update.
6541
6542 2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>
6543
6544         * cp-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Redefine.
6545         * lex.c (cxx_init): Don't set hook.
6546
6547 2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>
6548
6549         * Make-lang.in (error.o): Update.
6550         * cp-lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine.
6551         * cp-tree.h (struct diagnostic_context): Predeclare.
6552         (cxx_print_error_function): New.
6553         * error.c: Include langhooks-def.h.
6554         (lang_print_error_function): Rename.  Update.
6555         (init_error): Don't set hook.
6556
6557 2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>
6558
6559         * cp-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
6560         Redefine.
6561         * cvt.c (cp_convert_to_pointer, type_promotes_to): Use new hooks.
6562         * decl.c (finish_enum): Similarly.
6563         * error.c (dump_type): Similarly.
6564         * lex.c (cxx_init): Similarly.
6565         * mangle.c (write_builtin_type): Similarly.
6566         * typeck.c (comptypes): Similarly.
6567
6568 2002-03-28  Roger Sayle  <roger@eyesopen.com>
6569
6570         PR c++/5998:
6571         * decl.c (cxx_init_decl_processing): Re-enable built-in functions
6572         in the g++ front-end.
6573         (duplicate_decl): Allow redefinition of anticipated built-ins.
6574         Fix inlining problem by over-writing the old DECL_RTL.
6575         (lookup_namespace_name): Fail to find an identifier in the
6576         specified namespace if its still anticipated.
6577         (builtin_function_1): New function split out from builtin_function
6578         to create a builtin in the current namespace with given context.
6579         (builtin_function): Call builtin_function_1 to define the
6580         appropriate builtins in both the std and global namespaces.
6581         (select_decl): Don't test for anticipated decls here.
6582         (unqualified_namespace_lookup): Instead ignore them whilst
6583         searching through scopes and namespaces.
6584         * decl2.c (do_nonmember_using_decl): If a using declaration
6585         specifies an anticipated built-in function, mark it as no longer
6586         anticipated in that scope.
6587         (ambiguous_decl):  Avoid resolving to an anticipated decl.
6588         * lex.c (do_scoped_id): Fail to find an identifier in the global
6589         namespace if its still anticipated.
6590
6591 2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>
6592
6593         * cp-lang.c (LANG_HOOKS_MAKE_TYPE): Redefine.
6594         * cp-tree.h (cp_make_lang_type): Rename.
6595         * lex.c (cp_make_lang_type): Rename.
6596         (make_aggr_type): Update.
6597         * tree.c (init_tree): Don't set make_lang_type_fn.
6598
6599 2002-03-29  Jakub Jelinek  <jakub@redhat.com>
6600
6601         PR c++/6073
6602         * class.c (finish_struct_1): Update static field's DECL_MODE even
6603         if its type is a variant of t.
6604
6605 2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
6606
6607         * cp-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Redefine.
6608         * cp-tree.h (cxx_insert_default_attributes): New.
6609         * decl.c (insert_default_attributes): Rename.
6610
6611 2002-03-27  Mark Mitchell  <mark@codesourcery.com>
6612
6613         PR c++/4884
6614         * call.c (build_op_delete_call): Allow for the fact the placement
6615         may be a COMPOUND_EXPR.
6616
6617 2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
6618
6619         * cp-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
6620         * cp-tree.h (init_cplus_expand): Remove.
6621         (cxx_expand_expr): New.
6622         * expr.c (cplus_expand_expr): Rename cxx_expand_expr,
6623         fix prototype.
6624         (init_cplus_expand): Remove.
6625         * lex.c (cxx_init): Don't call init_cplus_expand.
6626
6627 2002-03-26  Mark Mitchell  <mark@codesourcery.com>
6628
6629         PR c++/4884.
6630         * init.c (build_new_1): Allow for the fact the result of
6631         build_function_call may be a COMPOUND_EXPR.
6632
6633 2002-03-26  Nathan Sidwell  <nathan@codesourcery.com>
6634
6635         PR c++/5682
6636         * cp-tree.h (BINFO_PRIMARY_P): Explain meaning better.
6637         (dfs_skip_nonprimary_vbases_unmarkedp): Remove.
6638         (dfs_skip_nonprimary_vbases_markedp): Remove.
6639         * search.c (get_shared_vbase_if_not_primary): Remove.
6640         (dfs_skip_nonprimary_vbases_unmarkedp): Remove.
6641         (dfs_skip_nonprimary_vbases_markedp): Remove.
6642         (dfs_unmarked_real_bases_queue_p): Just get the canonical binfo.
6643         (dfs_marked_real_bases_queue_p): Likewise.
6644
6645 2002-03-26  Neil Booth  <neil@daikokuya.demon.co.uk>
6646
6647         * cp-lang.c (LANG_HOOKS_MARK_TREE): Redefine.
6648         * cp-tree.h (cxx_mark_tree): New.
6649         * decl.c (lang_mark_tree): Rename cxx_mark_tree.
6650
6651 2002-03-25  Neil Booth  <neil@daikokuya.demon.co.uk>
6652
6653         * cp-tree.h (cxx_maybe_build_cleanup): New.
6654         * decl.c (destroy_local_var, hack_incomplete_structures): Update.
6655         (maybe_build_cleanup): Rename cxx_maybe_build_cleanup.
6656         * tree.c (build_target_expr): Update.
6657         * cp-lang.c (LANG_HOOKS_MAYBE_BUILD_CLEANUP): Redefine.
6658
6659 2002-03-24  Neil Booth  <neil@daikokuya.demon.co.uk>
6660
6661         * decl2.c (cxx_decode_option): Handle -E.
6662         * lang-specs.h (default_compilers): Preprocess with cc1plus.
6663         * lex.c (cxx_init): Exit quickly if c_common_init returns NULL.
6664
6665 2002-03-23  Jakub Jelinek  <jakub@redhat.com>
6666
6667         PR c++/6037
6668         * decl.c (start_enum): Don't set TREE_ADDRESSABLE on TREE_LIST node.
6669
6670 2002-03-23  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
6671
6672         * error.c (dump_type): Be careful about implicit typenames.
6673
6674 2002-03-21  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
6675
6676         PR C++/3656
6677         * semantics.c (finish_base_specifier): Handle erronous base
6678         classes.
6679
6680 2002-03-22  Zack Weinberg  <zack@codesourcery.com>
6681
6682         * error.c: Always use REAL_VALUE_TO_DECIMAL; don't test
6683         REAL_IS_NOT_DOUBLE.
6684
6685 2002-03-22  Jeff Knaggs  <jknaggs@redhat.com>
6686
6687         * typeck.c (get_member_function_from_ptrfunc): Scale idx down to
6688         an index into the vtable_entry array regardless of
6689         TARGET_PTRMEMFUNC_VBIT_LOCATION.
6690
6691 2002-03-21  Aldy Hernandez  <aldyh@redhat.com>
6692
6693         * tree.c (cp_cannot_inline_tree_fn): Same.
6694
6695 2002-03-21  Neil Booth  <neil@daikokuya.demon.co.uk>
6696
6697         * cp-tree.h (pushdecl, pushlevel, poplevel, set_block,
6698         insert_block, getdecls, global_bindings_p): New.
6699
6700 2002-03-20  Nathan Sidwell  <nathan@codesourcery.com>
6701
6702         PR c++/4361
6703         * mangle.c (struct globals) Add internal_mangling_p member.
6704         (write_template_param): Do internal mangling, if needed.
6705         (mangle_conv_op_name_for_type): Request internal mangling.
6706
6707 2002-03-20  Jason Merrill  <jason@redhat.com>
6708
6709         PR c++/2136
6710         * init.c (build_delete): Check access for a member op delete here.
6711         * decl2.c (delete_sanity): Not here.
6712
6713 2002-03-19  Jason Merrill  <jason@redhat.com>
6714
6715         PR c++/5118
6716         * class.c (get_vfield_name): Use the constructor_name.
6717
6718 2002-03-20  Neil Booth  <neil@daikokuya.demon.co.uk>
6719
6720         * cp-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
6721         * cp-tree.h (lang_printable_name): Rename.
6722         * error.c (lang_decl_name): Use new hook.
6723         * lex.c (cxx_init): Remove old hook.
6724         * pt.c (tsubst_decl): Use new hook.
6725         * tree.c (lang_printable_name): Rename.
6726
6727 2002-03-18  Eric Botcazou  <ebotcazou@multimania.com>
6728
6729         PR c++/3882
6730         * pt.c (tsubst_decl): Move __PRETTY_FUNCTION__ handling...
6731         (tsubst_expr) [DECL_STMT]: ...here. And substitute the initializer
6732         only after recording the declaration.
6733
6734 2002-03-18  Jason Merrill  <jason@redhat.com>
6735
6736         PR c++/2039
6737         * init.c (resolve_offset_ref): Hand off to build_component_ref.
6738
6739         PR c++/4222, c++/5995
6740         * call.c (build_over_call): Fix empty class logic.
6741
6742         PR c++/3870
6743         * cp-tree.h (struct saved_scope): Add last_parms field.
6744         * decl.c (maybe_push_to_top_level): Save last_function_parms.
6745         (pop_from_top_level): Restore it.
6746
6747         PR c++/4377
6748         * mangle.c (write_expression): Strip NOP_EXPRs sooner.  Also strip
6749         NON_LVALUE_EXPRs.
6750
6751         PR c++/4003
6752         * pt.c (tsubst_friend_function): Use decl_namespace_context.
6753
6754         PR c++/3948 -- C++ ABI change, followup to 2001-12-18 patch.
6755         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE for a
6756         type with a nontrivial destructor.
6757
6758 2002-03-17  Jason Merrill  <jason@redhat.com>
6759
6760         PR c++/4460
6761         * class.c (build_base_path): Virtual base layout is fixed in
6762         in-charge [cd]tors.
6763
6764 2002-03-17  Neil Booth  <neil@daikokuya.demon.co.uk>
6765
6766         * cp-lang.c (LANG_HOOKS_PARSE_FILE): Redefine.
6767         * parse.y (yyparse): Remove macro.
6768
6769 2002-03-17  Jason Merrill  <jason@redhat.com>
6770
6771         PR c++/5757
6772         * init.c (build_new_1): Pass the right pointer to op delete.
6773
6774 2002-03-16  Nathan Sidwell  <nathan@codesourcery.com>
6775
6776         PR c++/4361
6777         * cp-tree.h (CLASSTYPE_METHOD_VEC): Document where templated
6778         conversion operators go.
6779         (struct lang_decl_flags): Add template_conv_p and unused
6780         bitfields.
6781         (DECL_TEMPLATE_CONV_FN_P): New macro.
6782         * call.c (build_user_type_conversion_1): Don't check second type
6783         conversion of overload set first.
6784         * class.c (add_method): Make sure templated conversion operators
6785         all end up on slot 2.
6786         * lex.c (do_identifier): A conversion operator token might be
6787         satisfied by a templated conversion operator.
6788         * pt.c (check_explicit_specialization): Use
6789         CLASSTYPE_FIRST_CONVERSION_SLOT.
6790         (template_parm_this_level_p): New function.
6791         (push_template_decl_real): Determine DECL_TEMPLATE_CONV_FN_P.
6792         * search.c (lookup_fnfields_1): Template conversions will be on
6793         the first slot.
6794         * typeck.c (build_component_ref): Preserve the type of an
6795         conversion operator name on the overload type.
6796         (build_x_function_call): Retrieve the conversion operator name.
6797
6798 2002-03-15  Richard Henderson  <rth@redhat.com>
6799
6800         * init.c (build_new_1): Use size_binop instead of cp_build_binary_op.
6801
6802 2002-03-15  Mark Mitchell  <mark@codesourcery.com>
6803
6804         * cp-tree.h (CLEANUP_DECL): Remove.
6805         (CLEANUP_EXPR): Likewise.
6806         * decl.c (destroy_local_var): Simplify.
6807         (maybe_build_cleanup): Tidy.
6808         * dump.c (cp_dump_tree): Remove handling of CLEANUP_STMT.
6809         * semantics.c (cp_expand_stmt): Likewise.
6810         * cp/tree.c (cp_statement_code_p): Likewise.
6811
6812 2002-03-15  Jason Merrill  <jason@redhat.com>
6813
6814         PR c++/5857
6815         * decl.c (duplicate_decls): Use merge_types instead of common_type.
6816         * typeck.c (common_type): Just hand off to
6817         type_after_usual_arithmetic_conversions and
6818         composite_pointer_type.
6819         (merge_types): New fn.
6820         (commonparms): Use it instead of common_type.
6821         (type_after_usual_arithmetic_conversions): Also handle COMPLEX_TYPE.
6822         (composite_pointer_type): Also handle attributes.
6823         * cp-tree.h: Declare merge_types.
6824
6825         * decl.c (make_rtl_for_nonlocal_decl): Also defer COMDAT
6826         variables.
6827         * decl2.c (maybe_make_one_only): Also mark the decl as needed.
6828
6829 2002-03-14  Richard Henderson  <rth@redhat.com>
6830
6831         * decl.c: Include c-pragma.h.
6832         (start_decl, start_function): Invoke maybe_apply_pragma_weak.
6833         * Make-lang.in: Update dependencies.
6834
6835 2002-03-14  Jakub Jelinek  <jakub@redhat.com>
6836
6837         PR c++/5908
6838         * call.c (build_over_call): Set TREE_NO_UNUSED_WARNING too.
6839         * cvt.c (convert_to_void): Preserve TREE_NO_UNUSED_WARNING.
6840
6841 2002-03-12  Richard Sandiford  <rsandifo@redhat.com>
6842
6843         * mangle.c (write_builtin_type): Handle 128-bit integers even if
6844         they are not a standard integer type.
6845
6846 2002-03-12  Richard Sandiford  <rsandifo@redhat.com>
6847
6848         * cp-tree.h (init_init_processing): Remove declaration.
6849         * init.c (BI_header_type, init_init_processing): Remove old ABI stuff.
6850         * decl.c (cxx_init_decl_processing): Don't call init_init_processing.
6851
6852 2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6853
6854         * cp-lang.c (tree_code_type, tree_code_length, tree_code_name):
6855         Define.
6856         * decl.c (duplicate_decls): Use TREE_CODE_LENGTH, not
6857         tree_code_length.
6858         * lex.c (cplus_tree_code_type, cplus_tree_code_length,
6859         cplus_tree_code_name): Delete.
6860         (cxx_init): Don't call add_c_tree_codes, instead set
6861         lang_unsafe_for_reeval.  Don't try to copy into the various
6862         tree_code arrays.
6863
6864 2002-03-12  Nathan Sidwell  <nathan@codesourcery.com>
6865
6866         PR c++/5659
6867         * decl.c (xref_tag): Don't set CLASSTYPE_DECLARED_CLASS here.
6868         * decl2.c (handle_class_head): Set CLASSTYPE_DECLARED_CLASS for
6869         definitions.
6870
6871 2002-03-11  Nathan Sidwell  <nathan@codesourcery.com>
6872
6873         Revert 2001-03-26  Nathan Sidwell  <nathan@codesourcery.com>,
6874         DR209 is now not a defect.
6875         * cp-tree.h (skip_type_access_control): Remove.
6876         * decl.c (grokdeclarator): Do type access control for friend
6877         declarations.
6878         * semantics.c (decl_type_access_control): Don't reset
6879         current_type_lookups.
6880         (save_type_access_control): Always save the lookups.
6881         (skip_type_access_control): Remove.
6882         (finish_class_definition): Don't change type_lookups.
6883
6884 2002-03-11  Nathan Sidwell  <nathan@codesourcery.com>
6885
6886         Revert 2000-12-01  Nathan Sidwell  <nathan@codesourcery.com>,
6887         It is incorrect.
6888         * typeck.c (build_static_cast): Compare non-qualified types
6889         with pointer to member conversions.
6890
6891 2002-03-11  Dan Nicolaescu  <dann@ics.uci.edu>
6892             Daniel Berlin  <dan@dberlin.org>
6893
6894         * cp-lang.c (ok_to_generate_alias_set_for_type): New function.
6895         (cxx_get_alias_set): Use it.
6896
6897 2002-03-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6898
6899         * cp-tree.h (stabilize_expr): Prototype.
6900
6901 2002-03-08  Craig Rodrigues  <rodrigc@gcc.gnu.org>
6902
6903         * cp-tree.h (CLEAR_BINFO_MARKED): Make both parts of
6904         conditional return void.
6905
6906 2002-03-08  Neil Booth  <neil@daikokuya.demon.co.uk>
6907
6908         * cp-lang.c (LANG_HOOKS_UNSAVE): Redefine.
6909         * cp-tree.h (cxx_unsave): New.
6910         * tree.c (cp_unsave): Rename cxx_unsave, update prototype.
6911         (init_tree): Update.
6912
6913 2002-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6914
6915         * decl.c (cxx_init_decl_processing): Use ARRAY_SIZE in lieu of
6916         explicit sizeof/sizeof.
6917         * decl2.c (cxx_decode_option): Likewise.
6918         * lex.c (init_reswords, REDUCE_LENGTH, TOKEN_LENGTH): Likewise.
6919
6920 2002-03-02  Nathan Sidwell  <nathan@codesourcery.com>
6921
6922         PR c++/775
6923         * decl.c (lookup_tag): Only reject enum/class mismatch, not
6924         class/union mismatch.
6925         * parse.y (check_class_key): New function.
6926         (structsp): Call it.
6927
6928 2002-03-01  Michael Matz  <matz@suse.de>
6929
6930         * typeck.c (cp_pointer_int_sum): Complete inner type which is
6931         used later by size_in_bytes().
6932
6933 2002-03-01  Phil Edwards  <pme@gcc.gnu.org>
6934
6935         * cp-tree.h:  Require __GNUC__ to be #defined.
6936         (build_init):  Add missing prototype.
6937
6938 2002-03-01  Jason Merrill  <jason@redhat.com>
6939
6940         * except.c: Don't include decl.h or obstack.h.  Do include
6941         tree-inline.h.
6942         (build_throw): Destroy temporaries from the thrown
6943         expression before calling __cxa_throw.  Construct a thrown
6944         temporary directly into the exception object.
6945         (stabilize_throw_expr): New function.
6946         (wrap_cleanups_r): New function.
6947         * tree.c (stabilize_expr): New function.
6948         * init.c (build_init): New function.
6949         * Make-lang.in (cp/except.o): Adjust .h deps.
6950
6951 2002-02-28  Jason Merrill  <jason@redhat.com>
6952
6953         * search.c (lookup_base_r): Don't clear is_non_public just because
6954         we found a friendly scope.
6955
6956         * decl.c (finish_function): Only warn about missing return
6957         statement with -Wreturn-type.
6958
6959 2002-02-28  Neil Booth  <neil@daikokuya.demon.co.uk>
6960
6961         * class.c (build_clone): Update.
6962         * cp-lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
6963         * cp-tree.h (cxx_dup_lang_specific_decl): New.
6964         * lex.c (copy_lang_decl): Rename cxx_dup_lang_specific_decl.
6965         (copy_decl): Update.
6966         * method.c (make_thunk): Update.
6967
6968 2002-02-27  Zack Weinberg  <zack@codesourcery.com>
6969
6970         * decl2.c: Delete traditional-mode-related code copied from
6971         the C front end but not used, or used only to permit the
6972         compiler to link.
6973
6974 2002-02-24 Craig Rodrigues  <rodrigc@gcc.gnu.org>
6975
6976         PR c++/4093
6977         * cp-tree.h (SET_BINFO_MARKED): Cast false part of condition
6978         to void.
6979
6980 2002-02-22  Jakub Jelinek  <jakub@redhat.com>
6981
6982         PR other/5746
6983         * semantics.c (finish_switch_cond): Don't call get_unwidened
6984         if error_mark_node.
6985
6986 2002-02-22  Nathan Sidwell  <nathan@codesourcery.com>
6987
6988         PR c++/2645, DR 295
6989         * cp-tree.h (tsubst_flags_t): Add tf_ignore_bad_quals,
6990         tf_keep_type_decl.
6991         (make_typename_type): Use tsubst_flags_t.
6992         * decl.c (make_typename_type): Adjust. Return non-artificial
6993         TYPE_DECLs, if required.
6994         (grokdeclarator): Simplify CVR qualification handling. Allow bad
6995         qualifiers on typedef types.
6996         * decl2.c (handle_class_head): Adjust make_typename_type call.
6997         * parse.y (nested_name_specifier): Likewise.
6998         (typename_sub0): Likewise.
6999         (typename_sub1): Likewise.
7000         * pt.c (convert_template_argument): Adjust make_typename_type
7001         return value.
7002         (tsubst): Adjust cp_build_qualified_type_real calls.
7003         (check_cv_quals_for_unify): Cope with allowing bad qualifications
7004         on template type parms.
7005         (instantiate_decl): Recheck substitutions to give warnings on bad
7006         qualifications.
7007         * tree.c (cp_build_qualified_type_real): Use tf_allow_bad_quals.
7008
7009 2002-02-21  Aldy Hernandez  <aldyh@redhat.com>
7010
7011         * cp/decl.c (duplicate_decls): Merge always_inline attribute.
7012
7013         * cp/tree.c (cp_cannot_inline_tree_fn): Do not inline at -O0
7014         unless DECL_ALWAYS_INLINE.
7015
7016 2002-02-20  Jakub Jelinek  <jakub@redhat.com>
7017
7018         * typeck.c (cp_pointer_int_sum): Renamed from
7019         pointer_int_sum, call pointer_int_sum.
7020
7021 2002-02-20  Jakub Jelinek  <jakub@redhat.com>
7022
7023         * decl.c (duplicate_decls): Return 0 if issued error about
7024         redeclaration.
7025
7026 2002-02-19  Jason Merrill  <jason@redhat.com>
7027
7028         ABI change: Mangle `void (A::*)() const' as
7029         M1AKFvvE, not MK1AFvvE.
7030         * mangle.c (write_function_type): Write cv-quals for member
7031         function type here.
7032         (write_pointer_to_member_type): Not here.
7033
7034 2002-02-18  Jason Merrill  <jason@redhat.com>
7035
7036         * pt.c (do_type_instantiation): Don't pedwarn if in_system_header.
7037         (do_decl_instantiation): Likewise.
7038
7039 2002-02-17  Craig Rodrigues  <rodrigc@gcc.gnu.org>
7040
7041         PR c++/5685
7042         * decl.c (duplicate_decls): Make warning unconditional
7043         if duplicate default argument declarations are present.
7044
7045 2002-02-17  Jakub Jelinek  <jakub@redhat.com>
7046
7047         * typeck.c (build_binary_op) [BIT_XOR_EXPR]: Remove explicit
7048         shortening.
7049
7050 2002-02-15  Nathan Sidwell  <nathan@codesourcery.com>
7051
7052         * decl.c (grokdeclarator): Set typedef_decl for all TYPE_DECLs,
7053         remove incorrect comment. Move #if 0'd code to common path. Use
7054         IMPLICIT_TYPENAME_P. Simplify & reformat ARRAY_TYPE duplication.
7055
7056 2002-02-13  Jason Merrill  <jason@redhat.com>
7057
7058         * decl.c (builtin_function): Set TREE_THIS_VOLATILE on return fns.
7059         (finish_function): Don't warn if current_function_returns_null.
7060
7061         * typeck2.c (digest_init): Do handle values of vector type.
7062
7063         * typeck2.c (digest_init, process_init_constructor): Treat vectors
7064         like arrays.
7065
7066 2002-02-11  Jason Merrill  <jason@redhat.com>
7067
7068         * parse.y (reserved_declspecs): Don't handle attributes.
7069         (reserved_typespecquals): Handle them here.
7070         * Make-lang.in (parse.c): Adjust expected conflicts.
7071
7072 2002-02-08  Jakub Jelinek  <jakub@redhat.com>
7073
7074         * parse.y (primary, primary_no_id): Use compstmt_or_stmtexpr
7075         instead of compstmt.
7076         (compstmt_or_stmtexpr): Renamed from compstmt.
7077         (compstmt): In addition to compstmt_or_stmtexpr clear last_expr_type.
7078
7079 2002-02-07  Nathan Sidwell  <nathan@codesourcery.com>
7080
7081         Rename instantiate_type_flags to tsubst_flags_t & expand use.
7082         * cp-tree.h (instantiate_type_flags): Rename to ...
7083         (tsubst_flags_t): ... here. Rename itf_complain to tf_error,
7084         add tf_warning flag.
7085         (instantiate_type): Adjust prototype.
7086         (tsubst, tsubst_expr, tsubst_copy, lookup_template_class,
7087         do_type_instantiation, cp_build_qualified_type_real): Likewise.
7088         cp_build_qualified_type: Adjust.
7089         * class.c (instantiate_type): Adjust parameter. Rename itf_* to
7090         tf_*.
7091         * call.c (standard_conversion): Rename itf_* to tf_*.
7092         (reference_binding): Likewise.
7093         (convert_like_real): Likewise.
7094         * cvt.c (cp_convert_to_pointer): Likewise.
7095         (convert_to_reference): Likewise.
7096         * decl.c (lookup_namespace_name): Use tf_* flags.
7097         (make_typename_type): Likewise.
7098         (grokdeclarator): Likewise.
7099         * pt.c (convert_nontype_argument): Adjust COMPLAIN usage.
7100         (coerce_template_template_parms, convert_template_argument,
7101         coerce_template_parms, maybe_get_template_decl_from_type_decl,
7102         lookup_template_class, tsubst_friend_function, tsubst_friend_class,
7103         instantiate_class_template, tsubst_template_arg_vector,
7104         tsubst_template_parms, tsubst_aggr_type, tsubst_default_argument,
7105         tsubst_decl, tsubst_arg_types, tsubst_function_type,
7106         tsubst_call_declarator_parms, tsubst, tsubst_copy, tsubst_expr,
7107         instantiate_template, fn_type_unification,
7108         resolve_overloaded_unification, verify_class_unification,
7109         unify, get_bindings_real, do_type_instantiation,
7110         regenerate_decl_from_template, instantiate_decl,
7111         tsubst_initializer_list, tsubst_enum,
7112         get_mostly_instantiated_function_type,
7113         invalid_nontype_parm_type_p): Likewise.
7114         * tree.c (cp_build_qualified_type_real): Likewise.
7115         * typeck.c (build_binary_op): Rename itf_* to tf_*.
7116         (build_ptrmemfunc): Likewise.
7117         (convert_for_assignment): Likewise.
7118
7119 2002-02-07  Nathan Sidwell  <nathan@codesourcery.com>
7120
7121         PR c++/109
7122         * decl.c (grokdeclarator): Allow friend declarations from
7123         dependent types.
7124         * decl2.c (handle_class_head): Don't push into template parm contexts.
7125         * pt.c (push_template_decl_real): Template parm contexts are never
7126         being defined.
7127
7128 2002-02-05  Alexandre Oliva  <aoliva@redhat.com>
7129
7130         * class.c: Include target.h.
7131         (check_bitfield_decl): Disregard EMPTY_FIELD_BOUNDARY,
7132         BITFIELDS_NBYTES_LIMITED and PCC_BITFIELD_TYPE_MATTERS for MS
7133         bit-field layout.
7134         * Make-lang.in: Adjust deps.
7135
7136 2002-02-05  Jason Merrill  <jason@redhat.com>
7137
7138         * error.c (dump_type): Be more helpful about VECTOR_TYPE.
7139
7140 2002-02-04  Jakub Jelinek  <jakub@redhat.com>
7141
7142         * semantics.c (begin_switch_stmt): Clear SWITCH_TYPE.
7143         (finish_switch_cond): Set SWITCH_TYPE.
7144
7145 2002-02-04  Richard Henderson  <rth@redhat.com>
7146
7147         * method.c (use_thunk): Always initialize the block tree.  Reindent.
7148         * semantics.c (expand_body): Emit thunks after function, not before.
7149
7150 2002-02-04  Jason Merrill  <jason@redhat.com>
7151
7152         * decl.c (start_function): Call cplus_decl_attributes immediately
7153         after grokdeclarator.
7154
7155         * decl.c (start_function): Combine DECL_RESULT handling code.
7156
7157 2002-02-03  Jason Merrill  <jason@redhat.com>
7158
7159         * xref.c: Remove.
7160         * Make-lang.in (CXX_OBJS): Remove cp/xref.o
7161         (cp/xref.o): Remove dependencies.
7162         * class.c (finish_struct_1, check_methods): Don't call xref fns.
7163         (finish_struct_1): Likewise.
7164         * friend.c (make_friend_class): Likewise.
7165         * lex.c (cxx_init, cxx_finish, extract_interface_info): Likewise.
7166         * spew.c (read_process_identifier): Likewise.
7167
7168 2002-02-01  Jason Merrill  <jason@redhat.com>
7169
7170         PR c++/4872
7171         * decl.c (finish_function): Warn about a non-void function with
7172         no return statement and no abnormal exit.
7173         * cp-tree.h (struct cp_language_function): Add returns_abnormally.
7174         (current_function_returns_abnormally): New macro.
7175         * call.c (build_call): Set it.
7176
7177         * typeck.c (build_component_ref): Always complain about offsetof
7178         constructs on non-PODs.  Only make it an error for members of
7179         virtual bases.
7180
7181         * error.c (dump_scope): Don't add TFF_DECL_SPECIFIERS.
7182         (dump_function_decl): Always dump parms.
7183
7184         * decl2.c (finish_static_data_member_decl): Complain about a local
7185         class with a static data member.
7186
7187         PR c++/4286
7188         * search.c (lookup_field_1): Don't xref a static data member
7189         just because we looked it up.
7190
7191 2002-01-31  Jason Merrill  <jason@redhat.com>
7192
7193         * Make-lang.in (parse.c): Handle .output file.
7194
7195         PR c++/3395
7196         * decl.c (xref_tag): Remember early attributes in TYPE_ATTRIBUTES,
7197         not TREE_TYPE.
7198         * semantics.c (finish_class_definition): Adjust.
7199
7200         Allow attributes in parms and casts.
7201         * parse.y (named_parm): Don't strip attrs.
7202         (declmods): Remove 'attributes' production.
7203         (nonempty_cv_qualifiers): Accept attributes.
7204         (ATTRIBUTE): Give precedence.
7205         * decl.c (groktypename): Handle attributes.
7206         (grokparms): Likewise.
7207
7208 2002-01-29  Jakub Jelinek  <jakub@redhat.com>
7209
7210         * decl2.c (cxx_decode_option): Pass 0 as last argument to
7211         cpp_handle_option.
7212         * lang-specs.h: Use cpp_unique_options instead of cpp_options
7213         when used together with cc1_options.
7214
7215 2002-01-29  Nathan Sidwell  <nathan@codesourcery.com>
7216
7217         PR c++/5132
7218         * typeck2.c (digest_init): Make sure non-array core type is
7219         instantiated.
7220         * decl2.c (reparse_absdcl_as_casts): Just store the type in the
7221         constructor, rather than build a new one.
7222         (build_expr_from_tree, CONSTRUCTOR case): Be careful with the
7223         PURPOSE of constructor elts.
7224
7225 2002-01-23  Zack Weinberg  <zack@codesourcery.com>
7226
7227         * Make-lang.in (parse.c): Adjust expected number of
7228         shift-reduce conflicts.
7229         (decl.o): Depend on diagnostic.h.
7230         * decl.c: Include diagnostic.h.
7231         (grokdeclarator): Check for null pointer.
7232         (finish_function): Don't abort when
7233         current_binding_level->parm_flag != 1, if errors have
7234         occurred; throw away the statement tree and extra binding
7235         levels, and continue.
7236         * lex.c (note_list_got_semicolon): Check for null pointer.
7237         * method.c (hack_identifier): Just return error_mark_node if
7238         value is error_mark_node.
7239         * parse.y (primary: TYPEID(type_id)): No need to use
7240         TYPE_MAIN_VARIANT here.
7241         (handler_seq): Accept an empty list of catch clauses and
7242         generate a fake handler block to avoid later crashes.
7243         (ansi_raise_identifier): Accept the error token too.
7244         * semantics.c (begin_class_definition,
7245         finish_class_definition): Check for error_mark_node.
7246
7247 2002-01-23  Zack Weinberg  <zack@codesourcery.com>
7248
7249         * typeck2.c (friendly_abort): Delete definition.
7250         * cp-tree.h (friendly_abort): Don't prototype.
7251         (my_friendly_assert): Use fancy_abort.
7252
7253 2002-01-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
7254
7255         * cp-tree.h (my_friendly_abort): Remove.
7256
7257 2002-01-23  Jakub Jelinek  <jakub@redhat.com>
7258
7259         * spew.c (pending_inlines, pending_inlines_tail,
7260         processing_these_inlines): Make static.
7261         (mark_pending_inlines): Remove static.
7262         (begin_parsing_inclass_inline): If in function, save pi
7263         for GC to cp_function_chain->unparsed_inlines instead.
7264         (process_next_inline): Likewise.
7265         * cp-tree.h (struct cp_language_function): Add unparsed_inlines.
7266         (mark_pending_inlines): Add prototype.
7267         * decl.c (spew_debug): Remove unused extern.
7268         (mark_lang_function): Call mark_pending_inlines.
7269
7270 2002-01-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
7271
7272         * call.c, class.c, decl.c, decl2.c, error.c, expr.c, friend.c,
7273         init.c, lex.c, mangle.c, method.c, pt.c, repo.c, rtti.c, search.c,
7274         semantics.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c:
7275         Change my_fancy_abort() to abort().
7276
7277 2002-01-23  Jason Merrill  <jason@redhat.com>
7278
7279         PR c++/5453
7280         * class.c (fixed_type_or_null): Fix thinko.
7281
7282         PR c++/3331
7283         * init.c (resolve_offset_ref): Use build_indirect_ref.
7284
7285         * decl2.c (grokclassfn): Don't set DECL_REGISTER on 'this'.
7286
7287 2002-01-22  Jason Merrill  <jason@redhat.com>
7288
7289         * parse.y (function_body): Suppress the block for the outermost
7290         curly braces.
7291         * decl.c (pushdecl): Don't try to skip it.
7292         (begin_function_body): Keep the block we create, not the next one.
7293         * init.c (emit_base_init): Don't mess with keep_next_level.
7294
7295         * class.c (build_base_path): Tweak formatting.
7296
7297 2002-01-19  Nathan Sidwell  <nathan@codesourcery.com>
7298
7299         Fix regression introduced with patch for c++/775
7300         * parse.y (class_head_defn): Check for template specializations
7301         with a different class-key.
7302
7303 2002-01-17  Jason Merrill  <jason@redhat.com>
7304
7305         * decl.c (begin_constructor_body, begin_destructor_body): New fns.
7306         (begin_function_body): Call them and keep_next_level.
7307         * init.c (emit_base_init): Call keep_next_level.
7308         * semantics.c (setup_vtbl_ptr): Lose.
7309         * cp-tree.h (struct cp_language_function): Remove vtbls_set_up_p.
7310         (vtbls_set_up_p): Lose.
7311         * pt.c (tsubst_expr, CTOR_INITIALIZER): Call emit_base_init.
7312         * method.c (do_build_copy_constructor): Likewise.
7313         (synthesize_method): Call finish_mem_initializers.
7314         * parse.y (nodecls): Likewise.
7315
7316         * error.c (dump_type_suffix): Print the exception specs before
7317         recursing.
7318         (dump_function_decl): Here, too.
7319
7320         * cp-tree.h (TMPL_PARMS_DEPTH): Cast to signed HOST_WIDE_INT.
7321
7322 2002-01-10  Ira Ruben   <ira@apple.com>
7323
7324         PR c++/907
7325         * decl.c (start_method): Handle attrlist.
7326
7327 2002-01-10  Jakub Jelinek  <jakub@redhat.com>
7328
7329         * decl2.c (max_tinst_depth): Increase default limit to 500.
7330
7331 2002-01-10  Graham Stott  <grahams@redhat.com>
7332
7333         * spew.c (YYCHAR): Uppercase macro parameter and add
7334         parenthesis.
7335         (YYCODE): Likewise.
7336         (NAME): Uppercase macro parameter.
7337
7338 2002-01-09  Graham Stott  <grahams@redhat.com>
7339
7340         * decl.h (grokdeclarator): Wrap long line.
7341
7342         * semantics.c (FINISH_COND): Uppercase macro paramaters and
7343         add parenthesis.
7344
7345 2002-01-08  Graham Stott  <grahams@redhat.com>
7346
7347         * xref.c (FILE_NAME_ABSOLUTE_P): Add parenthesis.
7348         (PALLOC): Uppercase macro parameter and whitespace.
7349         (SALLOC): Uppercase macro parameter.
7350         (SFREE): Uppercase macros parameter, add parenthese and
7351         whitespace.
7352         (STREQL): Uppercase macro parameter and whitespace.
7353         (STRNEQ): Likewise.
7354         (STRLSS): Likewise.
7355         (STRLEQ): Likewise.
7356         (STRGTR): Likewise.
7357         (STRGEQ): Likewise.
7358
7359         * call.c (convert_like): Add parenthesis and wrap.
7360         (convert_like_with_context): Likewise.
7361         (ICS_RANK): Whitespace.
7362         (NEED_TEMPORARY_P): Remove parenthesis.
7363
7364         * class.c (VTT_TOP_LEVEL_P): Uppercase macro parameter and
7365         whitespace.
7366         (VTT_MARKED_BINFO_P): Likewise.
7367
7368         * decl.c (BINDING_LEVEL): Add parenthesis.
7369         (DEF_OPERATOR): Likewise.
7370
7371         * mangle.c (MANGLE_TRACE): Add parenthesis.
7372         (MANGLE_TRACE_TREE): Likewise.
7373         (write_signed_number): Likewise.
7374         (write_unsigned_number): Likewise.
7375
7376         * pt.c (ccat): Uppercase macro parameter.
7377         (cat): Likewise
7378
7379         * search.c (SET_BINFO_ACCESS): Add parenthesis.
7380
7381 2002-01-07  Jason Merrill  <jason@redhat.com>
7382
7383         * decl2.c (coerce_new_type): Downgrade error for size_t mismatch
7384         to pedwarn.
7385
7386         PR c++/3536
7387         * method.c (make_thunk): If !flag_weak, give the thunk the
7388         function's linkage.
7389         (use_thunk): Here, too.
7390
7391 2002-01-07  Graham Stott  <grahams@redhat.com>
7392
7393         * error.c: Update copyright date.
7394         (print_scope_operator): Add parenthesis.
7395         (print_left_paren): Likewise.
7396         (print_right_paren): Likewise.
7397         (print_left_bracket): Likewise.
7398         (print_right_bracket): Likewise.
7399         (print_template_argument_list_start): Likewise.
7400         (print_template_argument_list_end): Likewise.
7401         (print_non_consecutive_character): Likewise.
7402         (print_tree_identifier): Likewise.
7403         (print_identifier): Likewise.
7404         (NEXT_CODE): Uppercase macro parameter.
7405         (ident_fndecl): Delete unused.
7406         (GLOBAL_THING): Likewise.
7407
7408 2002-01-06  Graham Stott  <grahams@redhat.com>
7409
7410         * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK): Add parenthesis.
7411         (VAR_FUNCTION_OR_PARM_DECL_CHECK): Likewise.
7412         (VAR_TEMPL_TYPE_OR_FUNCTION_DECL_CHECK) Likewise.
7413         (RECORD_OR_UNION_TYPE_CHECK): Likewise.
7414         (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Likewise.
7415         (C_IS_RESERVED_WORD): Uppercase macro parameter.
7416         (C_RID_YYCODE) Likewise.
7417         (ptrmem_cst): Use rtx.
7418         (LOCAL_BINDING_P): Add whitespace.
7419         (INHERITED_VALUE_BINDING_P): Likewise.
7420         (BINDING_SCOPE): Wrap long line.
7421         (BINDING_HAS_LEVEL_P): Remove parenthesis.
7422         (BINDING_VALUE): Wrap long line.
7423         (BINDING_TYPE): Whitespace.
7424         (IDENTIFIER_GLOBAL_VALUE): Add parenthesis.
7425         (SET_IDENTIFIER_GLOBAL_VALUE): Likewise.
7426         (IDENTIFIER_NAMESPACE_VALUE): Likewise.
7427         (SET_IDENTIFIER_NAMESPACE_VALUE: Likewise.
7428         (same_type_p): Uppercase macro parameters.
7429         (same_type_ignoring_top_level_qualifiers_p): Likewise.
7430         (OVL_FUNCTION): Wrap long line.
7431         (OVL_CHAIN): Whitespace.
7432         (OVL_CURRENT): Add parenthesis and whitespace.
7433         (OVL_NEXT): Whitespace.
7434         (OVL_USED): Likewise.
7435         (IDENTIFIER_TYPE_VALUE): Likewise.
7436         (REAL_IDENTIFIER_TYPE_VALUE): Remove parenthesis.
7437         (SET_IDENTIFIER_TYPE_VALUE): Add parenthesis and whitespace.
7438         (LANG_ID_FIELD): Whitespace.
7439         (SET_LANG_ID(NODE,VALUE,NAME): Likewise.
7440         (IDENTIFIER_LABEL_VALUE): Whitespace and wrap.
7441         (SET_IDENTIFIER_LABEL_VALUE): Whitespace.
7442         (IDENTIFIER_IMPLICIT_DECL): Whitespace and wrap.
7443         (SET_IDENTIFIER_IMPLICIT_DECL); Whitespace.
7444         (IDENTIFIER_ERROR_LOCUS): Whitespace and wrap.
7445         (SET_IDENTIFIER_ERROR_LOCUS); Whitespace.
7446         (IDENTIFIER_VIRTUAL_P): Likewise.
7447         (IDENTIFIER_OPNAME_P): Likewise.
7448         (IDENTIFIER_TYPENAME_P): Remove parenthesis.
7449         (C_TYPE_FIELDS_READONLY): Uppercase macro parameters.
7450         (C_SET_EXP_ORIGINAL_CODE): Likewise.
7451         (TYPE_ASSEMBLER_NAME_STRING): Wrap long line.
7452         (TYPE_ASSEMBLER_NAME_LENGTH): Likewise.
7453         (IS_AGGR_TYPE): Uppercase macro parameter.
7454         (CLASS_TYPE_P): Likewise.
7455         (IS_AGGR_TYPE_CODE): Uppercase macro parameter and parenthesis.
7456         (IS_AGGR_TYPE_2): Whitespace.
7457         (TAGGED_TYPE_P): Uppercase macro parameter.
7458         (TYPE_BUILT_IN): Whitespace.
7459         (TYPE_FOR_JAVA): Likewise.
7460         (FUNCTION_ARG_CHAIN): Remove parenthesis.
7461         (FUNCTION_FIRST_USER_PARMTYPE): Add parenthesis.
7462         (FUNCTION_FIRST_USER_PARAM): Likewise.
7463         (PROMOTES_TO_AGGR_TYPE): Whitespace.
7464         (DERIVED_FROM_P): Add parenthesis and wrap.
7465         (UNIQUELY_DERIVED_FROM_P): Likewise.
7466         (ACCESSIBLY_UNIQUELY_DERIVED_P): Likewise.
7467         (PUBLICLY_UNIQUELY_DERIVED_P): Likewise.
7468         (CLASSTYPE_USE_TEMPLATE): Whitespace.
7469         (CLASSTYPE_INLINE_FRIENDS): Remove parenthesis.
7470         (TYPE_GETS_DELETE): Add parenthesis.
7471         (TYPE_HAS_CONVERSION): Add parenthesis and wrap.
7472         (TYPE_HAS_ASSIGN_REF): Likewise,
7473         (TYPE_HAS_CONST_ASSIGN_REF): Likewise.
7474         (TYPE_HAS_INIT_REF): Likewise.
7475         (TYPE_HAS_CONST_INIT_REF): Likewise.
7476         (TYPE_BEING_DEFINED): Likewise.
7477         (TYPE_LANG_SPECIFIC): Likewise.
7478         (CLASSTYPE_RTTI): Likewise.
7479         (TYPE_OVERLOADS_CALL_EXPR): Likewise.
7480         (TYPE_OVERLOADS_ARRAY_REF): Likewise.
7481         (TYPE_OVERLOADS_ARROW): Likewise.
7482         (TYPE_USES_MULTIPLE_INHERITANCE): Likewise.
7483         (TYPE_USES_VIRTUAL_BASECLASSES): Add parenthesis.
7484         (CLASSTYPE_METHOD_VEC): Likewise.
7485         (CLASSTYPE_MARKED_N): Likewise.
7486         (CLASSTYPE_MARKED): Likewise.
7487         (CLASSTYPE_MARKED2): Likewise.
7488         (CLASSTYPE_MARKED3): Likewise.
7489         (CLASSTYPE_MARKED4): Likewise.
7490         (CLASSTYPE_MARKED5): Likewise.
7491         (CLASSTYPE_MARKED6): Likewise.
7492         (SET_CLASSTYPE_MARKED): Whitespace.
7493         (CLEAR_CLASSTYPE_MARKED): Likewise.
7494         (SET_CLASSTYPE_MARKED2): Likewise.
7495         (CLEAR_CLASSTYPE_MARKED2): Likewise.
7496         (SET_CLASSTYPE_MARKED3): Likewise.
7497         (CLEAR_CLASSTYPE_MARKED3): Likewise.
7498         (SET_CLASSTYPE_MARKED4): Likewise.
7499         (CLEAR_CLASSTYPE_MARKED4): Likewise.
7500         (SET_CLASSTYPE_MARKED5): Likewise.
7501         (CLEAR_CLASSTYPE_MARKED5): Likewise.
7502         (SET_CLASSTYPE_MARKED6): Likewise.
7503         (CLEAR_CLASSTYPE_MARKED6): Likewise.
7504         (CLASSTYPE_TAGS): Likewise.
7505         (CLASSTYPE_VSIZE): Likewise.
7506         (CLASSTYPE_VBASECLASSES): Likewise.
7507         (CANONICAL_BINFO): Add parenthesis.
7508         (CLASSTYPE_SIZE(NODE): Likewise.
7509         (CLASSTYPE_SIZE_UNIT): Likewise.
7510         (CLASSTYPE_ALIGN(NODE): Likewise.
7511         (CLASSTYPE_USER_ALIGN): Likewise.
7512         (TYPE_JAVA_INTERFACE): Likewise.
7513         (CLASSTYPE_PURE_VIRTUALS): Likewise.
7514         (CLASSTYPE_NEEDS_VIRTUAL_REINIT): Whitespace and wrap.
7515         (TYPE_HAS_DEFAULT_CONSTRUCTOR): Likewise.
7516         (CLASSTYPE_HAS_MUTABLE): Likewise.
7517         (CLASSTYPE_FRIEND_CLASSES): Likewise. Likewise.
7518         (CLASSTYPE_DECLARED_CLASS): Whitespace and wrap.
7519         (CLASSTYPE_READONLY_FIELDS_NEED_INIT): Likewise.
7520         (CLASSTYPE_REF_FIELDS_NEED_INIT): Likewise.
7521         (CLASSTYPE_INTERFACE_ONLY): Likewise.
7522         (CLASSTYPE_INTERFACE_KNOWN): Likewise.
7523         (CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
7524         (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
7525         (SET_CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
7526         (SET_CLASSTYPE_INTERFACE_KNOWN): Likewise.
7527         (CLASSTYPE_DEBUG_REQUESTED): Whitespace and wrap.
7528         (BINFO_UNSHARED_MARKED): Whitespace.
7529         (BINFO_MARKED): Whitespace and wrap.
7530         (SET_BINFO_MARKED): Likewise.
7531         (CLEAR_BINFO_MARKED): Likewise.
7532         (BINFO_VTABLE_PATH_MARKED): Likewise.
7533         (SET_BINFO_VTABLE_PATH_MARKED): Likewise.
7534         (CLEAR_BINFO_VTABLE_PATH_MARKED): Likewise.
7535         (BINFO_SUBVTT_INDEX): Remove parenthesis.
7536         (BINFO_VPTR_INDEX): Likewise.
7537         (BINFO_PRIMARY_BASE_OF): Likewise,
7538         (CLASSTYPE_VFIELDS): Whitespace.
7539         (VF_DERIVED_VALUE): Wrap long line.
7540         (NAMESPACE_LEVEL): Whitespace.
7541         (CAN_HAVE_FULL_LANG_DECL_P): Remove parenthesis.
7542         (DEFARG_POINTER): Whitespace.
7543         (DECL_NEEDED_P): Remove parenthesis.
7544         (DECL_LANGUAGE): Whitespace.
7545         (SET_DECL_LANGUAGE): Add parenthesis.
7546         (DECL_CONSTRUCTOR_P): Whitespace and wrap.
7547         (DECL_OVERLOADED_OPERATOR_P): Remove parenthesis.
7548         (DECL_IN_AGGR_P): Whitespace.
7549         (DECL_FRIEND_P): Likewise.
7550         (DECL_BEFRIENDING_CLASSES): Likewise.
7551         (DECL_STATIC_FUNCTION_P): Whitespace and wrap.
7552         (DECL_NONCONVERTING_P): Whitespace.
7553         (DECL_PURE_VIRTUAL_P): Likewise.
7554         (DECL_NEEDS_FINAL_OVERRIDER_P): Likewise.
7555         (DECL_PENDING_INLINE_INFO): Whitespace.
7556         (DECL_SORTED_FIELDS): Likewise.
7557         (DECL_DEFERRED_FN): Likewise.
7558         (DECL_TEMPLATE_INFO): Likewise.
7559         (CLASSTYPE_TEMPLATE_INFO): Whitespace and wrap.
7560         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO); Likewise.
7561         (SET_TYPE_TEMPLATE_INFO): Add parenthesis.
7562         (TMPL_ARGS_LEVEL): Likewise.
7563         (SET_TMPL_ARGS_LEVEL): Likewise.
7564         (INNERMOST_TEMPLATE_PARMS): Whitespace.
7565         (C_TYPEDEF_EXPLICITLY_SIGNED): Uppercase macro parameter.
7566         (INTEGRAL_CODE_P(CODE): Add parenthesis.
7567         (CP_INTEGRAL_TYPE_P): Remove parenthesis.
7568         (TYPE_HAS_CONSTRUCTOR): Whitespace.
7569         (TREE_HAS_CONSTRUCTOR): Likewise.
7570         (TYPE_HAS_DESTRUCTOR): Likewise.
7571         (TYPE_HAS_REAL_ASSIGN_REF): Likewise.
7572         (TYPE_HAS_COMPLEX_ASSIGN_REF): Likewise.
7573         (TYPE_HAS_ABSTRACT_ASSIGN_REF): Likewise.
7574         (TYPE_HAS_COMPLEX_INIT_REF): Likewise.
7575         (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Likewise.
7576         (TYPE_PTRMEMFUNC_P): Likewise.
7577         (TYPE_PTRMEMFUNC_FLAG): Likewise.
7578         (TYPE_GET_PTRMEMFUNC_TYPE): Likewise.
7579         (TYPE_SET_PTRMEMFUNC_TYPE): Likewise.
7580         (TYPE_PTRMEM_CLASS_TYPE): Remove parenthesis.
7581         (TYPE_PTRMEM_POINTED_TO_TYPE): Likewise.
7582         (DECL_ACCESS): Whitespace.
7583         (DECL_GLOBAL_CTOR_P): Remove parenthesis.
7584         (DECL_GLOBAL_DTOR_P): Likewise.
7585         (GLOBAL_INIT_PRIORITY): Likewise.
7586         (DECL_TEMPLATE_PARMS): Likewise.
7587         (DECL_TEMPLATE_RESULT): Likewise.
7588         (DECL_TEMPLATE_INSTANTIATIONS): Likewise.
7589         (DECL_TEMPLATE_SPECIALIZATIONS): Likewise.
7590         (DECL_IMPLICIT_TYPEDEF_P): Remove parenthesis.
7591         (SET_DECL_IMPLICIT_TYPEDEF_P): Likewise.
7592         (PRIMARY_TEMPLATE_P): Add parenthesis.
7593         (DECL_USE_TEMPLATE): Whitespace.
7594         (CLASSTYPE_IMPLICIT_INSTANTIATION): Likewise.
7595         (SET_CLASSTYPE_IMPLICIT_INSTANTIATION): Likewise.
7596         (CLASSTYPE_EXPLICIT_INSTANTIATION): Likewise.
7597         (SET_CLASSTYPE_EXPLICIT_INSTANTIATION): Likewise.
7598         (CALL_DECLARATOR_PARMS): Remove parenthesis.
7599         (CALL_DECLARATOR_QUALS): Likewise.
7600         (CALL_DECLARATOR_EXCEPTION_SPEC): Likewise.
7601         (TEMP_NAME_P): Wrap.
7602         (VFIELD_NAME_P): Likewise.
7603         (B_SET): Uppercase macro parameters and add parenthesis.
7604         (B_CLR): Likewise.
7605         (B_TST): Likewise.
7606         (LOOKUP_NAMESPACES_ONLY): Uppercase macro parameters.
7607         (LOOKUP_TYPES_ONLY): Uppercase macro parameters.
7608         (LOOKUP_QUALIFIERS_ONLY): Uppercase macro parameters.
7609         (same_or_base_type_p): Likewise.
7610         (cp_deprecated): Likewise.
7611
7612 2002-01-05  Richard Henderson  <rth@redhat.com>
7613
7614         * semantics.c (expand_body): Revert last change.
7615
7616 2002-01-04  Jason Merrill  <jason@redhat.com>
7617
7618         PR c++/4122
7619         * class.c (update_vtable_entry_for_fn): Set delta to zero for a
7620         lost primary.
7621
7622         * class.c (build_vtbl_initializer): Check for a lost primary
7623         before calculating the vtable entry to throw away.
7624
7625 2002-01-02  Jason Merrill  <jason@redhat.com>
7626
7627         * semantics.c (expand_body): Call outlining_inline_function when
7628         emitting an inline function out of line.
7629
7630 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
7631
7632         PR c++/5116, c++/764 reversion
7633         * call.c (build_new_op): Revert the instantiations. They are
7634         incorrect.
7635
7636 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
7637
7638         PR c++/5089
7639         * decl2.c (reparse_absdcl_as_casts): Don't warn about casts to void.
7640
7641 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
7642
7643         PR c++/3716
7644         * pt.c (tsubst_aggr_type): Move pmf handling into tsubst.
7645         (tsubst, case POINTER_TYPE): Handle pmfs here.
7646         (tsubst, case OFFSET_TYPE): Check it is not an offset to
7647         reference. If it is offset to FUNCTION_TYPE, create a METHOD_TYPE.
7648
7649 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
7650
7651         PR c++/35
7652         * cp-tree.h (DECL_LANG_FLAG_0): Used for PARM_DECL too.
7653         (DECL_TEMPLATE_PARM_P): A PARM_DECL might be one too.
7654         * pt.c (process_template_parm): SET_DECL_TEMPLATE_PARM_P on the
7655         PARM_DECL.
7656         (tsubst_template_parms): Break up loop statements.
7657         (tsubst_decl, case PARM_DECL): Copy DECL_TEMPLATE_PARM_P. Template
7658         parm PARM_DECLs don't get promoted.
7659
7660 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
7661
7662         PR c++/5123
7663         * typeck.c (build_component_ref): Cope with a TEMPLATE_ID_EXPR.
7664         (build_x_function_call): Cope with a COMPONENT_REF containing a
7665         TEMPLATE_ID_EXPR.
7666
7667 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
7668
7669         PR c++/5213
7670         * pt.c (convert_template_argument): Be more careful determining
7671         when RECORD_TYPE templates are or are not templates.
7672
7673 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
7674
7675         PR c++/775
7676         * cp-tree.h (handle_class_head): Adjust prototype.
7677         * decl2.c (handle_class_head): Add DEFN_P and NEW_TYPE_P
7678         parameters. Use for all class heads.
7679         * parse.y (named_class_head_sans_basetype, named_class_head,
7680         named_complex_class_head_sans_basetype,
7681         named_class_head_sans_basetype_defn,
7682         unnamed_class_head): Remove.
7683         (class_head, class_head_apparent_template): Recognize class heads
7684         (class_head_decl, class_head_defn): New reductions. Process class
7685         heads.
7686         (structsp): Adjust class definition and class declaration
7687         reductions.
7688         (maybe_base_class_list): Give diagnostic on empty list.
7689
7690 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
7691
7692         PR c++/4379
7693         * typeck.c (build_x_unary_op): Don't destroy the OFFSET_REF on a
7694         single non-static member.
7695         (unary_complex_lvalue): If it cannot be a pointer to member, don't
7696         make it so. Check it is not pointer to reference.
7697
7698 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
7699
7700         PR c++/5132
7701         * decl2.c (reparse_absdcl_as_casts): Don't digest_init if we
7702         are processing a template decl.
7703
7704 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
7705
7706         PR c++/5116, c++/764
7707         * call.c (build_new_op): Make sure template class operands are
7708         instantiated. Simplify arglist construction.
7709
7710 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
7711
7712         * call.c (build_user_type_conversion_1): Use my_friendly_assert
7713         rather than if ... abort.
7714         * cvt.c (convert_to_reference): Likewise.
7715         * semantics.c (setup_vtbl_ptr): Likewise.
7716         * pt.c (lookup_template_class): Comment typo.
7717
7718 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
7719
7720         PR c++/5125
7721         * pt.c (push_template_decl_real): Make sure DECL has
7722         DECL_LANG_SPECIFIC.
7723
7724 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
7725
7726         PR c++/335
7727         * init.c (resolve_offset_ref): Copy cv qualifiers of this pointer
7728         for non-reference fields.
7729         * typeck.c (require_complete_type): Use resolve_offset_ref).
7730
7731 2001-12-26  Nathan Sidwell  <nathan@codesourcery.com>
7732
7733         PR c++/196
7734         * parse.y (bad_parm): Better diagnostic when given a SCOPE_REF.
7735
7736 2001-12-24  Nathan Sidwell  <nathan@codesourcery.com>
7737
7738         PR c++/160
7739         * typeck.c (build_modify_expr): Remove old unreachable code & tidy
7740         up. Don't stabilize_references when initializing a reference.
7741
7742 2001-12-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7743
7744         * decl2.c (lang_f_options): Const-ify.
7745
7746 2001-12-20  Joseph S. Myers  <jsm28@cam.ac.uk>
7747
7748         * config-lang.in (diff_excludes): Remove.
7749
7750 2001-12-19  Nathan Sidwell  <nathan@codesourcery.com>
7751
7752         PR c++/90
7753         * typeck.c (build_function_call_real): Use original function
7754         expression for errors.
7755
7756 2001-12-18  Jason Merrill  <jason@redhat.com>
7757
7758         PR c++/3242
7759         * class.c (add_method): Do compare 'this' quals when trying to match a
7760         used function.  Don't defer to another used function.
7761
7762 2001-12-18  Nathan Sidwell  <nathan@codesourcery.com>
7763
7764         * pt.c (instantiate_clone): Remove, fold into ...
7765         (instantiate_template): ... here. Simplify by removing mutual
7766         recursion.
7767         * typeck2.c (build_m_component_ref): Don't cv qualify the function
7768         pointed to by a pointer to function.
7769         * class.c (delete_duplicate_fields_1): Typo.
7770
7771 2001-12-18  Jason Merrill  <jason@redhat.com>
7772
7773         C++ ABI change: destroy value arguments in caller.
7774         * semantics.c (genrtl_start_function, genrtl_finish_function): Don't
7775         create an extra binding level for the parameters.
7776         * decl.c (store_parm_decls): Don't do parameter cleanups.
7777
7778 2001-12-18  Nathan Sidwell  <nathan@codesourcery.com>
7779
7780         * call.c (build_new_method_call): Use '%#V'.
7781         * error.c (cv_to_string): Use V parameter to determine padding.
7782
7783 2001-12-18  Joseph S. Myers  <jsm28@cam.ac.uk>
7784
7785         * call.c, decl2.c, init.c: Use "built-in" and "bit-field"
7786         spellings in messages.
7787
7788 2001-12-17  Zack Weinberg  <zack@codesourcery.com>
7789
7790         * cp-tree.h: Delete #defines for cp_error, cp_warning,
7791         cp_pedwarn, and cp_compiler_error.
7792         * call.c, class.c, cp-tree.h, cvt.c, decl.c, decl2.c, error.c,
7793         except.c, friend.c, init.c, lex.c, method.c, parse.y, pt.c,
7794         rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
7795         typeck2.c: Change calls to the above macros to use their
7796         language-independent equivalents: error, warning, pedwarn, and
7797         internal_error respectively.
7798
7799 2001-12-16  Neil Booth  <neil@daikokuya.demon.co.uk>
7800
7801         * decl2.c (finish_file): Remove back_end_hook.
7802
7803 2001-12-16  Joseph S. Myers  <jsm28@cam.ac.uk>
7804
7805         * ChangeLog.1, ChangeLog.2, ChangeLog, NEWS, call.c, class.c,
7806         cp-tree.h, decl.c, decl2.c, except.c, operators.def, optimize.c,
7807         pt.c, rtti.c, semantics.c, typeck.c: Fix spelling errors.
7808
7809 2001-12-15  Joseph S. Myers  <jsm28@cam.ac.uk>
7810
7811         * lang-options.h: Use American spelling in messages.
7812
7813 2001-12-13  Jason Merrill  <jason@redhat.com>
7814
7815         * Make-lang.in (parse.h): Separate rule, just depend on parse.c.
7816
7817         Use cleanups to run base and member destructors.
7818         * init.c (push_base_cleanups): New function, split out from...
7819         (build_delete): ...here.  Lose !TYPE_HAS_DESTRUCTOR code.
7820         * decl.c (finish_destructor_body): Move vbase destruction code to
7821         push_base_cleanups.
7822         (begin_function_body, finish_function_body): New fns.
7823         (finish_function): Move [cd]tor handling and call_poplevel to
7824         finish_function_body.
7825         (pushdecl): Skip the new level.
7826         * semantics.c (genrtl_try_block): Don't call end_protect_partials.
7827         (setup_vtbl_ptr): Call push_base_cleanups.
7828         * method.c (synthesize_method): Call {begin,end}_function_body.
7829         * pt.c (tsubst_expr): Handle COMPOUND_STMT_BODY_BLOCK.
7830         * cp-tree.h: Declare new fns.
7831         * parse.y (function_body, .begin_function_body): New nonterminals.
7832         (fndef, pending_inline, function_try_block): Use function_body.
7833         (ctor_initializer_opt, function_try_block): No longer has a value.
7834         (base_init): Remove .set_base_init token.
7835         (.set_base_init, compstmt_or_error): Remove.
7836         * Make-lang.in (parse.c): Expect two fewer s/r conflicts.
7837
7838         * optimize.c (maybe_clone_body): Fix parameter updating.
7839
7840 2001-12-12  Jason Merrill  <jason@redhat.com>
7841
7842         * decl.c (store_parm_decls): Remove parms_have_cleanups cruft.
7843         * semantics.c (genrtl_start_function): Don't pass
7844         parms_have_cleanups or push an extra binding level.
7845         (genrtl_finish_function): Lose cleanup_label cruft.
7846
7847         * cp-tree.h (struct cp_language_function): Remove x_ctor_label.
7848         (ctor_label): Remove.
7849         * semantics.c (finish_return_stmt): Lose ctor_label support.
7850         * decl.c (finish_constructor_body, mark_lang_function): Likewise.
7851         * typeck.c (check_return_expr): Check DECL_DESTRUCTOR_P, not
7852         dtor_label.
7853
7854         * call.c (build_new_method_call): Let resolves_to_fixed_type_p
7855         check for [cd]tors.
7856         * class.c (fixed_type_or_null, case INDIRECT_REF): Fix.
7857
7858         * decl.c (finish_function): Check VMS_TARGET, not VMS.
7859
7860         * decl.c (start_cleanup_fn): Remove redundant pushlevel.
7861         (end_cleanup_fn): And poplevel.
7862
7863         * semantics.c (setup_vtbl_ptr): Always build a CTOR_INITIALIZER
7864         if we're in a template.
7865
7866 2001-12-12  Jakub Jelinek  <jakub@redhat.com>
7867
7868         * cp-tree.h (DESTRUCTOR_DECL_PREFIX, DESTRUCTOR_NAME_P,
7869         ANON_PARMNAME_FORMAT, ANON_PARMNAME_P, DESTRUCTOR_NAME_FORMAT,
7870         THIS_NAME_P): Delete.
7871         * spew.c (read_process_identifier): Remove DESTRUCTOR_NAME_P,
7872         THIS_NAME_P and ANON_PARMNAME_P tests from warning about clash
7873         with internal naming scheme.
7874         * error.c (dump_decl): Remove DESTRUCTOR_NAME_P use.
7875
7876 2001-12-12  Nathan Sidwell  <nathan@codesourcery.com>
7877
7878         * decl.c (grokdeclarator): Deprecated implicit typename use.
7879
7880 2001-12-11  Nathan Sidwell  <nathan@codesourcery.com>
7881
7882         PR g++/51
7883         * parse.y (frob_specs): Indicate it is a language linkage which
7884         contained the extern.
7885         * decl.c (grokdeclarator): Allow extern language linkage with
7886         other specifiers.
7887
7888 2001-12-10  Nathan Sidwell  <nathan@codesourcery.com>
7889
7890         PR g++/72
7891         * decl.c (add_binding): Don't reject duplicate typedefs involving
7892         template parameters.
7893
7894 2001-12-10  Neil Booth  <neil@daikokuya.demon.co.uk>
7895
7896         * parse.y, semantics.c: Similarly.
7897
7898 2001-12-09  Nathan Sidwell  <nathan@codesourcery.com>
7899
7900         PR g++/87
7901         * cp-tree.h (DECL_COPY_CONSTRUCTOR_P): Use copy_fn_p.
7902         (copy_args_p): Rename to ...
7903         (copy_fn_p): ... here.
7904         (grok_special_member_properties): New function.
7905         (grok_op_properties): Lose VIRTUALP parameter.
7906         (copy_assignment_arg_p): Remove.
7907         * call.c (build_over_call): Use copy_fn_p.
7908         * decl.c (grokfndecl): Reformat. Adjust call to
7909         grok_op_properties.
7910         (copy_args_p): Rename to ...
7911         (copy_fn_p): ... here. Reject template functions. Check for pass
7912         by value.
7913         (grok_special_member_properties): Remember special functions.
7914         (grok_ctor_properties): Don't remember them here, just check.
7915         (grok_op_properties): Likewise.
7916         (start_method): Call grok_special_member_properties.
7917         * decl2.c (grokfield): Likewise.
7918         (copy_assignment_arg_p): Remove.
7919         (grok_function_init): Don't remember abstract assignment here.
7920         * pt.c (instantiate_class_template): Call
7921         grok_special_member_properties.
7922         (tsubst_decl): Adjust grok_op_properties call.
7923
7924 2001-12-08  Aldy Hernandez  <aldyh@redhat.com>
7925
7926         * lex.c (rid_to_yy): Add RID_CHOOSE_EXPR and
7927         RID_TYPES_COMPATIBLE_P.
7928
7929 2001-12-08  John David Anglin  <dave@hiauly1.hia.nrc.ca>
7930
7931         * semantics.c (simplify_aggr_init_exprs_r): Add DIRECT_BIND flag in
7932         call to build_aggr_init.
7933         * cp-tree.h (DIRECT_BIND): Document new use of DIRECT_BIND.
7934
7935 2001-12-08  Neil Booth  <neil@daikokuya.demon.co.uk>
7936
7937         * parse.y: Replace uses of the string non-terminal with STRING.
7938         Don't perform string concatentaion here.
7939         (string): Remove non-terminal.
7940         * semantics.c (finish_asm_stmt): Don't concatenate strings here.
7941
7942 2001-12-05  Jason Merrill  <jason@redhat.com>
7943
7944         * cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Define.
7945         (LANG_HOOKS_TREE_INLINING_END_INLINING): Define.
7946         * tree.c (cp_start_inlining, cp_end_inlining): New fns.
7947         * pt.c (push_tinst_level): No longer static.
7948         * cp-tree.h: Declare them.
7949
7950         * init.c (resolve_offset_ref): Don't check access for the base
7951         conversion to access a FIELD_DECL.
7952
7953         * cp-tree.h (TYPE_REFFN_P): New macro.
7954         * decl.c (bad_specifiers): Check it, too.
7955
7956         * rtti.c (create_pseudo_type_info): Set CLASSTYPE_INTERFACE_ONLY
7957         on the __*_type_info type if we haven't seen a definition.
7958
7959 2001-12-05  Neil Booth  <neil@daikokuya.demon.co.uk>
7960
7961         * decl.c: Include c-common.h.
7962         (shadow_warning): Move to c-common.c.
7963
7964 2001-12-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7965
7966         * decl.c (duplicate_decls): Don't copy DECL_NO_CHECK_MEMORY_USAGE.
7967
7968 2001-12-04  Nathan Sidwell  <nathan@codesourcery.com>
7969
7970         * pt.c (end_template_parm_list): Clear TREE_CHAIN of each parm.
7971
7972 2001-12-04  Nathan Sidwell  <nathan@codesourcery.com>
7973
7974         PR g++/164
7975         * init.c (sort_base_init): Allow binfos to be directly specified.
7976         * method.c (do_build_copy_constructor): Explicitly convert to the
7977         base instance.
7978         (do_build_assign_ref): Likewise.
7979
7980 2001-12-03  Hans-Peter Nilsson  <hp@bitrange.com>
7981
7982         * decl.c (xref_basetypes): Don't use C99 construct in tag_code
7983         declaration and initialization.
7984
7985 2001-12-03  Neil Booth  <neil@daikokuya.demon.co.uk>
7986
7987         * typeck2.c: Remove leading capital from diagnostic messages, as
7988         per GNU coding standards.
7989
7990 2001-12-03  Mumit Khan  <khan@nanotech.wisc.edu>
7991
7992         PR c++/3394
7993         * decl.c (xref_basetypes): Handle attributes between
7994         'class' and name.
7995
7996 2001-12-03  Nathan Sidwell  <nathan@codesourcery.com>
7997
7998         PR g++/3381
7999         * parse.y (named_complex_class_head_sans_basetype): Add new
8000         reduction.
8001         * Make-lang.in (parse.c): Adjust expected conflict count.
8002
8003 2001-12-03  Jason Merrill  <jason@redhat.com>
8004
8005         * class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the
8006         immediate binfos for our virtual bases.
8007
8008 2001-12-02  Neil Booth  <neil@daikokuya.demon.co.uk>
8009
8010         * call.c (build_java_interface_fn_ref): Similarly.
8011         * except.c (is_admissible_throw_operand): Similarly.
8012         * init.c (build_java_class_ref): Similarly.
8013         * xref.c (open_xref_file): Similarly.
8014
8015 2001-12-01  Neil Booth  <neil@daikokuya.demon.co.uk>
8016
8017         * class.c (finish_struct): Remove trailing periods from messages.
8018         * decl.c (check_tag_decl): Similarly.
8019         * lex.c (cxx_set_yydebug): Similarly.
8020         * typeck2.c (friendly_abort): Similarly.
8021
8022 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
8023
8024         PR c++/3048
8025         * cp-tree.h (ovl_member): Remove.
8026         * decl2.c (merge_functions): Handle extern "C" functions
8027         specially.
8028         * tree.c (ovl_member): Remove.
8029
8030 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
8031
8032         PR c++/4842
8033         * class.c (get_basefndecls): Take an IDENTIFIER_NODE, not a
8034         FUNCTION_DECL, as input.
8035         (mark_overriders): Remove.
8036         (warn_hidden): Rework for the new ABI.
8037
8038 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
8039
8040         PR c++/3471
8041         * call.c (convert_like_real): Do not build additional temporaries
8042         for rvalues of class type.
8043
8044 2001-11-28  Nathan Sidwell  <nathan@codesourcery.com>
8045
8046         * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Use lookup base.
8047         (ACCESSIBLY_UNIQUELY_DERIVED_FROM_P): Likewise.
8048         (PUBLICLY_UNIQUELY_DERIVED_FROM_P: Likewise.
8049         (DERIVED_FROM_P): Likewise.
8050         (enum base_access): Renumber, add ba_quiet bit mask.
8051         (get_binfo): Remove.
8052         (get_base_distance): Remove.
8053         (binfo_value): Remove.
8054         (ACCESSIBLY_DERIVED_FROM_P): Remove.
8055         * call.c (standard_conversion): Use lookup_base.
8056         * class.c (strictly_overrides): Likewise.
8057         (layout_virtual_bases): Likewise.
8058         (warn_about_ambiguous_direct_bases): Likewise.
8059         (is_base_of_enclosing_class): Likewise.
8060         (add_vcall_offset_vtbl_entries_1): Likewise.
8061         * cvt.c (build_up_reference): Adjust comment.
8062         * init.c (build_member_call): Reformat.
8063         * search.c (get_binfo): Remove.
8064         (get_base_distance_recursive): Remove.
8065         (get_base_distance): Remove.
8066         (lookup_base_r): Tweak.
8067         (lookup_base): Add ba_quiet control. Complete the types here.
8068         (covariant_return_p): Use lookup_base.
8069         * tree.c (binfo_value): Remove.
8070         (maybe_dummy_object): Use lookup_base.
8071         * typeck.c (build_static_cast): Use lookup_base.
8072         (get_delta_difference): Likewise.
8073         * typeck2.c (binfo_or_else): Use lookup_base.
8074         (build_scoped_ref): Add back error_mark_check.
8075         (build_m_component_ref): Use lookup_base.
8076
8077 2001-11-29  Joseph S. Myers  <jsm28@cam.ac.uk>
8078
8079         * Make-lang.in (c++.generated-manpages): New dummy target.
8080
8081 2001-11-27  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
8082
8083         * Make-lang.in (cp-lang.o): Depends on c-common.h.
8084         * cp-lang.c (c-common.h): Include.
8085         (LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_SAFE_FROM_P): New hooks.
8086         * decl.c (cxx_init_decl_processing): Don't set lang_safe_from_p.
8087         * expr.c (init_cplus_expand): Don't set lang_expand_constant.
8088
8089 2001-11-26  Neil Booth  <neil@daikokuya.demon.co.uk>
8090
8091         * decl2.c (c_language): Move to c-common.c.
8092         * lex.c (cxx_post_options, cxx_init_options): Use c-common.c
8093         functions.
8094         (cxx_init): Update.
8095
8096 2001-11-26  Jason Merrill  <jason@redhat.com>
8097
8098         * call.c (joust): Remove COND_EXPR hack.
8099
8100 2001-11-25  Aldy Hernandez  <aldyh@redhat.com>
8101
8102         * search.c (lookup_base_r): Declare bk in variable declaration
8103         space.
8104
8105 2001-11-25  Nathan Sidwell  <nathan@codesourcery.com>
8106
8107         PR g++/3145
8108         * class.c (build_vbase_pointer): Remove.
8109         (build_vbase_path): Remove.
8110         (build_base_path): New function.
8111         * cp-tree.h (base_access, base_kind): New enumerations.
8112         (build_base_path): Declare.
8113         (convert_pointer_to_real): Remove.
8114         (convert_pointer_to): Remove.
8115         (lookup_base): Declare.
8116         (convert_pointer_to_vbase): Remove.
8117         * call.c (build_scoped_method_call): Use lookup_base &
8118         build_base_path instead of convert_pointer_to_real,
8119         get_base_distance & get_binfo.
8120         (build_over_call): Likewise.
8121         * cvt.c (cp_convert_to_pointer): Likewise.
8122         (convert_to_pointer_force): Likewise.
8123         (build_up_reference): Likewise.
8124         (convert_pointer_to_real): Remove.
8125         (convert_pointer_to): Remove.
8126         * init.c (dfs_initialize_vtbl_ptrs): Use build_base_path
8127         instead of convert_pointer_to_vbase & build_vbase_path.
8128         (emit_base_init): Use build_base_path instead of
8129         convert_pointer_to_real.
8130         (expand_virtual_init): Lose unrequired conversions.
8131         (resolve_offset_ref): Use lookup_base and build_base_path
8132         instead of convert_pointer_to.
8133         * rtti.c (build_dynamic_cast_1): Use lookup_base &
8134         build_base_path instead of get_base_distance & build_vbase_path.
8135         * search.c (get_vbase_1): Remove.
8136         (get_vbase): Remove.
8137         (convert_pointer_to_vbase): Remove.
8138         (lookup_base_r): New function.
8139         (lookup_base): New function.
8140         * typeck.c (require_complete_type): Use lookup_base &
8141         build_base_path instead of convert_pointer_to.
8142         (build_component_ref): Likewise.
8143         (build_x_function_call): Likewise.
8144         (get_member_function_from_ptrfunc): Likewise.
8145         (build_component_addr): Likewise.
8146         * typeck2.c (build_scoped_ref): Likewise.
8147
8148 2001-11-22  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8149
8150         * cp-tree.h (CP_TYPE_QUALS): Removed.
8151         * decl.c (cxx_init_decl_processing): Don't set lang_dump_tree.
8152         * cp-lang.c: Set LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN and
8153         LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN.
8154         * dump.c (cp_dump_tree): Use void* dump_info argument to match
8155         lang-hooks prototype.
8156         * call.c, cp-tree.h, cvt.c, decl.c, init.c, mangle.c, method.c, pt.c,
8157         rtti.c, semantics.c, tree.c, typeck.c, typeck2.c: All references to
8158         CP_TYPE_QUALS changed to cp_type_quals.
8159         * Make-lang.in: References to c-dump.h changed to tree-dump.h.
8160         (CXX_C_OBJS): Remove c-dump.o.
8161
8162 2001-11-21  Mark Mitchell  <mark@codesourcery.com>
8163
8164         PR c++/3637
8165         * pt.c (lookup_template_class): Ensure that all specializations
8166         are registered on the list corresponding to the most general
8167         template.
8168
8169 2001-11-20  Mark Mitchell  <mark@codesourcery.com>
8170
8171         * call.c (non_reference): Add documentation.
8172         (convert_class_to_reference): Do not strip reference types
8173         from conversion operators.
8174         (maybe_handle_ref_bind): Simplify.
8175         (compare_ics): Correct handling of references.
8176
8177 2001-11-19  John Wilkinson <johnw@research.att.com>
8178
8179         * dump.c (dump_op): New function.
8180         (cp_dump_tree): Dump CLASSTYPE_TEMPLATE_SPECIALIZATION.  Use
8181         dump_op.  Dump DECL_MUTABLE, access and staticness for VAR_DECLs.
8182         DECL_PURE_VIRTUAL_P, DECL_VIRTUAL_P,
8183
8184 2001-11-19  Mark Mitchell  <mark@codesourcery.com>
8185
8186         PR4629
8187         * semantics.c (finish_sizeof): Make sure that expression created
8188         while processing a template do not have a type.
8189         (finish_alignof): Likewise.
8190         * typeck.c (c_sizeof): Likewise.
8191         (expr_sizeof): Likewise.
8192
8193 2001-11-18  Neil Booth  <neil@daikokuya.demon.co.uk>
8194
8195         * lex.c (cxx_finish): Call c_common_finish.
8196         (finish_parse): Remove.
8197
8198 2001-11-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8199
8200         * decl.c (create_array_type_for_decl): Check if NAME is NULL_TREE
8201         when displaying error message about missing array bounds.
8202
8203 2001-11-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8204
8205         * mangle.c (write_expression): Handle CAST_EXPR, STATIC_CAST_EXPR,
8206         CONST_CAST_EXPR.
8207         * operators.def: Add CAST_EXPR, STATIC_CAST_EXPR, CONST_CAST_EXPR.
8208
8209 2001-11-16  Neil Booth  <neil@daikokuya.demon.co.uk>
8210
8211         * cp-tree.h (print_class_statistics): Restore.
8212
8213 2001-11-15  Jason Merrill  <jason@redhat.com>
8214
8215         * method.c (use_thunk): Don't emit debugging information for thunks.
8216
8217         * parse.y: Add ... IDENTIFIER SCOPE and ... PTYPENAME SCOPE expansions.
8218         * decl.c (make_typename_type): Handle getting a class template.
8219         * search.c (lookup_field_r): A class template is good enough for
8220         want_type.
8221
8222         * call.c (convert_like_real): Only use cp_convert for the bad part.
8223         (standard_conversion): Also allow bad int->enum.
8224         * typeck.c (ptr_reasonably_similar): Also allow functions to
8225         interconvert.  Pointers to same-size integers are reasonably
8226         similar.
8227
8228         * cvt.c (convert_to_void): If we build a new COND_EXPR, always
8229         give it void type.
8230
8231 2001-11-15  Nathan Sidwell  <nathan@codesourcery.com>
8232
8233         PR g++/3154
8234         * init.c (sort_base_init): Remove unreachable code.
8235         (expand_member_init): Adjust comment to reflect reality. Simplify
8236         and remove unreachable code.
8237
8238 2001-11-15  Neil Booth  <neil@daikokuya.demon.co.uk>
8239
8240         * cp-tree.h (init_reswords, cxx_init_decl_processing): New.
8241         (cxx_init): Update prototype.
8242         * decl.c (init_decl_processing): Rename.  Move null node init
8243         to its creation time.
8244         * lex.c (cxx_init_options): Update.
8245         (cxx_init): Combine with old init_parse; also call
8246         cxx_init_decl_processing.
8247
8248 2001-11-14  Richard Sandiford  <rsandifo@redhat.com>
8249
8250         * decl.c (check_initializer): Try to complete the type of an
8251         array element before checking whether it's complete.  Don't
8252         complain about arrays with complete element types but an
8253         unknown size.
8254         (cp_finish_decl): Build the hierarchical constructor before
8255         calling maybe_deduce_size_from_array_init.
8256
8257 2001-11-14  Joseph S. Myers  <jsm28@cam.ac.uk>
8258
8259         * Make-lang.in: Change all uses of $(manext) to $(man1ext).
8260
8261 2001-11-13  Nathan Sidwell  <nathan@codesourcery.com>
8262
8263         PR g++/4206
8264         * parse.y (already_scoped_stmt): Remove.
8265         (simple_stmt, WHILE & FOR): Use implicitly_scoped_stmt.
8266
8267 2001-11-12  H.J. Lu <hjl@gnu.org>
8268
8269         * cvt.c (ocp_convert): Don't warn the address of a weak
8270         function is always `true'.
8271
8272 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
8273
8274         * cp-lang.c (LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
8275         LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
8276         LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): Override.
8277         * cp-tree.h (print_class_statistics): Remove.
8278         (cxx_print_statistics, cxx_print_xnode, cxx_print_decl, cxx_print_type,
8279         cxx_print_identifier, cxx_set_yydebug): New.
8280         * lex.c (set_yydebug): Rename c_set_yydebug.
8281         * ptree.c (print_lang_decl, print_lang_type, print_lang_identifier,
8282         lang_print_xnode): Rename.
8283         * tree.c (print_lang_statistics): Rename.
8284
8285 2001-11-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8286
8287         * class.c (dump_array): Fix format specifier warning.
8288
8289 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
8290
8291         * cp-lang.c (LANG_HOOKS_NAME): Override.
8292         (struct lang_hooks): Constify.
8293         * lex.c (cxx_init_options): Update.
8294         (lang_identify): Remove.
8295         * parse.y (language_string): Remove.
8296
8297 2001-11-08  Andreas Franck  <afranck@gmx.de>
8298
8299         * Make-lang.in (CXX_INSTALL_NAME, GXX_CROSS_NAME,
8300         DEMANGLER_CROSS_NAME): Handle program_transform_name the way
8301         suggested by autoconf.
8302         (GXX_TARGET_INSTALL_NAME, CXX_TARGET_INSTALL_NAME): Define.
8303         (c++.install-common): Use the transformed target alias names.
8304
8305 2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
8306
8307         * Make-lang.in: Update.
8308         * cp-lang.c: Include langhooks-def.h.
8309
8310 2001-11-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8311
8312         * pt.c (tsubst_copy): Call tsubst for TYPEOF_EXPR.
8313
8314 2001-11-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8315
8316         * lex.c (copy_lang_type): Add static prototype.
8317
8318 2001-11-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8319
8320         * pt.c (unify): Handle SCOPE_REF.
8321
8322 2001-11-01  Jakub Jelinek  <jakub@redhat.com>
8323
8324         * tree.c (cp_copy_res_decl_for_inlining): Adjust
8325         DECL_ABSTRACT_ORIGIN for the return variable.
8326
8327 2001-10-31  Zack Weinberg  <zack@codesourcery.com>
8328
8329         *  Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
8330
8331 2001-10-28  Joseph S. Myers  <jsm28@cam.ac.uk>
8332
8333         * ChangeLog.1, ChangeLog.2, ChangeLog, class.c, decl2.c, search.c,
8334         semantics.c, spew.c: Fix spelling errors.
8335
8336 2001-10-27  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8337
8338         * decl2.c (validate_nonmember_using_decl): Handle NAMESPACE_DECL.
8339
8340 2001-10-25  Zack Weinberg  <zack@codesourcery.com>
8341
8342         * cp-lang.c: Redefine LANG_HOOKS_CLEAR_BINDING_STACK to
8343         pop_everything.
8344
8345 2001-10-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
8346
8347         * cp-lang.c (cxx_get_alias_set): New function.
8348         Point LANG_HOOKS_GET_ALIAS_SET to it.
8349
8350 2001-10-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8351
8352         * cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
8353         * cp-tree.h (make_unbound_class_template): Prototype new function.
8354         * decl.c (make_unbound_class_template): New function.
8355         * decl2.c (arg_assoc_template_arg): Handle UNBOUND_CLASS_TEMPLATE.
8356         * error.c (dump_type): Likewise.
8357         * mangle.c (write_type): Likewise.
8358         * parse.y (template_parm): Likewise.
8359         (template_argument): Use make_unbound_class_template.
8360         * pt.c (convert_template_argument): Handle UNBOUND_CLASS_TEMPLATE.
8361         (tsubst): Likewise.
8362         (tsubst_copy): Likewise.
8363         (unify): Likewise.
8364         * tree.c (walk_tree): Likewise.
8365         * typeck.c (comptypes): Likewise.
8366
8367 2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8368
8369         * xref.c (GNU_xref_member): Use safe-ctype macros and/or fold
8370         extra calls into fewer ones.
8371
8372 2001-10-18  Alexandre Oliva  <aoliva@redhat.com>
8373
8374         * decl.c (duplicate_decls): Propagate DECL_UNINLINABLE.
8375         Warn when merging inline with attribute noinline.
8376         (start_decl, start_function): Warn if inline and attribute
8377         noinline appear in the same declaration.
8378
8379 2001-10-16  H.J. Lu <hjl@gnu.org>
8380
8381         * cp-tree.h (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Defined
8382         for tree checking disabled.
8383
8384 2001-10-16  Hans-Peter Nilsson  <hp@axis.com>
8385
8386         * cp-tree.h (VFIELD_NAME_FORMAT) [NO_DOLLAR_IN_LABEL &&
8387         NO_DOT_IN_LABEL]: Adjust to match VFIELD_NAME.
8388
8389 2001-10-15  Richard Sandiford  <rsandifo@redhat.com>
8390
8391         * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Define.
8392         (unify): Only handle MINUS_EXPR specially if the above flag is set
8393         and the subtracted constant is 1.  Clear the flag on recursive calls.
8394         Set it when unifying the maximum value in an INTEGER_TYPE's range.
8395
8396 2001-10-15  Richard Sandiford  <rsandifo@redhat.com>
8397
8398         * decl.c (bad_specifiers): Don't allow exception specifications
8399         on any typedefs.
8400
8401 2001-10-14  Neil Booth  <neil@daikokuya.demon.co.uk>
8402
8403         * cp/lex.c (init_cp_pragma): Similarly.
8404
8405 2001-10-13  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8406
8407         * pt.c (lookup_template_class): Build complete template arguments
8408         for BOUND_TEMPLATE_TEMPLATE_PARM.
8409
8410 2001-10-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8411
8412         * cp-tree.h (TYPE_BINFO): Update comment.
8413         (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): New macro.
8414         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Use template_info.
8415         (TYPENAME_TYPE_FULLNAME): Use TYPE_FIELDS.
8416         (copy_type): Prototype new function.
8417         * lex.c (copy_lang_decl): Gather tree node statistics.
8418         (copy_lang_type): New function.
8419         (copy_type): Likewise.
8420         (cp_make_lang_type): Create lang_type for
8421         BOUND_TEMPLATE_TEMPLATE_PARM.  Set TYPE_BINFO for TYPENAME_TYPE
8422         and BOUND_TEMPLATE_TEMPLATE_PARM.
8423         * pt.c (tsubst): Use copy_type instead of copy_node.
8424         * search.c (lookup_field_1): Ignore TYPENAME_TYPE.
8425
8426 2001-10-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8427
8428         * pt.c (determine_specialization): Ignore functions without
8429         DECL_TEMPLATE_INFO.
8430
8431 2001-10-12  Nathan Sidwell  <nathan@codesourcery.com>
8432
8433         PR g++/4476
8434         * typeck2.c (abstract_virtuals_error): Ignore incomplete classes.
8435
8436 2001-10-11  Jason Merrill  <jason_merrill@redhat.com>
8437
8438         * typeck2.c (store_init_value): Don't re-digest a bracketed
8439         initializer.
8440
8441         * class.c (finish_struct_anon): Use TYPE_ANONYMOUS_P instead of
8442         ANON_AGGR_TYPE_P.
8443
8444 2001-10-11  Richard Henderson  <rth@redhat.com>
8445
8446         * class.c (build_vtable_entry_ref): Create a VTABLE_REF instead
8447         of an asm statement.
8448         (build_vtbl_ref_1): Split out from build_vtbl_ref.
8449         (build_vfn_ref): Use it to handle vtable descriptors before
8450         calling build_vtable_entry_ref.
8451         * decl2.c (output_vtable_inherit): Use assemble_vtable_inherit.
8452
8453 2001-10-10  Richard Henderson  <rth@redhat.com>
8454
8455         * parse.y (asm_operand): Allow named operands.
8456         * semantics.c (finish_asm_stmt): Tweek for changed location
8457         of the operand constraint.
8458
8459 2001-10-09  Jason Merrill  <jason_merrill@redhat.com>
8460
8461         * call.c (standard_conversion): Add bad conversion between
8462         integers and pointers.
8463         (convert_like_real): Don't use convert_for_initialization for bad
8464         conversions; complain here and use cp_convert.
8465         (build_over_call): Don't handle bad conversions specially.
8466         (perform_implicit_conversion): Allow bad conversions.
8467         (can_convert_arg_bad): New fn.
8468         * cp-tree.h: Declare it.
8469         * typeck.c (convert_for_assignment): Use it.
8470         (ptr_reasonably_similar): Any target type is similar to void.
8471
8472 2001-10-08  Alexandre Oliva  <aoliva@redhat.com>
8473
8474         * Make-lang.in (CXX_OBJS): Added cp-lang.o.
8475         (cp/cp-lang.o): New rule.
8476         * cp-tree.h: Declare hooks.
8477         * tree.c: Make hooks non-static.
8478         (init_tree): Don't initialize hooks here.
8479         * lex.c: Likewise.  Move definition of lang_hooks to...
8480         * cp-lang.c: ... new file.
8481
8482 2001-10-08  Richard Henderson  <rth@redhat.com>
8483
8484         * cp-tree.h (struct lang_decl_flags): Remove declared_inline.
8485         (DECL_DECLARED_INLINE_P): Use the bit in struct c_lang_decl.
8486
8487 2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8488
8489         * class.c (build_vtable_entry_ref): Const-ify.
8490         * decl.c (predefined_identifier,
8491         initialize_predefined_identifiers): Likewise.
8492         * init.c (build_new_1): Likewise.
8493         * lex.c (cplus_tree_code_type, cplus_tree_code_length, resword):
8494         Likewise.
8495
8496 2001-10-05  Alexandre Oliva  <aoliva@redhat.com>
8497
8498         * optimize.c (struct inline_data): Moved to ../tree-inline.c.
8499         (INSNS_PER_STMT): Likewise.
8500         (remap_decl, remap_block, copy_scopy_stmt, copy_body_r): Likewise.
8501         (copy_body, initialize_inlined_parameters): Likewise.
8502         (declare_return_variable, inlinable_function_p): Likewise.
8503         (expand_call_inline, expand_calls_inline): Likewise.
8504         (optimize_inline_calls, clone_body): Likewise.
8505         * tree.c (walk_tree): Moved to ../tree-inline.c.
8506         (walk_tree_without_duplicates): Likewise.
8507         (copy_tree_r, remap_save_expr): Likewise.
8508
8509 2001-10-04  Alexandre Oliva  <aoliva@redhat.com>
8510
8511         * Make-lang.in (cp/decl.o, cp/tree.o): Depend on tree-inline.h.
8512         (cp/pt.o, cp/semantics.o, cp/optimize.o): Likewise.
8513         * cp-tree.h (lang_decl): Moved inlined_fns to tree_decl.
8514         (TREE_READONLY_DECL_P, DECL_INLINED_FNS): Moved to ../tree.h.
8515         (flag_inline_trees): Moved declaration to ../tree-inline.h.
8516         (walk_tree): Moved declaration to ../tree-inline.h.
8517         (walk_tree_without_duplicates, copy_tree_r): Likewise.
8518         (remap_save_expr): Likewise.
8519         * decl.c: Include tree-inline.h.
8520         (lang_mark_tree): Don't mark inlined_fns.
8521         * decl2.c (flag_inline_trees): Moved defn to ../tree-inline.c.
8522         * optimize.c: Include tree-inline.h.
8523         (optimize_inline_calls): Move declaration to ../tree.h, as
8524         non-static.
8525         (remap_decl): Use language-independent constructs and hooks.
8526         (remap_block, copy_body_r, declare_return_variable): Likewise.
8527         (inlinable_function_p): Likewise.  Don't test for
8528         DECL_LANG_SPECIFIC before DECL_INLINED_FNS as inlined_fns is
8529         no longer language-specific.
8530         (optimize_inline_calls): Likewise.  Make it non-static.  Moved
8531         call of dump_function to...
8532         (optimize_function): Here...
8533         (clone_body): New function, extracted from...
8534         (maybe_clone_body): ... here.  Build decl_map locally and pass
8535         it on to clone_body.
8536         * pt.c, semantics.c: Include tree-inline.h.
8537         * tree.c: Likewise.
8538         (cp_walk_subtrees): New language-specific hook for tree inlining.
8539         (cp_cannot_inline_tree_fn, cp_add_pending_fn_decls,
8540         cp_is_overload_p, cp_auto_var_in_fn_p,
8541         cp_copy_res_decl_for_inlining): Likewise.
8542         (walk_tree): Move language-specific constructs into...
8543         (cp_walk_subtrees): this new function.
8544         (copy_tree_r): Use language-independent constructs and hooks.
8545         (init_tree): Initialize tree inlining hooks.
8546         (remap_save_expr): Adjust prototype so that the declaration
8547         does not require the definition of splay_tree.
8548
8549 2001-10-03  John David Anglin  <dave@hiauly1.hia.nrc.ca>
8550
8551         * rtti.c (get_tinfo_decl): Call typeinfo_in_lib_p with the type used
8552         to build the declaration instead of the declaration itself.
8553
8554 2001-10-02  Jason Merrill  <jason_merrill@redhat.com>
8555
8556         * decl2.c (cxx_decode_option): Add 'else'.
8557
8558         * spew.c (end_input): No longer static.
8559         * cp-tree.h: Declare it.
8560         * parse.y (datadef): Add "error END_OF_SAVED_INPUT" expansion.
8561
8562 2001-10-02  Joseph S. Myers  <jsm28@cam.ac.uk>
8563
8564         * call.c (build_over_call), typeck.c (build_function_call_real):
8565         Pass type attributes to check_function_format rather than name or
8566         assembler name.  Don't require there to be a name or assembler
8567         name to check formats.
8568
8569 2001-10-02  Joseph S. Myers  <jsm28@cam.ac.uk>
8570
8571         * decl.c (init_decl_processing): Don't call
8572         init_function_format_info.  Initialize lang_attribute_table
8573         earlier.
8574         (builtin_function): Call decl_attributes.
8575         (insert_default_attributes): New.
8576
8577 2001-10-01  Jason Merrill  <jason_merrill@redhat.com>
8578
8579         * decl.c (grokdeclarator): Copy array typedef handling from C
8580         frontend.
8581
8582         * decl.c (grokdeclarator): Copy too-large array handling from C
8583         frontend.
8584
8585 2001-09-29  Alexandre Oliva  <aoliva@redhat.com>
8586
8587         * config-lang.in (target_libs): Added target-gperf, so that we
8588         don't try to build it if C++ is disabled.
8589
8590 2001-09-23  Zack Weinberg  <zack@codesourcery.com>
8591
8592         * Make-lang.in (CXX_OBJS): Take out cp/errfn.o.
8593         (cp/errfn.o): Delete rule.
8594         (cp/error.o): Depend on flags.h.
8595         * errfn.c: Delete file.
8596         * cp-tree.h: Declare warn_deprecated.  Remove definitions of
8597         TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS,
8598         and TFF_TEMPLATE_DEFAULT_ARGUMENTS. #define cp_error, cp_warning,
8599         cp_pedwarn, and cp_compiler_error to error, warning, pedwarn, and
8600         internal_error respectively.  Make cp_deprecated into a macro.
8601         Don't define cp_printer typedef or declare cp_printers.
8602         * error.c: Include flags.h.
8603         Delete: struct tree_formatting_info, print_function_argument_list,
8604         print_declaration, print_expression, print_function_declaration,
8605         print_function_parameter, print_type_id, print_cv_qualifier_seq,
8606         print_type_specifier_seq, print_simple_type_specifier,
8607         print_elaborated_type_specifier, print_rest_of_abstract_declarator,
8608         print_parameter_declaration_clause, print_exception_specification,
8609         print_nested_name_specifier, and definition of cp_printers.
8610         (locate_error): New function.
8611         (cp_error_at, cp_warning_at, cp_pedwarn_at): Moved here and
8612         rewritten in terms of locate_error and diagnostic.c.
8613         (cp_tree_printer): Rename cp_printer; wire up to *_to_string
8614         instead of deleted print_* routines.  Handle %C, %L, %O, %Q also.
8615         (init_error): Adjust to match.
8616
8617 2001-09-22  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
8618
8619         * Make-lang.in (CXX_C_OBJS): Add attribs.o.
8620
8621 2001-09-21  Richard Henderson  <rth@redhat.com>
8622
8623         * class.c (set_vindex): Mind TARGET_VTABLE_USES_DESCRIPTORS.
8624         (build_vtbl_initializer): Likewise.
8625         (build_vfn_ref): New.
8626         * cp-tree.h: Declare it.
8627         * call.c (build_over_call): Use it.
8628         * decl2.c (mark_vtable_entries): Mark FDESC_EXPR.
8629         * typeck.c (get_member_function_from_ptrfunc): Mind descriptors.
8630
8631 2001-09-21  J"orn Rennecke <amylaar@redhat.com>
8632
8633         * decl.c (grokdeclarator): Use C syntax for attr_flags declaration.
8634
8635 2001-09-21  Joseph S. Myers  <jsm28@cam.ac.uk>
8636
8637         Table-driven attributes.
8638         * decl.c: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
8639         * decl2.c (cplus_decl_attributes): Only take one attributes
8640         parameter.
8641         * cp-tree.c (cplus_decl_attributes): Update prototype.
8642         * class.c (finish_struct), decl.c (start_decl, start_function),
8643         decl2.c (grokfield), friend.c (do_friend), parse.y
8644         (parse_bitfield): Update calls to cplus_decl_attributes.
8645         * decl.c (grokdeclarator): Take a pointer to a single ordinary
8646         attribute list.
8647         * decl.h (grokdeclarator): Update prototype.
8648         * decl2.c (grokfield): Take a single ordinary attribute list.
8649         * friend.c (do_friend): Likewise.
8650         * decl.c (shadow_tag, groktypename, start_decl,
8651         start_handler_parms, grokdeclarator, grokparms, start_function,
8652         start_method), decl2.c (grokfield, grokbitfield, grokoptypename),
8653         parse.y (parse_field, parse_bitfield, component_decl_1), pt.c
8654         (process_template_parm, do_decl_instantiation): Pass single
8655         ordinary attribute lists around.
8656         * decl.c (grokdeclarator): Correct handling of nested attributes.
8657         Revert the patch
8658         1998-10-18  Jason Merrill  <jason@yorick.cygnus.com>
8659                 * decl.c (grokdeclarator): Embedded attrs bind to the right,
8660                 not the left.
8661         .
8662         * cp-tree.h (cp_valid_lang_attribute): Remove declaration
8663         (cp_attribute_table): Declare.
8664         * decl.c (valid_lang_attribute): Don't define.
8665         (lang_attribute_table): Define.
8666         (init_decl_processing): Initialize lang_attribute_table instead of
8667         valid_lang_attribute.
8668         * tree.c (cp_valid_lang_attribute): Remove.
8669         (handle_java_interface_attribute, handle_com_interface_attribute,
8670         handle_init_priority_attribute): New functions.
8671         (cp_attribute_table): New array.
8672         * decl2.c (import_export_class): Don't use
8673         targetm.valid_type_attribute.
8674
8675 2001-09-15  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
8676
8677         * Make-lang.in (cp/error.o): Depend on real.h
8678         * error.c: #include "real.h"
8679
8680 2001-09-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8681
8682         * mangle.c (mangle_conv_op_name_for_type): Use concat in lieu of
8683         xmalloc/strcpy/strcat.
8684
8685 2001-09-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8686
8687         * decl.c (warn_extern_redeclared_static, cp_make_fname_decl):
8688         Const-ification.
8689         * pt.c (tsubst_decl): Likewise.
8690
8691 2001-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8692
8693         * decl2.c (lang_f_options): Const-ification.
8694         * lex.c (cplus_tree_code_name): Likewise.
8695         * spew.c (yyerror): Likewise.
8696
8697 2001-09-06  Nathan Sidwell  <nathan@codesourcery.com>
8698
8699         PR c++/3986
8700         * class.c (force_canonical_binfo_r): Check & move an indirect
8701         primary base first.
8702         (force_canonical_binfo): Check that it's not already
8703         canonical.
8704         (mark_primary_virtual_base): Remove BINFO parameter.
8705         (mark_primary_bases): Adjust, set BINFO_LOST_PRIMARY_P here.
8706
8707 2001-09-06  Nathan Sidwell  <nathan@codesourcery.com>
8708
8709         Remove TYPE_NONCOPIED_PARTS.
8710         * cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Map onto
8711         CLASSTYPE_PURE_VIRTUALS.
8712         (TYPE_RAISES_EXCEPTIONS): Map onto TYPE_BINFO.
8713         * class.c (duplicate_tag_error): Remove TYPE_NONCOPIED_PARTS.
8714         (layout_class_type): Don't call fixup_inline_methods here ...
8715         (finish_struct_1): ... call it here.
8716
8717 2001-09-04  Mark Mitchell  <mark@codesourcery.com>
8718
8719         * decl.c (duplicate_decls): Remove code deadling with
8720         DECL_SAVED_INSNS.
8721         * decl2.c (finish_file): Likewise.
8722         * pt.c (instantiate_decl): Likewise.
8723         * semantics.c (expand_body): Don't defer local functions if
8724         they wouldn't be deferred for some other reason.  Don't
8725         generate RTL for functions that will not be emitted.
8726         (genrtl_start_function): Remove code deadling with
8727         DECL_SAVED_INSNS.
8728         (genrtl_finish_function): Likewise.
8729
8730 2001-09-04  Nathan Sidwell  <nathan@codesourcery.com>
8731
8732         PR c++/4203
8733         * call.c (build_over_call): Do not optimize any empty base
8734         construction.
8735
8736 2001-08-31  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8737
8738         * error.c (dump_template_decl): Output template parameters
8739         together with their specifiers.
8740         Output `class' prefix for template template parameter.
8741         (dump_decl): Fix formatting.
8742
8743 2001-08-30  Kurt Garloff  <garloff@suse.de>
8744
8745         * optimize.c (inlinable_function_p): Allow only smaller single
8746         functions. Halve inline limit after reaching recursive limit.
8747
8748 2001-08-30  Joern Rennecke <amylaar@redhat.com>
8749             Jason Merrill  <jason_merrill@redhat.com>
8750
8751         * class.c (build_vtable_entry_ref): Subtract in char*, not
8752         ptrdiff_t.
8753
8754 2001-08-23  Jason Merrill  <jason_merrill@redhat.com>
8755
8756         * tree.c (cp_build_qualified_type_real): Use get_qualified_type.
8757         (build_cplus_array_type): Use cp_build_qualified_type, not
8758         TYPE_MAIN_VARIANT, to get an unqualified version.
8759
8760         * decl2.c (grok_alignof): Lose.
8761         (build_expr_from_tree): Use expr_sizeof and c_alignof_expr.
8762         * typeck.c (c_alignof): Lose.
8763         * semantics.c (finish_sizeof, finish_alignof): New.
8764         * parse.y: Use them.
8765         * cp-tree.h: Declare them.
8766
8767 2001-08-22  Jason Merrill  <jason_merrill@redhat.com>
8768
8769         * pt.c (tsubst_expr): Hand off to the TREE_CHAIN of a statement.
8770         Don't loop in COMPOUND_STMT, FOR_STMT or TRY_BLOCK.
8771         * tree.c (cp_statement_code_p): A TAG_DEFN is a statement.
8772
8773 2001-08-19  Jakub Jelinek  <jakub@redhat.com>
8774
8775         * typeck2.c (add_exception_specifier): Only require complete type if
8776         not in processing template declaration.
8777
8778 2001-08-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8779
8780         * decl.c: Cast argument to size_t, not HOST_WIDE_INT, in calls to
8781         GNU_xref_start_scope and GNU_xref_end_scope.
8782
8783         * tree.c (TYPE_HASH): Moved to ../tree.h.
8784
8785 2001-08-16  Mark Mitchell  <mark@codesourcery.com>
8786
8787         * cvt.c (convert_to_void): Preserve TREE_SIDE_EFFECTS
8788         on COMPOUND_EXPRs.
8789
8790 2001-08-14  Richard Henderson  <rth@redhat.com>
8791
8792         * class.c, cp-tree.h (build_vfn_ref): Remove.
8793         * call.c, rtti.c: Replace all refernces with build_vtbl_ref.
8794
8795 2001-08-13  Mark Mitchell  <mark@codesourcery.com>
8796
8797         * call.c (build_over_call): Mark COMPOUND_EXPRs generated for
8798         empty class assignment as having side-effects to avoid
8799         spurious warnings.
8800
8801 2001-08-13  Zack Weinberg  <zackw@panix.com>
8802
8803         * Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
8804         * except.c: Include libfuncs.h.
8805
8806 2001-08-11  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
8807
8808         * decl.c (grokdeclarator): Clarify diagnostic message.
8809
8810 2001-08-13  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8811
8812         * decl2.c (do_nonmember_using_decl): Replace using directive
8813         with using declaration in the error message.
8814
8815 2001-08-11  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8816
8817         * pt.c (maybe_fold_nontype_arg): Use TREE_TYPE of ARG as the
8818         criterion to avoid rebuilding expression tree instead of
8819         processing_template_decl.
8820
8821 2001-08-07  Jason Merrill  <jason_merrill@redhat.com>
8822
8823         Support named return value optimization for inlines, too.
8824         * decl.c (finish_function): Nullify returns here.
8825         * semantics.c (genrtl_start_function): Not here.
8826         (cp_expand_stmt): Don't mess with CLEANUP_STMTs.
8827         (nullify_returns_r): No longer static.  Just clear RETURN_EXPR.
8828         Also nullify the CLEANUP_STMT for the nrv.
8829         * cp-tree.h: Declare it.
8830         * optimize.c (declare_return_variable): Replace the nrv with the
8831         return variable.
8832         * typeck.c (check_return_expr): Be more flexible on alignment check.
8833         Ignore cv-quals when checking for a matching type.
8834
8835 2001-08-09  Richard Henderson  <rth@redhat.com>
8836
8837         * decl2.c (finish_objects): Use target hooks instead of
8838         assemble_constructor and assemble_destructor.
8839
8840 2001-08-08  John David Anglin  <dave@hiauly1.hia.nrc.ca>
8841
8842         * g++spec.c (lang_specific_driver): Quote argument after `-Xlinker'.
8843
8844 2001-08-07  Nathan Sidwell  <nathan@codesourcery.com>
8845
8846         PR c++/3820
8847         Stop using TYPE_NONCOPIED_PARTS.
8848         * call.c (build_over_call): Be careful when copy constructing
8849         or assigning to an empty class.
8850         * class.c (check_bases_and_members): It has a
8851         COMPLEX_ASSIGN_REF if it has a vptr.
8852         (layout_class_type): Don't add empty class padding to
8853         TYPE_NONCOPIED_PARTS.
8854         (finish_struct_1): Don't add the VFIELD either.
8855         * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): Mention _copy_
8856         initialization.
8857
8858 2001-08-07  Jason Merrill  <jason_merrill@redhat.com>
8859
8860         * tree.c (walk_tree): Walk siblings even if !walk_subtrees.
8861
8862 2001-08-06  Richard Henderson  <rth@redhat.com>
8863
8864         * decl2.c (finish_objects): Pass a symbol_ref and priority to
8865         assemble_{constructor,destructor}.  Remove priority handling.
8866
8867 2001-08-05  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
8868
8869         Don't allow template-id in using-declaration.
8870         * decl2.c (validate_nonmember_using_decl): Handle template-ids.
8871         (do_class_using_decl): Likewise.
8872
8873 2001-08-04  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
8874
8875         * cp/spew.c (read_token): No need to pop buffers.
8876
8877 2001-08-02  Stan Shebs  <shebs@apple.com>
8878
8879         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY): Remove, no longer used.
8880         (fnaddr_from_vtable_entry): Remove decl.
8881         * method.c (use_thunk): Update comment.
8882
8883 2001-08-01  Andrew Cagney  <ac131313@redhat.com>
8884
8885         * repo.c (get_base_filename): Change return value to const char
8886         pointer.
8887
8888 2001-08-02  Nathan Sidwell  <nathan@codesourcery.com>
8889
8890         Kill -fhonor-std.
8891         * NEWS: Document.
8892         * cp-tree.h (flag_honor_std): Remove.
8893         (CPTI_FAKE_STD): Remove.
8894         (std_node): Remove comment about it being NULL.
8895         (fake_std_node): Remove.
8896         * decl.c (in_fake_std): Remove.
8897         (walk_namespaces_r): Remove fake_std_node check.
8898         (push_namespace): Remove in_fake_std code.
8899         (pop_namespace): Likewise.
8900         (lookup_name_real): Remove fake_std_node check.
8901         (init_decl_processing): Always create std_node. Always add
8902         std:: things there.
8903         (builtin_function): Always put non '_' fns in std.
8904         * decl2.c (flag_honor_std): Remove.
8905         (lang_f_options): Remove honor-std.
8906         (unsupported_options): Add honor-std.
8907         (set_decl_namespace): Remove fake_std_node check.
8908         (validate_nonmember_using_decl): Likewise.
8909         (do_using_directive): Likewise.
8910         (handle_class_head): Likewise.
8911         * dump.c (cp_dump_tree): Likewise.
8912         * except.c (init_exception_processing): Adjust.
8913         * init.c (build_member_call): Remove fake_std_node check.
8914         (build_offset_ref): Likewise.
8915         * lang-options.h: Remove -fhonor-std, -fno-honor-std.
8916         * rtti.c (init_rtti_processing): Adjust.
8917
8918 2001-07-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
8919
8920         * tree.c (cp_tree_equal): WITH_CLEANUP_EXPR node to use its second
8921         operand while calling cp_tree_equal.
8922
8923 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
8924
8925         The 3.0 ABI no longer has vbase pointer fields.
8926         * cp-tree.h (VBASE_NAME, VBASE_NAME_FORMAT, VBASE_NAME_P,
8927         FORMAT_VBASE_NAME): Remove.
8928         * method.c (do_build_copy_constructor): Adjust.
8929         (do_build_assign_ref): Adjust.
8930         * search.c (lookup_field_r): Adjust.
8931         * typeck.c (build_component_ref): Adjust.
8932
8933         The 3.0 ABI always has a vtable pointer at the start of every
8934         polymorphic class.
8935         * rtti.c (build_headof_sub): Remove.
8936         (build_headof): Adjust.
8937         (get_tinfo_decl_dynamic): No need to check flag_rtti
8938         here. Adjust.
8939         (create_real_tinfo_var): Explain why we need a hidden name.
8940
8941 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
8942
8943         PR c++/3631
8944         * class.c (update_vtable_entry_for_fn): The fixed adjustment
8945         of a virtual thunk should be from declaring base.
8946
8947 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
8948
8949         * class.c (dfs_ctor_vtable_bases_queue_p): Always walk into
8950         the shared virtual base, so preserving inheritance graph order.
8951
8952 2001-07-30  Andreas Jaeger  <aj@suse.de>
8953
8954         * decl2.c: Remove unused var global_temp_name_counter.
8955
8956 2001-07-28  Richard Henderson  <rth@redhat.com>
8957
8958         * method.c (pending_inlines): Remove.
8959
8960 2001-07-27  Nathan Sidwell  <nathan@codesourcery.com>
8961
8962         * class.c (mark_primary_virtual_base): Don't adjust base
8963         offsets here.
8964         (dfs_unshared_virtual_bases): Adjust them here.
8965         (mark_primary_bases): Explain why we adjust at the end.
8966
8967 2001-07-27  Nathan Sidwell  <nathan@codesourcery.com>
8968
8969         * class.c (finish_struct_1): When copying the primary base's
8970         VFIELD, make sure we find it is at offset zero.
8971
8972 2001-07-26  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8973
8974         * pt.c (tsubst_template_parms): Call maybe_fold_nontype_arg and
8975         tsubst_expr for default template arguments.
8976
8977 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
8978
8979         PR c++/3621
8980         * spew.c (yylex): Only copy the token's lineno, if it is
8981         nonzero.
8982
8983 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
8984
8985         PR c++/3624
8986         * call.c (resolve_args): Simplify, call
8987         convert_from_reference.
8988         (build_new_op): Resolve and convert from reference ARG1
8989         earlier. Adjust ARG2 & ARG3 resolve and conversion.
8990
8991 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
8992
8993         * decl.c (last_function_parm_tags): Remove.
8994         (current_function_parm_tags): Remove.
8995         (init_decl_processing): Adjust.
8996         (start_function): Adjust.
8997         (store_parm_decls): Adjust.
8998
8999         PR c++/3152
9000         * decl.c (grokdeclarator): Detect when a function typedef is
9001         declaring a function, and create last_function_parms correctly.
9002
9003 2001-07-25  Jason Merrill  <jason_merrill@redhat.com>
9004
9005         * call.c (joust): Only prefer a non-builtin candidate to a builtin
9006         one if they have the same signature.
9007
9008         * cvt.c (build_up_reference): Take DECL parm.  Check TREE_STATIC on
9009         it rather than toplevel_bindings_p.  Give it a mangled name if static.
9010         (convert_to_reference): Adjust.
9011         * decl2.c (get_temp_name): Lose.
9012         * mangle.c (mangle_ref_init_variable): New fn.
9013         (mangle_guard_variable): Strip the ref-init header.
9014         * cp-tree.h: Adjust.
9015         * decl.c (cp_finish_decl): Add the DECL_STMT after processing the
9016         initializer.
9017         (grok_reference_init): Always use DECL_INITIAL.
9018
9019 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
9020
9021         PR c++/3416
9022         * call.c (build_conditional_expr): Recheck args after
9023         conversions.
9024         * cp-tree.h (build_conditional_expr): Move to correct file.
9025         * typeck.c (decay_conversion): Diagnose any unknown types
9026         reaching here.
9027         (build_binary_op): Don't do initial decay or default
9028         conversions on overloaded functions.
9029         (build_static_cast): Don't do a decay conversion here.
9030
9031 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
9032
9033         PR c++/3543
9034         * typeck.c (condition_conversion): Resolve an OFFSET_REF.
9035         * expr.c (cplus_expand_expr): An OFFSET_REF should never get here.
9036
9037 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
9038
9039         * class.c (build_vtbl_or_vbase_field): Remove, move into ...
9040         (create_vtbl_ptr): ... here.
9041
9042 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
9043
9044         * class.c (build_vbase_offset_vbtl_entries): Look for
9045         non-primary base of which we are a sub vtable.
9046
9047 2001-07-24  Phil Edwards  <pme@sources.redhat.com>
9048
9049         * semantics.c (finish_this_expr):  Remove unused code.
9050
9051 2001-07-24  Nathan Sidwell  <nathan@codesourcery.com>
9052
9053         Simplify rtti, now we've only one ABI.
9054         * cp-tree.h (cp_tree_index): Remove CPTI_TINFO_DECL_ID,
9055         CPTI_TINFO_VAR_ID.
9056         (tinfo_decl_id, tinfo_var_id): Remove.
9057         (get_typeid_1): Remove.
9058         * rtti.c
9059         (init_rtti_processing): Remove tinfo_decl_id & tinfo_var_id.
9060         (typeid_ok_p): New function.
9061         (build_type_id): Call typeid_ok_p. Don't call tinfo_from_decl.
9062         (get_tinfo_decl): Remove old abi documentation.
9063         (tinfo_from_decl): Remove.
9064         (get_type_id): Call typeid_ok_p. Absorb get_typeid_1.
9065         (get_typeid_1): Remove.
9066         (get_base_offset): Remove.
9067         (synthesize_tinfo_var): Absorb get_base_offset.
9068         (create_real_tinfo_var): Don't use tinfo_decl_id.
9069
9070 2001-07-23  Graham Stott  <grahams@redhat.com>
9071
9072         * cp/class.c (type_requires_array_cookie): Fix use of uninitialized
9073         variable has_two_argument_delete_p.
9074
9075 2001-07-21  Nathan Sidwell  <nathan@codesourcery.com>
9076
9077         Remove flag_vtable_thunk. It is always on for the 3.0 ABI.
9078         * cp-tree.h (CPTI_DELTA2_IDENTIFIER): Remove.
9079         (CPTI_INDEX_IDENTIFIER): Remove.
9080         (CPT_PFN_OR_DELTA2_IDENTIFIER): Remove.
9081         (delta2_identifier): Remove.
9082         (index_identifier): Remove.
9083         (pfn_or_delta2_identifier): Remove.
9084         (flag_vtable_thunks): Remove.
9085         (VTABLE_DELTA2_NAME): Remove.
9086         (VTABLE_INDEX_NAME): Remove.
9087         (FNADDR_FROM_VTABLE_ENTRY): Adjust.
9088         (vfunc_ptr_type_node): Adjust.
9089         (VTABLE_NAME_PREFIX): Adjust.
9090         (build_vfn_ref): Lose first parameter.
9091         (fixup_all_virtual_upcast_offsets): Remove.
9092         * decl.c (initialize_predefined_identifiers): Remove
9093         delta2_identifier, index_identifier, pfn_or_delta2_identifier.
9094         (init_decl_processing): Remove no-vtable-thunk code.
9095         * decl2.c (flag_vtable_thunks): Remove.
9096         (mark_vtable_entries): Remove no-vtable-thunk code.
9097         * error.c (dump_decl): Remove no-vtable-thunk code.
9098         (dump_expr): Adjust ptr to member function code.
9099         * init.c (initialize_vtable_ptrs): Remove no-vtable-thunk
9100         code.
9101         * rtti.c (build_headof): Remove no-vtable-thunk code.
9102         (get_tinfo_decl_dynamic): Adjust build_vfn_ref call.
9103         * search.c (get_base_distance): Remove expand_upcast_fixups case.
9104         (virtual_context) Remove.
9105         (expand_upcast_fixups): Remove.
9106         (fixup_virtual_upcast_offsets): Remove.
9107         (fixup_all_virtual_upcast_offsets): Remove.
9108         * typeck.c (get_member_function_from_ptrfunc): Remove
9109         no-vtable-thunk code.
9110         * call.c (build_over_call): Adjust call to build_vfn_ref.
9111         * class.c (build_vfn_ref): Lose first parameter. Remove
9112         no-vtable-thunk code.
9113         (build_rtti_vtbl_entries): Remove no-vtable-thunk code.
9114         (build_vtable_entry): Remove no-vtable-thunk code.
9115
9116 2001-07-20  Nathan Sidwell  <nathan@codesourcery.com>
9117
9118         Remove old-abi remnants. Remove comments about old abi
9119         behavior. Remove references to 'new-abi' in comments.
9120         * cp-tree.h: Adjust comments.
9121         (vbase_offsets_in_vtable_p): Delete.
9122         (vcall_offsets_in_vtable_p): Delete.
9123         (vptrs_present_everywhere_p): Delete.
9124         (all_overridden_vfuns_in_vtables_p): Delete.
9125         (merge_primary_and_secondary_vtables_p): Delete.
9126         (TYPE_CONTAINS_VPTR_P): Adjust.
9127         (VTT_NAME_PREFIX): Remove.
9128         (CTOR_VTBL_NAME_PREFIX): Remove.
9129         (init_vbase_pointers): Remove.
9130         * class.c: Adjust coments.
9131         (build_vbase_pointer_fields): Delete.
9132         (build_vbase_pointer): Remove old-abi code.
9133         (build_secondary_vtable): Likewise.
9134         (modify_all_vtables): Likewise.
9135         (create_vtable_ptr): Likewise.
9136         (layout_class_type): Likewise.
9137         (finish_struct_1): Likewise.
9138         (finish_vtbls): Likewise.
9139         (dfs_finish_vtbls): Delete.
9140         (build_vbase_offset_vtbl_entries): Remove old-abi code.
9141         * cvt.c: Adjust comments.
9142         * decl.c: Adjust comments.
9143         * decl2.c: Adjust comments.
9144         * init.c: Adjust comments.
9145         (construct_virtual_bases): Remove old-abi code.
9146         * lang-specs.h: Remove -fno-new-abi.
9147         * mangle.c: Adjust comments.
9148         * rtti.c: Adjust comments.
9149         (get_base_offset): Remove old-abi-code.
9150         * search.c: Adjust comments.
9151         (dfs_init_vbase_pointers): Remove.
9152         (dfs_vtable_path_unmark): Remove.
9153         (init_vbase_pointers): Remove.
9154         * semantics.c: Adjust comments.
9155         (emit_associated_thunks): Remove old-abi code.
9156         * typeck.c: Adjust comments.
9157
9158 2001-07-20  Daniel Berlin  <dan@cgsoftware.com>
9159
9160         * Make-lang.in (cp/optimize.o): Depend on $(PARAMS_H), not
9161         params.h.
9162
9163 2001-07-19  Mark Mitchell  <mark@codesourcery.com>
9164
9165         * class.c (finish_struct_anon): Forbid nested classes.
9166
9167 2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
9168
9169         * decl2.c: Don't include dwarfout.h and dwarf2out.h.
9170         * optimize.c: Include debug.h.
9171         (maybe_clone_body): Use debug hook.
9172         * semantics.c: Include debug.h.
9173         (expand_body): Use debug hook.
9174
9175 2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
9176
9177         * spew.c (read_token, yyerror): Remove CPP_INT, CPP_FLOAT cases.
9178
9179 2001-07-18  Mark Mitchell  <mark@codesourcery.com>
9180
9181         * class.c (type_requires_array_cookie): New function.
9182         (check_methods): Don't try to figure out whether the type needs a
9183         cookie here.
9184         (check_bases_and_members): Set TYPE_VEC_NEW_USES_COOKIE here.
9185         * cp-tree.h (TYPE_VEC_DELETE_TAKES_SIZE): Remove.
9186         (TYPE_VEC_NEW_USES_COOKIE): Reimplement.
9187         * pt.c (instantiate_class_template): Don't set
9188         TYPE_VEC_DELETE_TAKES_SIZE.
9189         * NEWS: Document ABI changes from GCC 3.0.
9190
9191 2001-07-18  Xavier Delacour <xavier@fmaudio.net>,
9192             Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
9193
9194         * NEWS (Changes in GCC 3.0): Fix typo.
9195
9196 2001-07-13  Joseph S. Myers  <jsm28@cam.ac.uk>
9197
9198         * decl2.c (cplus_decl_attributes): Take a pointer to the node to
9199         which attributes are to be attached, and a flags argument.  Update
9200         call to decl_attributes.
9201         (grokfield): Update call to decl_attributes.
9202         * class.c (finish_struct): Update call to cplus_decl_attributes.
9203         * cp-tree.h (cplus_decl_attributes): Update prototype.
9204         * decl.c (start_decl, grokdeclarator, start_function): Update
9205         calls to decl_attributes and cplus_decl_attributes.
9206         * friend.c (do_friend): Update call to cplus_decl_attributes.
9207         * parse.y (parse_bitfield): Update call to cplus_decl_attributes.
9208
9209 2001-07-12  Mark Mitchell  <mark@codesourcery.com>
9210
9211         * decl.c (make_rtl_for_nonlocal_decl): Set DECL_C_HARD_REGISTER
9212         for `register' variables with an asm-specification.
9213
9214 2001-07-11  Mark Mitchell  <mark@codesourcery.com>
9215
9216         * semantics.c (finish_asm_stmt): Mark the output operands
9217         to an asm addressable, if necessary.
9218
9219 2001-07-11  Ben Elliston  <bje@redhat.com>
9220
9221         * Revert this change -- there is a subtle bug.
9222
9223         PR c++/80
9224         * decl.c (finish_enum): New "attributes" argument; pass it to
9225         cplus_decl_attributes.  Use a narrower type if the enum is packed.
9226         * cp-tree.h (finish_enum): Adjust prototype.
9227         * parse.y (enum_head): New non-terminal.
9228         (structsp): Use it. Enums now may be preceded or followed by
9229         optional attributes -- pass their chained tree to finish_enum().
9230         * pt.c (tsubst_enum): Pass NULL_TREE for the new argument.
9231
9232 2001-07-10  Mark Mitchell  <mark@codesourcery.com>
9233
9234         * pt.c (tsubst_decl): Set DECL_CONTEXT for namespace-scope
9235         variables.
9236
9237 2001-07-10  Jason Merrill  <jason_merrill@redhat.com>
9238
9239         * semantics.c (cp_expand_stmt): Fix for null
9240         current_function_return_value.
9241
9242 2001-07-10  Jan van Male  <jan.vanmale@fenk.wau.nl>
9243
9244         * call.c (build_op_delete_call): Initialize fn.
9245         (convert_like_real): Delete conditional.
9246         (joust): Initialize *w and *l.
9247         * class.c: Add prototype for binfo_ctor_vtable.
9248         (get_primary_binfo): Initialize result.
9249         * init.c (build_java_class_ref): Initialize name.
9250
9251 2001-07-09  Erik Rozendaal  <dlr@acm.org>
9252
9253         * typeck.c (unary_complex_lvalue): Do not duplicate the
9254         argument to modify, pre-, or post-increment when used as an
9255         lvalue and when the argument has side-effects.
9256
9257 2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>
9258
9259         * decl.c (start_decl): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
9260         (start_function): Don't call SET_DEFAULT_DECL_ATTRIBUTES.  Call
9261         cplus_decl_attributes even if attrs is NULL.
9262         * friend.c (do_friend): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
9263
9264 2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>
9265
9266         * decl.c (grokdeclarator), decl2.c (cplus_decl_attributes): Update
9267         calls to decl_attributes.
9268
9269 2001-07-06  Ira Ruben   <ira@apple.com>
9270
9271         * cp-tree.def (TEMPLATE_DECL): Update comment. DECL_RESULT should
9272         be DECL_TEMPLATE_RESULT.
9273
9274 2001-07-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
9275
9276         * cp-tree.h (copy_template_template_parm): Rename to ...
9277         (bind_template_template_parm): ... here.
9278         * tree.c (copy_template_template_parm): Rename to ...
9279         (bind_template_template_parm): ... here.  Remove the case when
9280         NEWARGS is NULL_TREE.
9281         (copy_tree_r): Don't copy TEMPLATE_TEMPLATE_PARM and
9282         BOUND_TEMPLATE_TEMPLATE_PARM.
9283         * pt.c (lookup_template_class): Adjust.
9284
9285 2001-07-05  Jason Merrill  <jason_merrill@redhat.com>
9286
9287         * cvt.c (convert_lvalue): New fn.
9288         * cp-tree.h: Declare it.
9289         * method.c (do_build_assign_ref): Use it.
9290         (do_build_copy_constructor): Convert parm to base types
9291         before calling base constructors.
9292
9293         * typeck.c (check_return_expr): Check DECL_ALIGN instead of
9294         DECL_USER_ALIGN.  Check flag_elide_constructors instead of
9295         optimize.
9296         * semantics.c (cp_expand_stmt): Don't destroy the named return value.
9297
9298 2001-07-02  Nathan Sidwell  <nathan@codesourcery.com>
9299
9300         * optimize.c (optimize_inline_calls): New function, broken out
9301         of ...
9302         (optimize_function): ... here. Call it. Don't inline if it is
9303         a thunk.
9304         (dump_function): Print name of dump flag causing this dump.
9305         * semantics.c (expand_body): Move thunk inline check to
9306         optimize_function.
9307
9308 2001-06-29  Joseph S. Myers  <jsm28@cam.ac.uk>
9309
9310         * typeck.c (COMP_TYPE_ATTRIBUTES): Don't define.
9311         (comptypes): Use target.comp_type_attributes.
9312
9313 2001-06-29  Nathan Sidwell  <nathan@codesourcery.com>
9314
9315         * cp-tree.h (flag_dump_class_layout): Remove unneeded declaration.
9316
9317 2001-06-28  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
9318
9319         * error.c (lang_print_error_function): Add a `diagnostic_context *'
9320         parameter. Tweak.
9321
9322 2001-06-27  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
9323
9324         * decl2.c (import_export_class): Update.
9325
9326 2001-06-26  Gabriel Dos Reis  <gdr@codesourcery.com>
9327
9328         * error.c (init_error): Adjust settings.
9329
9330 2001-06-26  Gabriel Dos Reis  <gdr@codesourcery.com>
9331
9332         * error.c (init_error): Adjust settings.
9333
9334 2001-06-19  Richard Sandiford  <rsandifo@redhat.com>
9335
9336         * except.c (initialize_handler_parm): Expect __cxa_begin_catch to
9337         return pointers to data members by reference rather than by value.
9338
9339 2001-06-18  Jason Merrill  <jason_merrill@redhat.com>
9340
9341         Implement the Named Return Value optimization.
9342         * cp-tree.h (struct cp_language_function): Add x_return_value.
9343         (current_function_return_value): Now a macro.
9344         * decl.c: Don't define it.
9345         (define_label, finish_case_label): Don't clear it.
9346         (init_decl_processing): Don't register it with GC.
9347         * semantics.c (genrtl_finish_function): Don't check it for
9348         no_return_label.  Copy the RTL from the return value to
9349         current_function_return_value and walk, calling...
9350         (nullify_returns_r): ...this new fn.
9351         * typeck.c (check_return_expr): Set current_function_return_value.
9352
9353 2001-06-15  Jason Merrill  <jason_merrill@redhat.com>
9354
9355         * class.c (dfs_accumulate_vtbl_inits): Just point to the base we're
9356         sharing a ctor vtable with.  Merge code for cases 1 and 2.
9357         (binfo_ctor_vtable): New fn.
9358         (build_vtt_inits, dfs_build_secondary_vptr_vtt_inits): Use it.
9359
9360 2001-06-14  Jason Merrill  <jason_merrill@redhat.com>
9361
9362         * class.c (dfs_find_final_overrider): Fix logic.
9363
9364         * class.c (update_vtable_entry_for_fn): Uncomment optimization to use
9365         virtual thunk instead of non-virtual.
9366         (get_matching_virtual): Uncomment.
9367
9368         * pt.c (unify): Don't recurse between the POINTER_TYPE and the
9369         OFFSET_TYPE.  If we're adding cv-quals, the extra ones would be on
9370         PARM, not ARG.
9371
9372 2001-06-14  Nathan Sidwell  <nathan@codesourcery.com>
9373
9374         * class.c (dfs_accumulate_vtbl_inits): For case 2 & 3, make sure
9375         we've not emerged from the hierarchy of RTTI_BINFO on reaching
9376         a non-virtual base.
9377
9378 2001-06-13  Mark Mitchell  <mark@codesourcery.com>
9379
9380         * NEWS: Update release number.
9381
9382 2001-06-12  Nathan Sidwell  <nathan@codesourcery.com>
9383
9384         PR c++/3130, c++/3131, c++/3132
9385         * cp-tree.h (BINFO_UNSHARED_MARKED): New #define.
9386         * class.c (force_canonical_binfo_r): Move
9387         BINFO_UNSHARED_MARKED, BINFO_LOST_PRIMARY_P. Don't move
9388         virtual bases unless they're primary and what they're primary
9389         too has been moved.
9390         (dfs_unshared_virtual_bases): Use BINFO_UNSHARED_MARKED. Cope
9391         with morally virtual bases. Duplicate BINFO_LOST_PRIMARY_P and
9392         BINFO_PRIMARY_BASE_OF. Clear BINFO_VTABLE for all but the most
9393         derived binfo.
9394         (mark_primary_bases): Use BINFO_UNSHARED_MARKED.
9395         (layout_nonempty_base_or_field): Add most derived type
9396         parameter. Adjust.
9397         (layout_empty_base): Likewise.
9398         (build_base_field): Likewise.
9399         (build_base_fields): Likewise.
9400         (propagate_binfo_offsets): Add most derived type
9401         parameter. Skip non canonical virtual bases too.
9402         (dfs_set_offset_for_unshared_vbases): Don't skip primary
9403         bases. Do skip canonical bases.
9404         (layout_virtual_bases): Adjust.
9405         (layout_class_type): Adjust.
9406         (dfs_get_primary_binfo): Build list of virtual primary base
9407         candidates.
9408         (get_primary_binfo): Check that the shared virtual primary
9409         base candidate was found first.
9410         (accumulate_vtbl_inits): Don't do anything for non-vptr
9411         containing binfos. For case 1 primary virtual bases, keep
9412         checking that we've not emerged from the hierarchy of RTTI_BINFO.
9413
9414 2001-06-12  Nathan Sidwell  <nathan@codesourcery.com>
9415
9416         PR c++/3089
9417         * class.c (dfs_accumulate_vtbl_inits): Always walk down the
9418         hierarchy looking for primary bases for a ctor
9419         vtable. Recursively call oneself, if we meet our primary via
9420         this route and haven't met it yet via inheritance graph order.
9421
9422 2001-06-11  Mark Mitchell  <mark@codesourcery.com>
9423
9424         * lang-options.h: Emit documentation for -fno-honor-std, not
9425         -fhonor-std.
9426
9427 2001-06-10  Alexandre Oliva  <aoliva@redhat.com>
9428
9429         * typeck.c (get_member_function_from_ptrfunc) [vbit_in_delta]:
9430         Don't clobber delta.
9431         (expand_ptrmemfunc_cst) [ptrmemfunc_vbit_in_delta]: Adjust pfn.
9432
9433 2001-06-10  Mark Mitchell <mark@codesourcery.com>
9434             Gabriel Dos Reis  <gdr@codesourcery.com>
9435
9436         * Make-lang.in (cp/call.o): Depend on diagnostic.h
9437         (cp/typeck.o): Depend on diagnostic.h
9438         (cp/typeck2.o): Depend on diagnostic.h
9439         (cp/repo.o): Depend on dignostic.h
9440         * typeck.c: #include diagnostic.h
9441         (convert_for_initialization): Remove extern declaration for
9442         warningcount and errorcount.
9443
9444         * call.c: #include diagnostic.h
9445         (convert_like_real): Remove extern declaration for warnincount and
9446         errorcount.
9447
9448         * repo.c: #include diagnostic.h
9449         * typeck2.c: #include diagnostic.h
9450
9451 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
9452
9453         * decl.c (duplicate_decls): Fix DECL_TEMPLATE_RESULT thinko
9454         in previous change.
9455
9456 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
9457
9458         PR c++/2929
9459         * friend.c (do_friend): Use push_decl_namespace for classes at
9460         namespace scope.
9461
9462 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
9463             Jason Merrill <jason_merrill@redhat.com>
9464
9465         PR c++/3061
9466         * class.c (build_secondary_vtable): Use assert, rather than an error
9467         message.
9468         (dfs_fixup_binfo_vtbls): BINFO_VTABLE might be NULL.
9469         (dfs_accumulate_vtbl_inits): A lost primary virtual base may
9470         be between ORIG_BINFO and RTTI_BINFO, but neither of them.
9471         Don't set BINFO_VTABLE for a primary virtual base.
9472
9473 2001-06-07  Mark Mitchell  <mark@codesourcery.com>
9474
9475         * decl.c (duplicate_decls): Update source position information
9476         when a template function is defined.
9477
9478 2001-06-07  Phil Edwards  <pme@sources.redhat.com>
9479
9480         * lang-specs.h:  Move -D_GNU_SOURCE to config/linux.h.
9481
9482 2001-06-07  Nathan Sidwell  <nathan@codesourcery.com>
9483
9484         PR c++/2914
9485         * decl.c (pushtag): Don't push into a complete type's scope.
9486
9487 2001-06-06  Jason Merrill  <jason_merrill@redhat.com>
9488
9489         * cp-tree.h (THUNK_GENERATE_WITH_VTABLE_P): Lose.
9490         (struct lang_decl_flags): Lose generate_with_vtable_p.
9491         (BV_GENERATE_THUNK_WITH_VTABLE_P): Lose.
9492         * class.c (copy_virtuals): Adjust.
9493         * decl2.c (mark_vtable_entries): Adjust.
9494         * method.c (make_thunk, build_vtable_entry): Adjust.
9495         * class.c (update_vtable_entry_for_fn): Only look as far as the
9496         first defining class.
9497         (build_vtbl_initializer): Put nothing in the slot for a function only
9498         defined in a lost primary virtual base.
9499         (add_vcall_offset_vtbl_entries_1): Use the same code for
9500         the lost primary case and the normal case.
9501         (dfs_unshared_virtual_bases): Don't lose a non-virtual primary base.
9502         (get_vfield_offset, get_derived_offset): Lose.
9503         (dfs_find_final_overrider): Use look_for_overrides_here.
9504         (get_matching_virtual): New fn.
9505         * semantics.c (emit_associated_thunks): Check BV_USE_VCALL_INDEX_P,
9506         not BV_VCALL_INDEX.
9507         * search.c (look_for_overrides_here): Split out from...
9508         (look_for_overrides_r): Here.
9509
9510         * class.c (find_final_overrider): Return error_mark_node on error.
9511
9512         * decl2.c (key_method): #if 0 accidental change.
9513
9514 2001-06-06  John David Anglin  <dave@hiauly1.hia.nrc.ca>
9515
9516         * call.c (convert_default_arg): Use INTEGRAL_TYPE_P.
9517         (build_over_call): Likewise.
9518         * decl.c (grokparms): Likewise.
9519         * pt.c (tsubst_decl): Likewise.
9520         * typeck.c (convert_arguments): Likewise.
9521
9522 2001-06-05  Mark Mitchell  <mark@codesourcery.com>
9523
9524         * semantics.c (begin_class_definition): Robustify.
9525
9526         * pt.c (instantiate_decl): Tell the repository code about the
9527         clones, not the cloned functions.
9528         * repo.c (repo_template_used): Explicitly instantiate the cloned
9529         function, not the clones.
9530
9531 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
9532
9533         * call.c (build_user_type_conversion_1): Set ICS_USER_FLAG and
9534         ICS_BAD_FLAG on created conversion.
9535         (compare_ics): Break out rank.
9536
9537 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
9538
9539         * decl.c (xref_tag): Remove extraneous %s on dependent name
9540         lookup warning.
9541
9542 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
9543
9544         * class.c (layout_vtable_decl): Fix off by one error on
9545         build_index_type.
9546         (build_vtt): Likewise.
9547         (build_ctor_vtbl_group): Likewise.
9548
9549 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
9550
9551         * class.c (maybe_indent_hierarchy): New function.
9552         (dump_class_hierarchy_r): Add flags. Dump extra binfo
9553         information, if enabled. Use maybe_indent_hierarchy. Adjust
9554         output format.
9555         (dump_class_hierarchy): Adjust prototype. Adjust output format.
9556         (dump_array, dump_vtable, dump_vtt): New functions.
9557         (finish_struct_1): Adjust hierarchy dumping.
9558         (initialize_vtable): Call dump_vtable.
9559         (build_vtt): Call dump_vtt.
9560         (build_ctor_vtbl_group): Call dump_vtable.
9561         * decl2.c (flag_dump_class_layout): Remove.
9562         (cxx_decode_option): Remove dump translation unit
9563         and dump class hierarchy check. Call dump_switch_p.
9564         (finish_file): Adjust dumping.
9565         (dump.c): Only dump base classes if not TDF_SLIM.
9566         Only dump namespace members if not TDF_SLIM.
9567         * optimize.c (dump_function): New function.
9568         (optimize_function): Call dump_function.
9569         * semantics.c (expand_body): Use dump_enabled_p.
9570
9571 2001-06-01  Nathan Sidwell  <nathan@codesourcery.com>
9572
9573         PR g++/2936
9574         Part missed from first commit
9575         * decl2.c (finish_anon_union): Copy context.
9576
9577 2001-05-30  Nathan Sidwell  <nathan@codesourcery.com>
9578
9579         PR g++/2936
9580         * optimize.c (remap_decl): Remap anonymous aggregate members too.
9581
9582 2001-05-26  Nathan Sidwell  <nathan@codesourcery.com>
9583
9584         PR g++/2823
9585         * semantics.c (expand_body): Don't optimize thunks.
9586
9587 2001-05-25  Sam TH  <sam@uchicago.edu>
9588
9589         * cp-tree.h lex.h: Fix header include guards.
9590
9591 2001-05-25  Mark Mitchell <mark@codesourcery.com>
9592
9593         * decl.c (init_decl_processing): Tweak.
9594
9595 2001-05-24  Mark Mitchell  <mark@codesourcery.com>
9596
9597         * decl.c (duplicate_decls): Tidy.
9598         (init_decl_processing): Always set flag_no_builtin.
9599
9600 2001-05-24  Nathan Sidwell  <nathan@codesourcery.com>
9601
9602         PR c++/2184
9603         * decl2.c (do_local_using_decl): Push the decls, even in a
9604         template.
9605
9606 2001-05-22  Mark Mitchell  <mark@codesourcery.com>
9607
9608         * optimize.c (initialize_inlined_parameters): Don't set
9609         TREE_READONLY for a VAR_DECL taking the place of an inlined
9610         PARM_DECL.
9611
9612 2001-05-22  Jason Merrill  <jason_merrill@redhat.com>
9613
9614         * class.c, cp-tree.h, rtti.c: Remove com_interface attribute support.
9615         * tree.c (cp_valid_lang_attribute): Warn about use of com_interface
9616         attribute.
9617
9618 2001-05-22  Joseph S. Myers  <jsm28@cam.ac.uk>
9619
9620         * parse.y: Refer to compound literals as such, not as
9621         constructor-expressions.
9622
9623 2001-05-21  Mark Mitchell  <mark@codesourcery.com>
9624
9625         * call.c (build_op_delete_call): Ignore exception-specifications
9626         when looking for matching delete operators.
9627         * init.c (build_new_1): Compute whether or not the allocation
9628         function used is a placement allocation function or not, and
9629         communicate this information to build_op_delete_call.
9630
9631 2001-05-21  Jason Merrill  <jason_merrill@redhat.com>
9632
9633         * class.c (build_vtable_entry_ref): Lose vtbl parm.  Fix for new abi.
9634         (build_vtbl_ref): Adjust.
9635         (dfs_accumulate_vtbl_inits): Set TREE_CONSTANT on the vtable address.
9636         * decl2.c (lang_f_options): Remove huge-objects, vtable-thunks.
9637         Re-add vtable-gc.
9638         (unsupported_options): Correspondingly.
9639
9640         * decl2.c (maybe_make_one_only): Check flag_weak, not
9641         supports_one_only().
9642
9643         * cp-tree.def (START_CATCH_STMT): Lose.
9644         * dump.c (cp_dump_tree): Don't dump it.  Do dump HANDLER_PARMS.
9645         * tree.c (cp_statement_code_p): Don't case it.
9646         * semantics.c (cp_expand_stmt): Likewise.
9647         * cp-tree.h (START_CATCH_TYPE): Lose.
9648         (HANDLER_TYPE): New.
9649         * except.c (expand_start_catch_block): Don't start any blocks.
9650         Return the type.
9651         (expand_end_catch_block): Don't end any blocks.
9652         * parse.y (handler): Don't pass anything from finish_handler_parms
9653         to finish_handler.
9654         * pt.c (tsubst_expr): Likewise.
9655         * semantics.c (begin_handler): Call note_level_for_catch here.
9656         (finish_handler_parms): Don't return anything.
9657         (genrtl_catch_block, begin_catch_block): Lose.
9658         (genrtl_handler): Call expand_start_catch here.
9659
9660 2001-05-18  Jason Merrill  <jason_merrill@redhat.com>
9661
9662         * class.c (build_vtable): Set DECL_ASSEMBLER_NAME for vtables here.
9663         (get_vtable_decl, build_vtt): Not here.
9664
9665 2001-05-20  Nathan Sidwell  <nathan@codesourcery.com>
9666
9667         PR c++/2781
9668         * optimize.c (update_cloned_parm): Copy addressability and other
9669         flags.
9670
9671 2001-05-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
9672
9673         * pt.c (determine_specialization): Ignore artificial functions.
9674
9675 2001-05-20  Neil Booth  <neil@daikokuya.demon.co.uk>
9676
9677         * cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
9678         (C_RID_CODE): Remove.
9679         * lex.c (cxx_init_options): Call set_identifier_size.  Update.
9680         (init_parse): Don't do it here.
9681
9682 2001-05-18  Diego Novillo  <dnovillo@redhat.com>
9683
9684         * decl2.c (finish_objects): Use the original SYMBOL_REF from the
9685         function declaration to avoid stripping the symbol's attributes.
9686
9687 2001-05-18  Nathan Sidwell  <nathan@codesourcery.com>
9688
9689         * decl.c (pushdecl): Adjust error string.
9690         (xref_tag): Adjust friend class injection warning. Remove the
9691         inherited name from the class shadowed scope.
9692
9693 2001-05-17  Mark Mitchell  <mark@codesourcery.com>
9694
9695         * except.c (cp_protect_cleanup_actions): New function.
9696         (init_exception_processing): Don't set protect_cleanup_actions
9697         here.  Do set lang_protect_cleanup_actions.
9698
9699 2001-05-16  Nathan Sidwell  <nathan@codesourcery.com>
9700
9701         * spew.c (read_token): Call yyerror on all unexpected tokens.
9702
9703 2001-05-16  Nathan Sidwell  <nathan@codesourcery.com>
9704
9705         * init.c (member_init_ok_or_else): Take a tree rather than
9706         string for name.
9707         (expand_member_init): Adjust.
9708
9709 2001-05-14  Nick Clifton  <nickc@cambridge.redhat.com>
9710
9711         * decl.c (duplicate_decls): Suppress warning about duplicate
9712         decls if the first decl is a friend.
9713
9714 2001-05-12  Zack Weinberg  <zackw@stanford.edu>
9715
9716         * except.c (choose_personality_routine): Export.  Add
9717         explanatory comment.  Take an enum languages, not a boolean.
9718         (initialize_handler_parm): Adjust to match.
9719         * cp-tree.h: Prototype choose_personality_routine.
9720         * lex.c (handle_pragma_java_exceptions): New function.
9721         (init_cp_pragma): Register #pragma GCC java_exceptions.
9722
9723 2001-05-12  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
9724
9725         * method.c (build_mangled_C99_name): Remove unused prototype.
9726
9727 2001-05-12  Alexandre Oliva  <aoliva@redhat.com>
9728
9729         * cp-tree.h (ptrmemfunc_vbit_where_t): Declare type.
9730         * typeck.c (get_member_function_from_ptrfunc,
9731         build_ptrmemfunc, expand_ptrmemfunc_cst): Take
9732         TARGET_PTRMEMFUNC_VBIT_LOCATION into account.
9733
9734         Reverted Geoff Keating's 2001-05-03's patch.
9735
9736 2001-05-11  Ira Ruben   <ira@apple.com>
9737
9738         * cp/cp-tree.h (C_EXP_ORIGINAL_CODE): Delete; declared in c-common.h.
9739
9740 2001-05-11  Neil Booth  <neil@daikokuya.demon.co.uk>
9741
9742         * cp-tree.h (finish_label_expr, lookup_label): Delete.
9743         * parse.y: Update for '&&'; don't issue warning here.
9744         * semantics.c (finish_label_expr): Delete.
9745
9746 2001-05-07  Mark Mitchell  <mark@codesourcery.com>
9747
9748         * splay-tree.h (splay_tree_max): New function.
9749         (splay_tree_min): Likewise.
9750
9751 2001-05-03  Geoffrey Keating  <geoffk@redhat.com>
9752
9753         * cp-tree.h (enum cp_tree_index): Add CPTI_PFN_VFLAG_IDENTIFIER.
9754         (pfn_vflag_identifier): Define.
9755         Update comment about layout of pointer functions.
9756         (build_ptrmemfunc1): Update prototype.
9757         (expand_ptrmemfunc_cst): Update prototype.
9758         * decl.c (initialize_predefined_identifiers): Initialize
9759         pfn_vflag_identifier.
9760         (build_ptrmemfunc_type): When FUNCTION_BOUNDARY < 16, add
9761         an extra field to the type.
9762         * expr.c (cplus_expand_constant): Pass 'flag' between
9763         expand_ptrmemfunc_cst and build_ptrmemfunc1.
9764         * typeck.c (get_member_function_from_ptrfunc): When
9765         FUNCTION_BOUNDARY < 16, look at additional field to determine
9766         if a pointer-to-member is a real pointer or a vtable offset.
9767         (build_ptrmemfunc1): Add new parameter to contain extra field.
9768         (build_ptrmemfunc): Pass the extra field around.
9769         (expand_ptrmemfunc_cst): Add new parameter to return extra field.
9770         (pfn_from_ptrmemfunc): Ignore the extra field.
9771
9772 2001-05-03  Mark Mitchell  <mark@codesourcery.com>
9773
9774         * cp-tree.h (flag_inline_trees): Update documentation.
9775         * decl.c (init_decl_processing): Adjust handling of
9776         flag_inline_functions and flag_inline_trees to support -O3.
9777         (grokfndecl): Set DECL_INLINE on all functions if that's what
9778         the user requested.
9779         (save_function_data): Clear DECL_INLINE in
9780         current_function_cannot_inline is non-NULL.
9781         * decl2.c (flag_inline_trees): Update documentation.
9782
9783 2001-05-03  Nathan Sidwell  <nathan@codesourcery.com>
9784
9785         * dump.c (cp_dump_tree, USING_STMT case): New case.
9786         * tree.c (cp_statement_code_p): Add USING_STMT.
9787         * decl2.c (do_using_directive): Add the using directive statement.
9788
9789         * tree.c (walk_tree): Reformat an if block.
9790
9791 2001-05-02  Mark Mitchell  <mark@codesourcery.com>
9792
9793         * decl.c (compute_array_index_type): Don't try to do anything with
9794         the indices when processing a template.
9795
9796 2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9797
9798         * call.c: NULL_PTR -> NULL.
9799         * class.c: Likewise.
9800         * cvt.c: Likewise.
9801         * decl.c: Likewise.
9802         * decl2.c: Likewise.
9803         * except.c: Likewise.
9804         * init.c: Likewise.
9805         * rtti.c: Likewise.
9806         * search.c: Likewise.
9807         * tree.c: Likewise.
9808         * typeck.c: Likewise.
9809         * typeck2.c: Likewise.
9810
9811 2001-05-02  Mark Mitchell  <mark@codesourcery.com>
9812
9813         * decl2.c (do_using_directive): Revert previous patch.
9814
9815 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
9816
9817         * cp-tree.def (USING_STMT): New statement node.
9818         * cp-tree.h (USING_STMT_NAMESPACE): New macro.
9819         * decl2.c (do_using_directive): Add USING_STMT to statement
9820         tree. Don't emit errors when processing template decl.
9821         * pt.c (tsubst_expr, USING_STMT case): New case.
9822         * semantics.c (cp_expand_stmt, USING_STMT case): New case.
9823
9824 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
9825
9826         * call.c (build_new_op): Convert args from reference here.
9827         (build_conditional_expr): Don't convert here.
9828
9829 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
9830
9831         * spew.c (last_token_id): New static variable.
9832         (read_token): Set it here.
9833         (yyerror): Use it here.
9834
9835 2001-04-30  Richard Henderson  <rth@redhat.com>
9836
9837         * cvt.c: Downcase C_PROMOTING_INTEGER_TYPE_P invocations.
9838         * decl.c: Likewise.
9839
9840 2001-04-30  Mark Mitchell  <mark@codesourcery.com>
9841
9842         * gxxint.texi: Remove.
9843         * Make-lang.in: Remove all traces of gxxint.texi.
9844
9845 2001-04-30  Mark P Mitchell  <mark@codesourcery.com>
9846
9847         * decl2.c (start_static_initialization_or_destruction): Correct
9848         logic to handle the -fno-use-cxa-atexit case.
9849
9850 2001-04-30  Mark Mitchell  <mark@codesourcery.com>
9851
9852         * optimize.c (update_cloned_parm): New function.
9853         (maybe_clone_body): Use it.  Update the `this' parameter too.
9854
9855 2001-04-29  Joseph S. Myers  <jsm28@cam.ac.uk>
9856
9857         * decl2.c (unsupported_options): Add new-abi.
9858         * lang-options.h: Remove no longer supported options.
9859
9860 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
9861
9862         * except.c (can_convert_eh): Don't check template parms,
9863         typename types etc.
9864
9865 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
9866
9867         * optimize.c (maybe_clone_body): Copy parameter names and locations.
9868
9869 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
9870
9871         * cp-tree.h (adjust_clone_args): Prototype new function.
9872         * class.c (adjust_clone_args): New function.
9873         * decl.c (start_function): Call it for in charge ctors.
9874
9875 2001-04-26  Mark Mitchell  <mark@codesourcery.com>
9876
9877         * method.c (use_thunk): Make sure that thunks really are emitted
9878         when requested.
9879
9880 2001-04-26  Nathan Sidwell <nathan@codesourcery.com>
9881
9882         * mangle.c (write_chars): New macro.
9883         (hwint_to_ascii): New function
9884         (write_number): Use it.
9885         (write_integer_cst): Deal with really big numbers.
9886
9887 2001-04-25  Mark Mitchell  <mark@codesourcery.com>
9888
9889         * optimize.c (maybe_clone_body): Copy TREE_PUBLIC before emitting
9890         the clone.
9891
9892 2001-04-25  Nathan Sidwell  <nathan@codesourcery.com>
9893
9894         * decl.c (grokdeclarator): Set context of namespace scope
9895         TYPE_DECLS.
9896
9897 2001-04-24  Zack Weinberg  <zackw@stanford.edu>
9898
9899         * cp/optimize.c: Include hashtab.h.
9900         (struct inline_data): Add tree_pruner.
9901         (expand_call_inline, expand_calls_inline): Use it when calling
9902         walk_tree.
9903         (optimize_function): Initialize and free tree_pruner.
9904
9905 2001-04-24  Nathan Sidwell <nathan@codesourcery.com>
9906
9907         Lazy __FUNCTION__ generation.
9908         * cp-tree.def (FUNCTION_NAME): Remove.
9909         * cp-tree.h (function_name_declared_p): Remove.
9910         (cp_fname_init): Prototype.
9911         * decl.c (init_decl_processing): Don't generate __FUNCTION__ et al ids,
9912         don't call declare_function_name. Call start_fname_decls.
9913         (cp_make_fname_decl): Adjust parameters. Generate the name. Don't
9914         clobber the line number.
9915         (cp_fname_init): New function.
9916         (start_function): Call start_fname_decls.
9917         (finish_function): Call finish_fname_decls.
9918         * lex.c (reswords): Add slots for __FUNCTION__ et al.
9919         (rid_to_yy): Add mappings for __FUNCTION__ et al.
9920         * optimize.c (maybe_clone_body): Remove function_name_declared_p.
9921         * parse.y (VAR_FUNC_NAME): New token.
9922         (primary): Add VAR_FUNC_NAME.
9923         * pt.c (tsubst_decl): Adjust a DECL_PRETTY_FUNCTION_P's
9924         generation.
9925         (tsubst, FUNCTION_NAME case): Remove.
9926         (tsubst_copy, FUNCTION_NAME case): Remove.
9927         (tsubst_expr, DECL_STMT case): Be careful with a
9928         DECL_PRETTY_FUNCTION_P.
9929         (instantiate_decl): Remove function_name_declared_p.
9930         * semantics.c (begin_compound_statement): Don't call
9931         declare_function_name here.
9932         (setup_vtbl_ptr). Don't save & restore function_name_declared_p.
9933         (finish_translation_unit): Call finish_fname_decls.
9934         (expand_body): Remove function_name_declared_p.
9935         * typeck2.c (digest_init): Allow any ERROR_MARK.
9936
9937 2001-04-24  Nathan Sidwell  <nathan@codesourcery.com>
9938
9939         * pt.c (tsubst_decl): Use VOID_TYPE_P.
9940         * semantics.c: Fix some typos.
9941
9942 2001-04-23  Phil Edwards  <pme@sources.redhat.com>
9943
9944         * cp/decl2.c (flag_honor_std):  Always initialize to 1.
9945
9946 2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9947
9948         * xref.c (GNU_xref_file): Use concat in lieu of xmalloc/sprintf.
9949
9950 2001-04-23  Jason Merrill  <jason_merrill@redhat.com>
9951
9952         * except.c (build_throw): Wrap the initialization of the exception
9953         object in a MUST_NOT_THROW_EXPR.
9954         (do_free_exception): #if 0.
9955
9956 2001-04-20  Mark Mitchell  <mark@codesourcery.com>
9957
9958         * cp-tree.h (finish_enum): Change prototype.
9959         * decl.c (finish_enum): Reorganize.
9960         * parse.y (structsp): Adjust calls to finish_enum.
9961
9962 2001-04-20  Nathan Sidwell  <nathan@codesourcery.com>
9963
9964         * tree.c (cp_tree_equal): Adjust final switch formatting. Add
9965         't' case.
9966
9967 2001-04-20  Nathan Sidwell  <nathan@codesourcery.com>
9968
9969         * class.c (dfs_unshared_virtual_bases): Add ATTRIBUTE_UNUSED.
9970         (layout_empty_base): Return at end flag.
9971         (build_base_field): Likewise.
9972         (build_base_fields): Likewise.
9973         (layout_virtual_bases): Don't add 1 to eoc value.
9974         (end_of_class): Use full size for empty bases.
9975         (layout_class_type): Clear CLASSNEARLY_EMPTY_P if we appended
9976         empty bases. Don't add 1 to eoc value. Only add trailing padding
9977         if we're an empty class with no empty bases.
9978         (dump_class_hierarchy): Dump size and alignment.
9979
9980 2001-04-20  Jakub Jelinek  <jakub@redhat.com>
9981
9982         * call.c (maybe_handle_ref_bind): Copy ICS_USER_FLAG and
9983         ICS_BAD_FLAG.
9984
9985 2001-04-20  Jakub Jelinek  <jakub@redhat.com>
9986
9987         * search.c (lookup_field_r): If looking for type and non-TYPE_DECL
9988         is found, look first if name does not match the structure name.
9989
9990 2001-04-19  Mark Mitchell  <mark@codesourcery.com>
9991
9992         * cp-tree.h (DECL_LANGUAGE): Don't assume DECL_LANG_SPECIFIC is
9993         set.
9994         (SET_DECL_LANGUAGE): New macro.
9995         * decl.c (duplicate_decls): Use SET_DECL_LANGUAGE.
9996         (pushdecl): Likewise.
9997         (build_library_fn_1): Likewise.
9998         (build_cp_library_fn): Likewise.
9999         (grokfndecl): Likewise.
10000         (grokvardecl): Mark `extern "C"' variables as having C linkage.
10001         * decl2.c (grokclassfn): Use SET_DECL_LANGUAGE.
10002         * lex.c (retrofit_lang_decl): Likewise.
10003         * mangle.c (mangle_decl_string): Don't mangle the names of
10004         variables declared with C language linkage.
10005         * semantics.c (finish_member_declaration): Use SET_DECL_LANGUAGE.
10006
10007 2001-04-18  John David Anglin  <dave@hiauly1.hia.nrc.ca>
10008
10009         * semantics.c (simplify_aggr_init_exprs_r): Don't restore
10010         flag_access_control from uninitialized storage.
10011
10012 2001-04-15  Mark Mitchell  <mark@codesourcery.com>
10013
10014         * cp-tree.h (TYPE_PTRMEM_CLASS_TYPE): Improve documentation.
10015         * mangle.c (write_pointer_to_member_type): Fix mangling of
10016         pointers to cv-qualified member function types.
10017
10018         * init.c (build_delete): Create a SAVE_EXPR for the address if
10019         we're going to use it more than once.
10020
10021 2001-04-13  Mark Mitchell  <mark@codesourcery.com>
10022
10023         * cp-tree.h (DELTA2_FROM_PTRMEMFUNC): Remove.
10024         (expand_ptremfunc_cst): Change prototype.
10025         (delta2_from_ptrmemfunc): Remove.
10026         * expr.c (cplus_expand_constant): Adjust call to
10027         expand_ptrmemfunc_cst.
10028         * typeck.c (build_ptrmemfunc1): Simplify.
10029         (build_ptrmemfunc): Make sure that casting a PTRMEM_CST still
10030         results in a constant.
10031         (expand_ptrmemfunc_cst): Remove idx and delta2 parameters.
10032         (delta2_from_ptrmemfunc): Remove.
10033         (pfn_from_ptrmemfunc): Adjust call to expand_ptrmemfunc_cst.
10034
10035 2001-04-12  Jason Merrill  <jason_merrill@redhat.com>
10036
10037         * cp-tree.h (decl_namespace_list): New macro.
10038         (struct saved_scope): Add decl_ns_list.
10039         * decl.c (mark_saved_scope): Mark it.
10040         * decl2.c: Lose static decl_namespace_list.
10041         (init_decl2): Don't save it.
10042
10043 2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10044
10045         * cp-tree.h (warn_return_type, yylex): Delete redundant
10046         declarations.
10047
10048         * decl.c (current_class_depth, global_namespace): Likewise.
10049
10050         * decl2.c (current_class_depth, flag_gnu_xref): Likewise
10051
10052         * repo.c (flag_use_repository): Likewise.
10053
10054 2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10055
10056         * cp-tree.h (pedantic, convert, global_bindings_p, insert_block,
10057         set_block, pushdecl, getdecls, gettags, init_decl_processing,
10058         maybe_build_cleanup, copy_lang_decl, prep_stmt, lvalue_p,
10059         lvalue_or_else, print_lang_statistics, comp_target_types,
10060         unsigned_type, signed_type, signed_or_unsigned_type,
10061         build_function_call, mark_addressable, incomplete_type_error):
10062         Delete redundant declarations.
10063
10064 2001-04-11  Jason Merrill  <jason_merrill@redhat.com>
10065
10066         * cp-tree.h (TYPE_LINKAGE_IDENTIFIER): New macro.
10067         (TYPE_ANONYMOUS_P): New macro.
10068         (TAGGED_TYPE_P): New macro.
10069         * decl.c (check_tag_decl): Use TYPE_ANONYMOUS_P.
10070         (grokfndecl, grokvardecl, grokdeclarator): Likewise.
10071         * tree.c (no_linkage_helper): Likewise.
10072         * semantics.c (begin_class_definition): Likewise.
10073         * pt.c (convert_template_argument): Likewise.
10074         * lex.c (check_for_missing_semicolon): Likewise.
10075
10076 2001-04-12  Nathan Sidwell  <nathan@codesourcery.com>
10077
10078         * class.c (dfs_unshared_virtual_bases): New function.
10079         (mark_primary_bases): Call it.
10080         (check_bases): Ignore virtual bases when determining
10081         nearly-emptiness.
10082
10083 2001-04-12  Nathan Sidwell  <nathan@codesourcery.com>
10084
10085         * method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
10086
10087 2001-04-11  Mark Mitchell  <mark@codesourcery.com>
10088
10089         * optimize.c (maybe_clone_body): Copy DECL_NUM_STMTS from the
10090         cloned function to the clone.
10091
10092 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10093
10094         * Make-lang.in (cp/semantics.o): Depend on $(EXPR_H).
10095
10096         * semantics.c: Include expr.h.
10097
10098 2001-04-11  Nathan Sidwell  <nathan@codesourcery.com>
10099
10100         * method.c (implicitly_declare_fn): Commonize code for copy ctor
10101         and assignment op. Set TREE_USED for parameter.
10102
10103 2001-04-10  Mark Mitchell  <mark@codesourcery.com>
10104
10105         * class.c (find_final_overrider_data): Add `candidates'.
10106         (dfs_find_final_overrider): Don't issue error messages
10107         prematurely.
10108         (find_final_overrider): Issue error messages here.
10109         (build_base_field): Don't warn about amgibuous direct bases here.
10110         (warn_about_ambiguous_direct_bases): New function.
10111         (layout_class_type): Use it.
10112
10113 2001-04-10  Richard Henderson  <rth@redhat.com>
10114
10115         * typeck.c (build_array_ref): Push the array reference inside
10116         COMPOUND_EXPR and COND_EXPR.
10117
10118 2001-04-05  Mark Mitchell  <mark@codesourcery.com>
10119
10120         * cp-tree.h (DECL_THIS_INLINE): Rename to DECL_DECLARED_INLINE_P.
10121         * decl.c (duplicate_decls): Adjust accordingly.
10122         (maybe_commonize_var): Likewise.
10123         (grokfndecl): Likewise.
10124         (start_function): Likewise.
10125         (start_method): Likewise.
10126         * decl2.c (key_method): Likewise.
10127         (import_export_decl): Likewise.
10128         * method.c (implicitly_declare_fn): Likewise.
10129         * optimize.c (maybe_clone_body): Likewise.
10130
10131 2001-04-05  Benjamin Kosnik  <bkoz@redhat.com>
10132
10133         * lang-specs.h: Add __DEPRECATED.
10134
10135 2001-04-05  J"orn Rennecke <amylaar@redhat.com>
10136
10137         * search.c (get_dynamic_cast_base_type): When building a new
10138         constant, set its type to ssizetype.
10139
10140 2001-04-04  Jakub Jelinek  <jakub@redhat.com>
10141
10142         * optimize.c (expand_call_inline): Only add newly inlined statements
10143         into inlined_stmts.
10144
10145 2001-04-03  Mark Mitchell  <mark@codesourcery.com>
10146
10147         * cp-tree.h (OPERATOR_ASSIGN_FORMAT): Remove.
10148         (OPERATOR_FORMAT): Likewise.
10149         (OPERATOR_TYPENAME_FORMAT): Likewise.
10150         * operators.def: Remove old name-mangling information.
10151         * decl.c (grok_op_properties): Adjust accordingly.
10152         * lex.c (init_operators): Likewise.
10153         * rtti.c (get_tinfo_decl): Issue error messages about types that
10154         have variable size.
10155
10156 2001-04-03  Mark Mitchell  <mark@codesourcery.com>
10157
10158         * decl2.c (import_export_decl): Don't call import_export_class
10159         when processing an inline member function.
10160         * semantics.c (expand_body): Call import_export_decl before
10161         emitting inline functions.
10162
10163 2001-03-28  Richard Henderson  <rth@redhat.com>
10164
10165         IA-64 ABI Exception Handling:
10166         * cp-tree.def (EH_SPEC_BLOCK): New.
10167         (MUST_NOT_THROW_EXPR): New.
10168         * cp-tree.h: Update changed function declarations.
10169         (CPTI_PUSH_EXCEPTION_IDENTIFIER): Remove.
10170         (CPTI_CALL_UNEXPECTED): New.
10171         (struct cp_language_function): Rename x_eh_spec_try_block
10172         to x_eh_spec_block.
10173         (EH_SPEC_STMTS, EH_SPEC_RAISES): New.
10174         * decl.c (current_binding_level): If no current function
10175         bindings, revert to scope_chain.
10176         (initialize_predefined_identifiers): Remove __cp_push_exception.
10177         (store_parm_decls): Use begin_eh_spec_block.
10178         (finish_function): Use finish_eh_spec_block.
10179         (mark_lang_function): Update for name changes.
10180         * decl2.c (finish_file): No mark_all_runtime_matches.
10181         * dump.c (cp_dump_tree): Handle new tree codes.
10182         * error.c (dump_expr) [BIND_EXPR]: Fix typo.
10183         * except.c (catch_language_init, catch_language): Remove.
10184         (init_exception_processing): Don't set language code.
10185         Initialize call_unexpected_node, protect_cleanup_actions,
10186         eh_personality_libfunc, lang_eh_runtime_type.
10187         (call_eh_info, push_eh_info, get_eh_info, get_eh_value): Remove.
10188         (get_eh_type, get_eh_caught, get_eh_handlers): Remove.
10189         (prepare_eh_type): Split out type canonicalizations ...
10190         (build_eh_type_type): ... from here.
10191         (build_eh_type_type_ref): Remove.
10192         (mark_all_runtime_matches): Remove.
10193         (build_exc_ptr): New.
10194         (do_begin_catch, do_end_catch): New.
10195         (do_pop_exception): Remove.
10196         (build_terminate_handler): Remove.
10197         (choose_personality_routine): Split out language choice from ...
10198         (initialize_handler_parm): ... here.
10199         Use MUST_NOT_THROW_EXPR.
10200         (expand_start_catch_block): Use do_begin_catch.  Simplify Java
10201         exception object handling.
10202         (expand_start_eh_spec, expand_end_eh_spec): Remove.
10203         (expand_exception_blocks, alloc_eh_object): Remove.
10204         (begin_eh_spec_block, finish_eh_spec_block): New.
10205         (do_allocate_exception, do_free_exception): New.
10206         (expand_throw): Merge into ...
10207         (build_throw): ... here.  Update for abi.
10208         * expr.c (cplus_expand_expr): No expand_internal_throw.
10209         Handle MUST_NOT_THROW_EXPR.
10210         * pt.c (tsubst_expr): Handle EH_SPEC_BLOCK.
10211         * semantics.c (*) Update for except.h name changes.
10212         (genrtl_try_block): No protect_with_terminate.
10213         (genrtl_eh_spec_block): New.
10214         (genrtl_handler): Don't emit the goto here.
10215         (cp_expand_stmt): Handle EH_SPEC_BLOCK.
10216         (genrtl_finish_function): Don't expand_exception_blocks.
10217         * tree.c (cp_statement_code_p): Handle EH_SPEC_BLOCK.
10218
10219 2001-03-28  Richard Henderson  <rth@redhat.com>
10220
10221         * decl.c (struct named_label_list): Rename eh_region to
10222         in_try_scope, add in_catch_scope.
10223         (struct binding_level): Rename eh_region to is_try_scope,
10224         add is_catch_scope.
10225         (note_level_for_try): Rename from note_level_for_eh.
10226         (note_level_for_catch): New.
10227         (poplevel): Copy both is_try_scope and is_catch_scope to
10228         the named_label_list struct.
10229         (check_previous_goto_1): Don't check for catch block via
10230         DECL_ARTIFICIAL; use in_try_scope instead.
10231         (check_goto): Likewise.
10232         * cp-tree.h (note_level_for_try, note_level_for_catch): Declare.
10233         * except.c (expand_start_catch_block): Call note_level_for_catch.
10234         * semantics.c (begin_compound_stmt): Update for note_level_for_try.
10235
10236 2001-03-27  Richard Henderson  <rth@redhat.com>
10237
10238         * except.c: Use USING_SJLJ_EXCEPTIONS instead of
10239         exceptions_via_longjmp.
10240
10241 2001-03-27  Phil Edwards  <pme@sources.redhat.com>
10242
10243         * pt.c (check_default_tmpl_args):  Make error messages clearer.
10244
10245 2001-03-26  Phil Edwards  <pme@sources.redhat.com>
10246
10247         * error.c:  Also undefine 'A' macro used for cp_printers definition.
10248
10249 2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10250
10251         * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
10252
10253 2001-03-26  Mike Yang <yang@research.att.com>
10254             Mark Mitchell  <mark@codesourcery.com>
10255
10256         * dump.c (dump_access): New function.
10257         (cp_dump_tree): Use it.  Dump basetype information for class
10258         types.
10259
10260 2001-03-26  Mark Mitchell  <mark@codesourcery.com>
10261
10262         * Makefile.in (optimize.o): Depend on params.h.
10263         (duplicate_decls): Copy DECL_NUM_STMTS, not DECL_FRAME_SIZE.
10264         (init_decl_processing): Set flag_no_inline when doing
10265         inlining-on-trees.
10266         * optimize.c: Include params.h.
10267         (struct inline_data): Improve documentation of FNS.  Add
10268         FIRST_INLINED_FN, INLINED_STMTS, and CLONING_P.
10269         (INSNS_PER_STMT): New macro.
10270         (remap_block): Use CLONING_P.
10271         (inlinable_function_p): Don't inline big functions.
10272         (expand_call_inline): Keep track of how much inlining we've done.
10273         (optimize_function): Set FIRST_INLINED_FN.
10274         (maybe_clone_body): Set CLONING_P.
10275         * semantics.c (simplify_aggr_init_exprs_r): Fix typing problems in
10276         tree nodes.
10277         (genrtl_finish_function): Clear DECL_DEFER_OUTPUT before calling
10278         rest_of_compilation.  Clear DECL_RTL for local variables
10279         afterwards.
10280         (clear_decl_rtl): New function.
10281
10282 2001-03-26  Nathan Sidwell  <nathan@codesourcery.com>
10283
10284         Implement DR 209
10285         * cp-tree.h (skip_type_access_control,
10286         reset_type_access_control): Prototype.
10287         * decl.c (grokdeclarator): Access of friends is not checked.
10288         * parse.y (component_decl_list): Reset type access control.
10289         * semantics.c (decl_type_access_control): Clear
10290         current_type_lookups.
10291         (save_type_access_control): Don't save if not deferring.
10292         (skip_type_access_control, reset_type_access_control): New
10293         functions.
10294         (begin_class_definition): Do type access control for basetypes.
10295         Start deferred access control.
10296         (finish_class_definition): Resume immediate access control if
10297         this is a local class.
10298
10299 2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10300
10301         * class.c (add_method): Use memcpy/memmove, not bcopy.
10302
10303         * decl.c (duplicate_decls): Likewise.
10304
10305 2001-03-23  Jakub Jelinek  <jakub@redhat.com>
10306
10307         * mangle.c (write_discriminator): Use `_0' for discriminator 1,
10308         not `_'.
10309
10310 2001-03-23  Jakub Jelinek  <jakub@redhat.com>
10311
10312         * decl.c (local_names): Define.
10313         (push_local_name): New.
10314         (grok_reference_init): Return init if initializing static reference
10315         variable with non-constant instead of emitting it.
10316         Move expand_static_init call to cp_finish_decl.
10317         (layout_var_decl): Call push_local_name.
10318         (maybe_commonize_var): Allow inlining functions even if they have
10319         static local variables, use comdat_linkage for them if flag_weak.
10320         (check_initializer): Call obscure_complex_init if
10321         grok_reference_init returned nonzero.
10322         (save_function_data): Clear x_local_names.
10323         (pop_cp_function_context): Free x_local_names.
10324         (mark_inlined_fns): Remove.
10325         (mark_lang_function): Mark x_local_names.
10326         (lang_mark_tree): Don't mark DECL_ACCESS for DECL_DISCRIMINATOR_P.
10327         Mark inlined_fns as tree, remove call to mark_inlined_fns.
10328         * class.c (alter_access): Ensure DECL_ACCESS is never set if
10329         DECL_DISCRIMINATOR_P.
10330         * cp-tree.h (cp_language_function): Add x_local_names.
10331         (lang_decl_flags): Add discriminator into u2.
10332         (lang_decl_inlined_fns): Remove.
10333         (lang_decl): inlined_fns is now a TREE_VEC.
10334         (DECL_DISCRIMINATOR_P, DECL_DISCRIMINATOR): Define.
10335         * optimize.c (inlinable_function_p): DECL_INLINED_FNS is now a
10336         TREE_VEC, not a custom structure.
10337         (optimize_function): Likewise.
10338         * mangle.c (discriminator_for_local_entity): Discriminate among
10339         VAR_DECL local entities.
10340         * search.c (dfs_access_in_type): If DECL_DISCRIMINATOR_P, DECL_ACCESS
10341         is not valid.
10342
10343 2001-03-22  Bryce McKinlay  <bryce@albatross.co.nz>
10344
10345         Add support for Java interface method calls.
10346         * cp-tree.h (struct lang_type): Add java_interface flag.
10347         (TYPE_JAVA_INTERFACE): New macro.
10348         * tree.c (cp_valid_lang_attribute): Handle "java_interface" attribute
10349         by setting TYPE_JAVA_INTERFACE.
10350         * call.c (java_iface_lookup_fn): New static.
10351         (build_over_call): If calling a method declared in a
10352         TYPE_JAVA_INTERFACE, call build_java_interface_fn_ref to generate the
10353         expression which resolves the function address.
10354         (build_java_interface_fn_ref): New function.
10355
10356 2001-03-22  Richard Henderson  <rth@redhat.com>
10357
10358         * Make-lang.in (cp/except.o): Don't depend on insn-flags.h.
10359         * except.c: Don't include it.
10360
10361 2001-03-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
10362             based on an idea from Joe Buck <jbuck@synopsys.com>
10363
10364         * parse.y (bad_decl, template_arg_list_ignore, arg_list_ignore):
10365         New nonterminals.
10366         (data_def, component_decl): Add reductions to bad_decl.
10367
10368 2001-03-22  Jakub Jelinek  <jakub@redhat.com>
10369
10370         * method.c (do_build_assign_ref): Don't use build_modify_expr for
10371         anonymous aggregates, since they don't have assignment operator
10372         method.
10373         * decl.c (fixup_anonymous_aggr): Disallow ctors, dtors and copy
10374         assignment operators for anonymous structure fields.
10375
10376 2001-03-21  Jason Merrill  <jason@redhat.com>
10377
10378         * pt.c (instantiate_decl): Abort if we see a member constant
10379         instantiation that doesn't already have its initializer.
10380         Downgrade explicit instantiation without definition to pedwarn.
10381
10382         * cp-tree.h (DECL_TINFO_FN_P, SET_DECL_TINFO_FN_P): Remove.
10383         * class.c (build_vtable_entry): Don't check DECL_TINFO_FN_P.
10384         (import_export_decl): Check tinfo_decl_p, not DECL_TINFO_FN_P.
10385
10386         * cp-tree.h (CLASSTYPE_VTABLE_NEEDS_WRITING): Remove.
10387         (pending_vtables): Remove.
10388         * decl2.c (pending_vtables): Remove.
10389         (import_export_vtable): Use CLASSTYPE_INTERFACE_ONLY, not
10390         CLASSTYPE_VTABLE_NEEDS_WRITING.
10391         (import_export_class): Likewise.
10392         (init_decl2): Don't mark pending_vtables.
10393         * lex.c (handle_pragma_vtable): Just sorry.
10394         * pt.c (instantiate_class_template): Don't mess with
10395         CLASSTYPE_VTABLE_NEEDS_WRITING.
10396         (mark_class_instantiated): Likewise.
10397         * ptree.c (print_lang_type): Don't print it.
10398         * semantics.c (begin_class_definition): Don't set it.
10399
10400         * pt.c (template_tail): Replace with last_pending_template.
10401         (maybe_templates, maybe_template_tail): Remove.
10402         (add_pending_template): Adjust.
10403         (instantiate_pending_templates): Adjust.
10404
10405         * cp-tree.h (struct saved_scope): Remove lang_stack field.
10406         (current_lang_stack): Remove.
10407         * decl.c (maybe_push_to_top_level): Don't initialize it.
10408         (duplicate_decls): Use current_lang_depth.
10409         (xref_basetypes): Likewise.
10410         * class.c (current_lang_depth): New fn.
10411         (push_lang_context): Use more varray functionality.
10412         (pop_lang_context): Likewise.
10413
10414         * error.c (GLOBAL_THING): Always use '__'.
10415
10416 2001-03-21  Mark Mitchell  <mark@codesourcery.com>
10417
10418         * class.c (build_clone): Clear DECL_ASSEMBLER_NAME.
10419
10420         * mangle.c (mangle_decl_string): Mangle the names of overloaded
10421         operators, even when they have `extern "C"' linkage.
10422
10423 2001-03-19  Mark Mitchell  <mark@codesourcery.com>
10424
10425         * class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
10426         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
10427         where it's not necessary.
10428         (add_method): Remove optimization involving comparison of
10429         DECL_ASSEMBLER_NAME.
10430         (build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
10431         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
10432         where it's not necessary.
10433         (check_methods): Likewise.
10434         (build_clone): Likewise.
10435         (built_vtt): Likewise.
10436         * cp-tree.h (DECL_NEEDED_P): Likewise.
10437         * decl.c (pushtag): Likewise.
10438         (duplicate_decls): Likewise.
10439         (pushdecl): Likewise.
10440         (builtin_function): Likewise.
10441         (build_library_fn_1): Set DECL_LANGUAGE for library functions.
10442         (build_cp_library_fn): Likewise.
10443         (maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
10444         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
10445         where it's not necessary.
10446         (make_rtl_for_nonlocal_decl): Likewise.
10447         (cp_finish_decl): Likewise.
10448         (grokfndecl): Likewise.
10449         (grokvardecl): Likewise.
10450         (grokdeclarator): Likewise.
10451         (start_function): Likewise.
10452         (cp_missing_return_ok_p): Likewise.
10453         * decl2.c (grokclassfn): Likewise.
10454         (check_classfn): Likewise.
10455         (finish_static_data_member_decl): Likewise.
10456         (grokfield): Likewise.
10457         * error.c (GLOBAL_IORD_P): Remove.
10458         (dump_global_iord): Improve output.
10459         (dump_decl): Avoid using DECL_ASSEMBLER_NAME.
10460         * except.c (nothrow_libfn_p): Summarily reject any function not in
10461         namespace-scope.
10462         * init.c (build_java_class_ref): Don't explicitly set
10463         DECL_ASSEMBLER_NAME after calling mangle_decl.
10464         * mangle.c (mangle_decl_string): Handle extern "C" functions.
10465         (mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
10466         * method.c (set_mangled_name_for_decl): Don't explicitly set
10467         DECL_ASSEMBLER_NAME after calling mangle_decl.
10468         (make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
10469         IDENTIFIER_GLOBAL_VALUE for the thunk.
10470         * pt.c (set_mangled_name_for_template_decl): Remove.
10471         (check_explicit_specialization): Don't use it.
10472         (looup_template_class): Don't set DECL_ASSEMBLER_NAME.
10473         (tsubst_friend_function): Likewise.
10474         (tsubst_decl): Likewise.
10475         (regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
10476         * rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
10477         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
10478         where it's not necessary.
10479         (tinfo_base_init): Likewise.
10480         (create_real_tinfo_var): Likewise.
10481         * search.c (looup_field_1): Likewise.
10482         * semantics.c (finish_named_return_value): Likewise.
10483         * tree.c (init_tree): Set lang_set_decl_assembler_name.
10484
10485 2001-03-15  Gabriel Dos Reis  <gdr@codesourcery.com>
10486
10487         Correct semantics restrictions checking in throw-expression.
10488         * except.c (is_admissible_throw_operand): New function.
10489         (build_throw): Use it.
10490
10491 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
10492
10493         * decl.c (cp_make_fnname_decl): Set DECL_IGNORED_P on __FUNCTION__
10494         and its ilk.
10495
10496 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
10497
10498         * class.c (build_clone): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
10499         * cp-tree.h (DECL_IN_MEMORY_P): Likewise.
10500         * decl.c (duplicate_decls): Likewise.
10501         (builtin_function): Likewise.
10502         (build_library_fn): Likewise.
10503         (build_cp_library_fn): Likewise.
10504         (check_initializer): Likewise.
10505         (cp_finish_decl): Likewise.
10506         * decl2.c (grokfield): Likewise.
10507         (grok_function_init): Remove #if 0'd code.
10508         (finish_anon_union): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
10509         * friend.c (do_friend): Likewise.
10510         * init.c (get_temp_regvar): Likewise.
10511         * method.c (make_thunk): Likewise.
10512         * pt.c (tsubst_friend_function): Likewise.
10513         (tsubst_decl): Likewise.
10514         (regenerate_decl_from_template): Likewise.
10515         * semantics.c (genrtl_named_return_value): Likewise.
10516         (expand_body): Likewise.
10517         (genrtl_finish_function): Likewise.
10518         * tree.c (cp_tree_equal): Likewise.
10519
10520 2001-03-12  Nathan Sidwell  <nathan@codesourcery.com>
10521
10522         * call.c (convert_like_real): Add extra semantics to INNER
10523         parameter. Don't convert to temporary if a user conversion
10524         gives us an lvalue that we're about to bind to a reference.
10525         Set INNER to indicate pending reference binding on recursive
10526         calls.
10527
10528 2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>
10529
10530         * cp/lex.c: Delete duplicate pending_lang_change.
10531
10532 2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>
10533
10534         * cp/lex.c (handle_pragma_interface, handle_pragma_implementation):
10535         Similarly.
10536         * cp/repo.c (get_base_filename, open_repo_file): Similarly.
10537         * cp/cp-tree.h: Remove file_name_nondirectory prototype.
10538
10539 2001-03-09  Zack Weinberg  <zackw@stanford.edu>
10540
10541         * Make-lang.in: Add dependencies on $(TM_P_H) as appropriate.
10542
10543 2001-03-08  Stan Shebs  <shebs@apple.com>
10544
10545         * cp-tree.h (set_identifier_local_value): Remove unused decl.
10546
10547 2001-03-06  Zack Weinberg  <zackw@stanford.edu>
10548
10549         * spew.c: Remove references to CPP_OSTRING.
10550
10551 2001-03-06  Andrew Haley  <aph@redhat.com>
10552
10553         * typeck.c (convert_arguments): Check that we have an fndecl.
10554
10555 2001-03-05  Andrew Haley  <aph@redhat.com>
10556
10557         * typeck.c (convert_arguments): Don't do ellipsis conversion for
10558         __built_in_constant_p.
10559
10560 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
10561
10562         * typeck.c (build_static_cast): Allow enum to enum conversions
10563         as per DR 128.
10564
10565 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
10566
10567         * class.c (check_field_decls): Pointers to member do not a
10568         non-pod struct make, as per DR 148.
10569
10570 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
10571
10572         * call.c (joust): cp_pedwarn when using gnu extension concerning
10573         worst conversion sequences.
10574
10575 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
10576
10577         * decl.c: Replace all uses of 'boolean' with 'bool'.
10578
10579 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
10580
10581         * lang-specs.h: Add zero initializer for cpp_spec field to
10582         all array elements that need one.  Don't put an #ifdef inside
10583         the initializer list; set a default for CPLUSPLUS_CPP_SPEC and
10584         use it.
10585
10586 2001-03-01  Nathan Sidwell  <nathan@codesourcery.com>
10587
10588         Implement using decls inside template functions.
10589         * decl2.c (validate_nonmember_using_decl): Don't special case
10590         fake_std_node in the global namespace. Don't reject early when
10591         processing a template.
10592         (do_local_using_decl): Add to statement tree. Don't do further
10593         processing when building a template.
10594         * pt.c (tsubst_expr, DECL_STMT case): Deal with USING_DECLs.
10595
10596 2001-03-01  Nathan Sidwell  <nathan@codesourcery.com>
10597
10598         * decl2.c (do_nonmember_using_decl): Don't complain if we find
10599         same function. Do complain about ambiguating extern "C"
10600         declarations.
10601
10602 2001-02-28  Nathan Sidwell  <nathan@codesourcery.com>
10603
10604         Remove floating point and complex type template constant parms.
10605         * pt.c (convert_nontype_argument): Remove REAL_TYPE and
10606         COMPLEX_TYPE extensions.
10607         (invalid_nontype_parm_type_p): Likewise.
10608
10609 2001-02-27  Jeffrey Oldham  <oldham@codesourcery.com>
10610
10611         * except.c (call_eh_info): Revert "match_function"'s type.
10612
10613 2001-02-27  Nathan Sidwell  <nathan@codesourcery.com>
10614
10615         Fix ctor vtable vcall offsets.
10616         * class.c (struct vtbl_init_data_s): Add rtti_binfo member.
10617         (build_rtt_vtbl_entries): Lose RTTI_BINFO parameter.
10618         (get_matching_base): Remove.
10619         (get_original_base): New function.
10620         (build_vtbl_initializer): Initialize vid.rtti_binfo.
10621         Use a virtual thunk for a ctor vtable with an index
10622         (add_vcall_offset_vtbl_entries_1): Check if binfo has lost a
10623         primary base within a constructor vtable. Only set
10624         BV_VCALL_INDEX when not a constructor vtable. Adjust vcall offset
10625         when primary base has been lost.
10626         * cp-tree.h (BINFO_VIRTUALS): Remove ambiguity from comment.
10627
10628 2001-02-26  Jeffrey Oldham  <oldham@codesourcery.com>
10629
10630         * call.c (joust): Ensure more_specialized()'s argument length
10631         parameter has correct value for constructors.
10632
10633 2001-02-26  Nathan Sidwell  <nathan@codesourcery.com>
10634
10635         * except.c (call_eh_info): Cleanup generation of cp_eh_info struct.
10636
10637         * decl.c (mark_inlined_fns): Prototype.
10638
10639 2001-02-22  Mark Mitchell  <mark@codesourcery.com>
10640
10641         * spew.c (yylex): Correct handling of friends.
10642
10643 2001-02-22  Mark Mitchell  <mark@codesourcery.com>
10644
10645         * mangle.c (write_encoding): Pass write_function_type the
10646         FUNCTION_DECL for the function being encoded.
10647         (write_function_type): Pass it along to write_bare_function_type.
10648         (write_bare_function_type): Pass it along to write_method_parms.
10649         (write_method_parms): Don't mangle the compiler-generated
10650         parameters to a constructor or destructor.
10651
10652 2001-02-22  Andreas Jaeger  <aj@suse.de>
10653
10654         * optimize.c: Include toplev.h for
10655         note_deferral_of_defined_inline_function prototype.
10656
10657 2001-02-22  Jakub Jelinek  <jakub@redhat.com>
10658
10659         * cp-tree.h (struct lang_decl_inlined_fns): New.
10660         (struct lang_decls): Add inlined_fns.
10661         (DECL_INLINED_FNS): New macro.
10662         * optimize.c (struct inline_data): Add inlined_fns.
10663         (declare_return_variable): Use VARRAY_ACTIVE_SIZE macro.
10664         (inlinable_function_p): Likewise, fix typo in comment,
10665         function is not inlinable if it already inlined function currently
10666         being optimized.
10667         (expand_call_inline): Add fn to inlined_fns if necessary.
10668         (optimize_function): Initialize inlined_fns.
10669         Save inlined_fns into DECL_INLINED_FNS after expanding inlines.
10670         * decl.c (mark_inlined_fns): New function.
10671         (lang_mark_tree): Call it.
10672
10673 2001-02-21  Jason Merrill  <jason@redhat.com>
10674
10675         * cp-tree.h (struct lang_decl_flags): Remove uninlinable flag.
10676         (DECL_UNINLINABLE): Move to middle-end.
10677
10678         * class.c (clone_function_decl): Set DECL_ABSTRACT on original fn.
10679         * decl.c (duplicate_decls): Preserve DECL_ABSTRACT.
10680         * class.c (build_clone): Set DECL_ABSTRACT_ORIGIN for the clone.
10681         * optimize.c (maybe_clone_body): Set DECL_ABSTRACT_ORIGIN for the
10682         parms and outer BLOCK.  note_deferral_of_defined_inline_function.
10683
10684         * method.c (implicitly_declare_fn): Don't set DECL_ARTIFICIAL on
10685         second parm of op=.
10686
10687 2001-02-19  Mark Mitchell  <mark@codesourcery.com>
10688
10689         * decl2.c (set_decl_namespace): Allow explicit instantiations in
10690         any namespace.
10691
10692 2001-02-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
10693
10694         * optimize.c (expand_call_inline): Don't walk subtrees of type
10695         nodes.
10696
10697 2001-02-18  Mark Mitchell  <mark@codesourcery.com>
10698
10699         * class.c (add_vcall_offset_vtbl_entries_1): Only add one entry
10700         for a destructor.
10701
10702 2001-02-18  Jason Merrill  <jason@redhat.com>
10703
10704         Do put the VTT parameter in DECL_ARGUMENTS.
10705         * cp-tree.h (struct cp_language_function): Add x_vtt_parm.
10706         (current_vtt_parm): New macro.
10707         (struct lang_decl_flags): Add has_vtt_parm_p, remove vtt_parm.
10708         (DECL_HAS_VTT_PARM_P): New macro.
10709         (DECL_VTT_PARM): Remove.
10710         (FUNCTION_FIRST_USER_PARMTYPE, FUNCTION_FIRST_USER_PARM): New macros.
10711         * decl.c (duplicate_decls): Only copy the operator code if
10712         appropriate.
10713         (start_function): Set current_vtt_parm.
10714         (lang_mark_tree): Don't mark vtt_parm.
10715         * decl2.c (maybe_retrofit_in_chrg): Do add the VTT parm to
10716         DECL_ARGUMENTS.  Set DECL_HAS_VTT_PARM_P.
10717         * class.c (build_clone): Maybe remove the VTT parm.
10718         * optimize.c (maybe_clone_body): Set up the VTT parm.
10719         * pt.c (copy_default_args_to_explicit_spec): Preserve the VTT parm.
10720         * call.c (build_over_call): Just allow the VTT arg.
10721         * method.c (make_thunk): Don't set DECL_VTT_PARM.
10722         (do_build_copy_constructor): Use FUNCTION_FIRST_USER_PARM.
10723         (synthesize_method): Use FUNCTION_FIRST_USER_PARMTYPE.
10724         * decl.c (grokdeclarator, copy_args_p, grok_ctor_properties): Likewise.
10725         * error.c (dump_function_decl): Likewise.
10726         * call.c (build_user_type_conversion_1, convert_like_real): Abort
10727         if we try to call a constructor with in-charge or VTT parms.
10728         * method.c (skip_artificial_parms_for): New fn.
10729         * call.c (add_function_candidate, build_over_call): Call it.
10730         * call.c (build_new_method_call): Use current_vtt_parm.
10731         * init.c (expand_virtual_init): Likewise.
10732         * class.c (same_signature_p): No longer static.
10733         * cp-tree.h: Declare it.
10734         * search.c (look_for_overrides_r): Use it.
10735
10736 2001-02-17  Mark Mitchell  <mark@codesourcery.com>
10737
10738         * cp-tree.h (new_abi_rtti_p): Remove.
10739         (name_mangling_version): Likewise.
10740         (flag_do_squangling): Likewise.
10741         * class.c (build_rtti_vtbl_entries): Remove old ABI support.
10742         * decl.c (grokfndecl): Likewise.
10743         * decl2.c (name_mangling_version): Remove.
10744         (flag_do_squangling): Likewise.
10745         (lang_f_options): Remove `squangle'.
10746         (unsupported_options): Add `squangle'.
10747         (cxx_decode_option): Issue a warning about uses of
10748         -fname-mangling-version.
10749         (finish_file): Remove old ABI support.
10750         * pt.c (check_explicit_specialization): Likewise.
10751         (tsubst_decl): Likewise.
10752         * rtti.c (init_rtti_processing): Likewise.
10753         (build_headof): Likewise.
10754         (get_tinfo_decl_dynamic): Likewise.
10755         (tinfo_from_decl): Likewise.
10756         (build_dynamic_cast_1): Likewise.
10757         (synthesize_tinfo_var): Likewise.
10758         * init.c (build_new): Allow enumeration types for the array-bounds
10759         in a direct-new-declarator.
10760
10761         * semantics.c (finish_typeof): Resolve OFFSET_REFs.
10762
10763         * pt.c (check_explicit_specialization): Copy TREE_PRIVATE and
10764         TREE_PROTECTED from the template being specialized.
10765
10766 2001-02-17  Jason Merrill  <jason@redhat.com>
10767
10768         * decl2.c (build_artificial_parm): Set TREE_READONLY.
10769
10770         * decl.c (bad_specifiers): Allow throw specs on things with
10771         pointer-to-function or -member-function type.
10772         * init.c (build_default_init): Don't use a CONSTRUCTOR to initialize
10773         a pmf.
10774
10775 2001-02-17  Mark Mitchell  <mark@codesourcery.com>
10776
10777         * call.c (check_dtor_name): Handle template names correctly.
10778
10779 2001-02-16  Jason Merrill  <jason@redhat.com>
10780
10781         * cp-tree.h (DECL_USE_VTT_PARM): Remove.
10782         * decl2.c (maybe_retrofit_in_chrg): Don't create it.
10783         * optimize.c (maybe_clone_body): Don't substitute it.
10784         * call.c (build_new_method_call): Check in_chrg instead.
10785         * init.c (expand_virtual_init): Likewise.
10786
10787 2001-02-16  Gabriel Dos Reis  <gdr@codesourcery.com>
10788
10789         * decl.c (check_tag_decl): Make sure a typedef for an anonymous
10790         class-type introduces at least a type-name.
10791
10792 2001-02-16  Jakub Jelinek  <jakub@redhat.com>
10793
10794         * call.c (convert_like_real): Create a temporary for non-lvalue.
10795
10796 2001-02-16  Jeffrey Oldham  <oldham@codesourcery.com>
10797
10798         * cp-tree.h: Fix typos in comments.
10799
10800 2001-02-16  Jason Merrill  <jason@redhat.com>
10801
10802         * optimize.c (remap_block): If we're compiling a clone, pass the
10803         new block to insert_block.
10804
10805 2001-02-16  Mark Mitchell  <mark@codesourcery.com>
10806
10807         * semantics.c (finish_asm_stmt): Robustify.
10808
10809 2001-02-15  Mark Mitchell  <mark@codesourcery.com>
10810
10811         * pt.c (push_template_decl_real): Don't remangle the name of a
10812         class template.
10813
10814 2001-02-15  Jim Meyering  <meyering@lucent.com>
10815
10816         * Make-lang.in (c++.install-common): Depend on installdirs.
10817         (c++.install-info): Likewise.
10818         (c++.install-man): Likewise.
10819
10820 2001-02-15  Mark Mitchell  <mark@codesourcery.com>
10821
10822         * typeck2.c (build_m_component_ref): Robustify.
10823
10824 2001-02-15  Alexandre Oliva  <aoliva@redhat.com>
10825
10826         * friend.c (do_friend): Don't take the nested [template] class
10827         into account when deciding whether to warn about the friend
10828         function not referring to a template function.
10829
10830 2001-02-14  Jakub Jelinek  <jakub@redhat.com>
10831
10832         * typeck.c (build_unary_op): Clarify error message.
10833
10834 2001-02-08  Aldy Hernandez  <aldyh@redhat.com>
10835
10836         * parse.y (component_constructor_declarator): allow optional
10837         parentheses around constructor class name.
10838
10839 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
10840
10841         * cp-tree.h (setup_vtbl_ptr): Move prototype to semantics.c
10842         section.
10843         * init.c (emit_base_init): Remove incorrect comment about
10844         virtual bases.
10845         * method.c (make_thunk): Fix comment alignment.
10846
10847 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
10848
10849         Kill remnants of this is variable.
10850         * cp-tree.h (flag_this_is_variable): Remove.
10851         * decl2.c (flag_this_is_variable): Remove.
10852         * class.c (fixed_type_or_null): Add cdtor parm. Adjust.
10853         (build_vbase_path): The path is non-static, even in a cdtor.
10854         (resolves_to_fixed_type_p): Add additional return value.
10855         * search.c (init_vbase_pointers): Adjust.
10856         * tree.c (lvalue_p_1): Adjust.
10857         * typeck.c (mark_addressable): Adjust.
10858
10859 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
10860
10861         * pt.c (unify): Don't check cv quals of array types.
10862
10863 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
10864
10865         * tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to
10866         check whether we already have the type.
10867
10868 2001-02-13  Mark Mitchell  <mark@codesourcery.com>
10869
10870         * cp-tree.h (CLASSTYPE_DESTRUCTORS): Fix typo in comment.
10871         * call.c (build_op_delete_call): Simplify to remove duplicate
10872         code.
10873         * class.c (clone_function_decl): Don't build the deleting variant
10874         of a non-virtual destructor.
10875         * decl.c (finish_destructor_body): Don't call delete if this is a
10876         non-virtual destructor.
10877         * init.c (build_delete): Explicitly call `operator delete' when
10878         deleting an object with a non-virtual destructor.
10879
10880 2001-02-13  Jason Merrill  <jason@redhat.com>
10881
10882         * lang-specs.h: Add more __EXCEPTIONS.
10883
10884 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
10885
10886         * typeck2.c (process_init_constructor): Check
10887         TREE_HAS_CONSTRUCTOR before issuing missing init warning.
10888
10889 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
10890
10891         * pt.c (maybe_adjust_types_for_deduction, DEDUCE_ORDER case):
10892         Remove spurious information in comment. Allow further
10893         adjustments of REFERENCE_TYPE args.
10894
10895 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
10896
10897         * errfn.c (cp_deprecated): Tweak diagnostic text.
10898         * parse.y (new_initializer): Deprecate initializer lists
10899         extension.
10900
10901 2001-02-12  Mark Mitchell  <mark@codesourcery.com>
10902
10903         Remove old ABI support.
10904
10905 2001-02-11  Mark Mitchell  <mark@codesourcery.com>
10906
10907         * decl2.c (flag_vtable_thunks): Always set it to 1.
10908         (flag_new_abi): Likewise.
10909         * lang-specs.h: Remove conditional on ENABLE_NEW_GXX_ABI.
10910
10911         * Makefile.in (g++spec.o): Fix typo.
10912
10913 2001-02-09  Jason Merrill  <jason@redhat.com>
10914
10915         * lang-specs.h: Restore definition of __EXCEPTIONS.
10916
10917 2001-02-08  Jason Merrill  <jason@redhat.com>
10918
10919         * search.c (shared_member_p): New function.
10920         (lookup_field_r): Use it.
10921         * cp-tree.h (SHARED_MEMBER_P): Remove.
10922
10923         * method.c (process_overload_item): Handle template-dependent array
10924         bounds.
10925         * pt.c (type_unification_real): If we end up with undeduced nontype
10926         parms, try again.
10927
10928         * decl.c (lookup_name_real): Tweak warning to refer to decls, not
10929         types.
10930
10931         * typeck2.c (friendly_abort): Don't say anything if we have
10932         earlier errors or sorries.
10933
10934         * decl.c (check_tag_decl): Notice attempts to redefine bool and
10935         wchar_t.  Ignore if in_system_header.
10936
10937         * decl.c (maybe_push_cleanup_level): New fn...
10938         (start_decl_1): ...split out from here.
10939         * cvt.c (build_up_reference): Use it.
10940         * cp-tree.h: Declare it.
10941
10942 2001-02-07  Mark Mitchell  <mark@codesourcery.com>
10943
10944         * lang-specs.h: Use CPLUSPLUS_CPP_SPEC for the preprocessor
10945         spec.
10946
10947 2001-02-06  Nathan Sidwell  <nathan@codesourcery.com>
10948
10949         * pt.c (lookup_template_class): Make sure it's a primary
10950         template or template_template_parm when called from the parser.
10951         (instantiate_template_class): Add assertion.
10952
10953 2001-02-05  Alexandre Oliva  <aoliva@redhat.com>
10954
10955         * method.c (build_mangled_name) [old abi]: Protect flush_repeats()
10956         from error_mark_node.
10957
10958 2001-02-05  Nathan Sidwell  <nathan@codesourcery.com>
10959
10960         Fix specification and implementation bugs in V3 ABI
10961         construction vtables.
10962         * cp-tree.h (flag_dump_class_layout): New flag.
10963         (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH_P): Remove.
10964         (BINFO_LOST_PRIMARY_P): New flag.
10965         (SET_BINFO_NEW_VTABLE_MARKED): Adjust asserts.
10966         (BINFO_PRIMARY_MARKED_P): Rename to ...
10967         (BINFO_PRIMARY_P): ... here.
10968         (binfo_via_virtual): New prototype.
10969         * decl2.c (flag_dump_class_layout): New flag.
10970         (cxx_decode_option): Set it. Adjust -fdump-translation-unit to
10971         use `=' as a file name separator.
10972         * init.c (dfs_initialize_vtbl_ptrs): Walk into virtual primary
10973         bases.
10974         (build_vtbl_address): If this is a virtual primary base, then
10975         get the vtbl of what it is ultimately primary for.
10976         * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Adjust
10977         for BINFO_PRIMARY_P.
10978         (dfs_skip_nonprimary_vbases_markedp): Likewise.
10979         (get_shared_vbase_if_not_primary): Likewise.
10980         (dfs_get_pure_virtuals): Likewise.
10981         (expand_upcast_fixups): Likewise.
10982         (fixup_virtual_upcast_offsets): Likewise.
10983         (dfs_find_vbase_instance): Likewise.
10984         (find_vbase_instance): Likewise.
10985         (binfo_from_vbase): Adjust comment to reflect reality.
10986         (binfo_via_virtual): New function.
10987         * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): New macros
10988         for binfo walking during VTT construction.
10989         (dfs_mark_primary_bases): Remove.
10990         (force_canonical_binfo_r): New function.
10991         (force_canonical_binfo): New function.
10992         (mark_primary_virtual_base): New function.
10993         (mark_primary_bases): Walk in inheritance graph order, use
10994         mark_primary_virtual_base.
10995         (determine_primary_base): Use some more intermediate variables.
10996         (dfs_find_final_overrider): Don't check for overriding along a
10997         virtual path.
10998         (dfs_modify_vtables): Walk into primary virtual bases too.
10999         (walk_subobject_offsets): Adjust for BINFO_PRIMARY_P.
11000         (build_base_fields): Likewise.
11001         (dfs_set_offset_for_unshared_vbases): Likewise.
11002         (layout_virtual_bases): Likewise.
11003         (end_of_class): Likewise.
11004         (finish_struct_1): Call dump_class_hierarchy, if requested.
11005         (dfs_get_primary_binfo): Use BINFO_TYPE for binfos.
11006         (dump_class_hierarchy_r): Add stream parameter. Emit more information.
11007         (dump_class_hierarchy): Add file parameter. Append to file, if
11008         required.
11009         (finish_vtbls): Adjust accumulate_vtbl_inits call.
11010         Use canonical base for virtual bases.
11011         (build_vtt): Add more comments. Adjust build_vtt_inits call.
11012         (build_vtt_inits): Remove VIRTUAL_VTTS_P parm.
11013         Only set BINFO_VPTR_INDEX on top level. Use VTT_TOP_LEVEL_P,
11014         VTT_MARKED_BINFO_P for binfo walking. Use canonical vbase for
11015         virtual VTTs.
11016         (dfs_build_secondary_vptr_vtt_inits): Extract VTT_TOP_LEVEL_P
11017         from DATA.  We want virtual primary bases and all bases via virtual.
11018         Only set BINFO_VPTR_INDEX for top level. Look up from a primary
11019         virtual base when not a construction vtable.
11020         (dfs_ctor_vtable_bases_queue_p): New DFS predicate.
11021         (build_ctor_vtbl_group): Adjust accumulate_vtbl_inits call.
11022         Use canonical bases when processing virtual bases.
11023         (accumulate_vtbl_inits): We're interested in any base via a
11024         virtual path.
11025         (dfs_accumulate_vtbl_inits): If this is a primary virtual base
11026         within a construction vtable, determine what is being overridden.
11027         (build_vtbl_initializer): Add more comments
11028         (add_vcall_offset_vtbl_entries_1): Adjust comment.
11029         (build_rtti_vtbl_entries): Check if the base has lost its
11030         primary.
11031
11032 2001-02-05  Mark Mitchell  <mark@codesourcery.com>
11033
11034         * Makefile.in (g++spec.o): Adjust use of DRIVER_DEFINES.
11035
11036 2001-02-04  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11037
11038         * decl.c (pushdecl): Call abort instead of fatal.
11039         * except.c (decl_is_java_type): Call fatal_error instead of fatal.
11040         * init.c (build_new_1): Likewise.
11041         (build_java_class_ref): Call internal_error and fatal_error, not fatal.
11042         * decl.c (build_typename_type): hash_table_init now returns void.
11043         decl.c (init_decl_processing): Make an error non-fatal.
11044
11045 2001-02-04  Mark Mitchell  <mark@codesourcery.com>
11046
11047         * cp-tree.h (CLASSTYPE_INTERFACE_UNKNOWN): Fix formatting.
11048         Document.
11049         (CLASSTYPE_INTERFACE_KNOWN): Likewise.
11050         (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
11051         (SET_CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
11052         (SET_CLASSTYPE_INTERFACE_KNOWN): Likewise.
11053         * decl.c (maybe_commonize_var): Use the new name-mangling where
11054         appropriate.
11055         * decl2.c (comdat_linkage): Enhance comments.  Make all
11056         compiler-generated things static, if COMDAT is not available.
11057         (get_tinfo_decl): Do not make typeinfo objects that belong in the
11058         library COMDAT.
11059         (tinfo_base_init): Use the correct mangled name for typeinfo
11060         strings, and push them into the global scope.
11061         (typeinfo_in_lib_p): New function.
11062         (synthesize_tinfo_var): Use it.
11063         (create_real_tinfo_var): Likewise.
11064
11065 2001-02-03  Jakub Jelinek  <jakub@redhat.com>
11066
11067         * decl.c (push_class_binding): Use context_for_name_lookup instead
11068         of CP_DECL_CONTEXT.
11069         * search.c (context_for_name_lookup): Remove static.  Check for NULL
11070         context in the loop.
11071         * cp-tree.h (context_for_name_lookup): Add prototype.
11072
11073 2001-02-02  Jakub Jelinek  <jakub@redhat.com>
11074
11075         * cp-tree.h (build_expr_ptr_wrapper, can_free): Remove.
11076         * tree.c (build_expr_ptr_wrapper, can_free, permanent_obstack):
11077         Remove.
11078         * call.c (convert_class_to_reference, build_user_type_conversion_1,
11079         add_warning): Change build_expr_ptr_wrapper to build_ptr_wrapper.
11080
11081 2001-02-02  Mark Mitchell  <mark@codesourcery.com>
11082
11083         * Make-lang.in (g++spec.o): Add DRIVER_DEFINES to the list
11084         of macros used when compiling g++spec.c.
11085         * g++spec.c (lang_specific_driver): Link with the shared
11086         libgcc by default.
11087
11088 2001-01-29  Joseph S. Myers  <jsm28@cam.ac.uk>
11089
11090         * decl2.c (build_expr_from_tree), lex.c (make_pointer_declarator,
11091         make_reference_declarator, make_call_declarator), method.c
11092         (implicitly_declare_fn), parse.y (namespace_using_decl,
11093         notype_unqualified_id, expr_or_declarator, new_type_id,
11094         after_type_declarator, direct_after_type_declarator,
11095         notype_declarator, complex_notype_declarator,
11096         complex_direct_notype_declarator, qualified_id,
11097         notype_qualified_id, overqualified_id, direct_new_declarator,
11098         absdcl, direct_abstract_declarator, conversion_declarator), pt.c
11099         (tsubst), semantics.c (begin_constructor_declarator): Use build_nt
11100         instead of build_parse_node.
11101
11102 2001-01-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11103
11104         * cp-tree.h (cp_tree_index): Delete CPTI_MINUS_ONE.
11105         (minus_one_node): Moved to top level gcc directory.  Renamed
11106         to integer_minus_one_node.
11107
11108         * init.c (init_init_processing): Don't set minus_one_node.
11109         (build_vec_init): Use integer_minus_one_node.
11110
11111         * rtti.c (get_tinfo_decl_dynamic): Likewise.
11112
11113 2001-01-28  Jakub Jelinek  <jakub@redhat.com>
11114
11115         * optimize.c (copy_body_r): If MODIFY_EXPR has both arguments
11116         identical and they would be replaced with constant, remove
11117         MODIFY_EXPR from the tree.
11118
11119 2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11120
11121         * Make-lang.in: Remove all dependencies on defaults.h.
11122         * call.c: Don't include defaults.h.
11123         * decl.c: Likewise.
11124         * decl2.c: Likewise.
11125         * except.c: Likewise.
11126         * pt.c: Likewise.
11127         * rtti.c: Likewise.
11128         * tree.c: Likewise.
11129         * typeck.c: Likewise.
11130
11131 2001-01-25  Jakub Jelinek  <jakub@redhat.com>
11132
11133         * mangle.c (write_mangled_name, write_encoding): Mangle overloaded
11134         operators even in "C" linkage.
11135         * method.c (set_mangled_name_for_decl): Likewise.
11136         * decl.c (grokfndecl): Call set_mangled_name_for_decl even for
11137         overloaded operators in "C" linkage.
11138
11139 2001-01-24  Nathan Sidwell  <nathan@codesourcery.com>
11140
11141         * pt.c (tsubst_decl): Remove IN_DECL parameter.
11142         (tsubst_arg_types): Check parameter is not void.
11143         (tsubst): Adjust tsubst_decl call.
11144
11145 2001-01-24  Nathan Sidwell  <nathan@codesourcery.com>
11146
11147         * call.c (add_builtin_candidate): Quote std properly, from
11148         previous change.
11149
11150 2001-01-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
11151
11152         * pt.c (check_explicit_specialization): Clone constructors and
11153         destructors.
11154
11155 2001-01-23  Nathan Sidwell  <nathan@codesourcery.com>
11156
11157         * decl.c (grokdeclarator): Don't presume DECL_LANG_SPECIFIC
11158         indicates anything special about template depth. Make sure we
11159         only count the user visible template classes.
11160
11161 2001-01-23  Nathan Sidwell  <nathan@codesourcery.com>
11162
11163         * call.c (build_conv): Typo in comment.
11164         (add_builtin_candidate): Add more explanation.
11165         Remove extra test for ENUMERAL_TYPE in {PRE,POST}INCREMENT_EXPR.
11166         Allow ENUMERAL_TYPEs for relops and eqops. Add both candidates
11167         when we have enumeral types.
11168         (add_builtin_candidates): Add more explanation. Add ENUMERAL_TYPE
11169         candidates for relops and eqops.
11170         (joust): Simplify control flow. Allow a non-template user
11171         function to hide a builtin.
11172
11173 2001-01-22  Nathan Sidwell  <nathan@codesourcery.com>
11174
11175         * cp-tree.h (unification_kind_t): Add DEDUCE_ORDER.
11176         (more_specialized): Add deduction parameter.
11177         * call.c (joust): Adjust more_specialized call.
11178         * pt.c (UNIFY_ALLOW_OUTER_MORE_CV_QUAL,
11179         UNIFY_ALLOW_OUTER_LESS_CV_QUAL): New unify flags.
11180         (get_bindings_order): Remove.
11181         (get_bindings_real): Add DEDUCE parameter.
11182         (maybe_adjust_types_for_deduction): Return extra unify flags. Do
11183         REFERENCE_TYPE jig for DEDUCE_ORDER.
11184         (type_unification_real): Deal with DEDUCE_ORDER. Use result of
11185         maybe_adjust_types_for_deduction.
11186         (more_specialized): Add DEDUCE parameter. Call get_bindings_real
11187         directly.
11188         (try_one_overload): Use result of maybe_adjust_types_for_deduction.
11189         (check_cv_quals_for_unify): Use new unify qualifier flags.
11190         (unify): Clear new unify qualifier flags.
11191         (get_bindings_real): Add DEDUCE parameter.
11192         (get_bindings): Adjust call to get_bindings_real.
11193         (get_bindings_overload): Likewise.
11194         (most_specialized_instantiation): Adjust call to
11195         more_specialized.
11196
11197 2001-01-19  Jason Merrill  <jason@redhat.com>
11198
11199         * decl2.c (flag_vtable_thunks): Also depend on ENABLE_NEW_GXX_ABI.
11200
11201         * decl.c (init_decl_processing): Just force -fvtable-thunks on if
11202         -fnew-abi.
11203
11204 2001-01-19  Ute Pelkmann  <scope.muc@t-online.de>
11205
11206         * decl2.c (arg_assoc_class): Fix double iteration logic.
11207
11208 2001-01-19  Jason Merrill  <jason@redhat.com>
11209
11210         * init.c (build_delete): Always call convert_force to strip cv-quals.
11211
11212         * decl2.c (flag_new_abi): Depend on ENABLE_NEW_GXX_ABI.
11213         * lang-specs.h: Default ABI depends on ENABLE_NEW_GXX_ABI.
11214         * g++spec.c: Don't look at ENABLE_NEW_GXX_ABI.
11215
11216 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
11217
11218         * search.c (get_vbase_1): Count only virtual bases.
11219
11220 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
11221
11222         * class.c (duplicate_tag_error): Robustify flag clearing.
11223
11224 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
11225
11226         * cp-tree.h (lookup_template_class): Add complain parm.
11227         * decl.c (lookup_namespace_name): Adjust call to
11228         lookup_template_class.
11229         (make_typename_type): Likewise.
11230         * semantics.c (finish_template_type): Likewise.
11231         * pt.c (lookup_template_class): Add complain parm. Adjust.
11232         (tsubst_aggr_type): Pass COMPLAIN down to lookup_template_class.
11233         (tsubst): Likewise.
11234
11235 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
11236
11237         * pt.c (copy_default_args_to_explicit_spec): Preserve
11238         object's CV quals. Reorganize.
11239
11240 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
11241
11242         * typeck.c (build_modify_expr): Say `initialization' for
11243         INIT_EXPRs.
11244         * init.c (build_default_init): Convert to enumeral type, if
11245         needed.
11246
11247 2001-01-18  Jakub Jelinek  <jakub@redhat.com>
11248
11249         * parse.y (nomods_initdcl0): Properly set things up for
11250         initdcl0_innards.
11251
11252 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
11253
11254         * pt.c (UNIFY_ALLOW_OUTER_LEVEL): New unify flag.
11255         (type_unification_real): Set it.
11256         (unify): Use it.
11257
11258 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
11259
11260         * decl.c (finish_destructor_body): Convert to vbase pointer here.
11261
11262 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
11263
11264         * semantics.c (begin_class_definition): Check we're not inside a
11265         template parm list.
11266
11267 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
11268
11269         * tree.c (walk_tree, TREE_LIST): Don't walk the TREE_PURPOSE of
11270         BASELINK_P.
11271
11272 2001-01-16  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
11273
11274         * typeck.c (build_function_call_real): Call fold on the CALL_EXPR.
11275         * call.c (build_over_call): Add comment.
11276
11277 2001-01-16 Daniel Berlin <dberlin@redhat.com>
11278
11279         * cvt.c (ocp_convert): Handle vector type conversion
11280         * typeck2.c (digest_init): Handle vector type initializations
11281
11282 2001-01-16  Phil Edwards  <pme@sources.redhat.com>
11283
11284         * g++spec.c:  Don't add libraries needlessly if -fsyntax-only
11285           was given.
11286
11287 2001-01-15  Nathan Sidwell  <nathan@codesourcery.com>
11288
11289         * pt.c (check_nontype_parm): Rename to ...
11290         (invalid_nontype_parm_type_p): ... here.
11291         (process_template_parm): Adjust.
11292         (convert_template_argument): Adjust.
11293
11294 2001-01-15  Nathan Sidwell  <nathan@codesourcery.com>
11295
11296         * pt.c (check_nontype_parm): New function.
11297         (process_template_parm): Use it.
11298         (convert_template_argument): Use it.
11299         (convert_nontype_argument, RECORD_TYPE): Assert it's a ptr to
11300         member.
11301
11302 2001-01-14  Jeffrey Oldham  <oldham@codesourcery.com>
11303
11304         * tree.c: Add defaults.h
11305         (cp_valid_lang_attribute): Incorporate SUPPORTS_INIT_PRIORITY.
11306         * Make-lang.in (cp/tree.o): Add defaults.h.
11307
11308 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
11309
11310         * Make-lang.in (CXX_C_OBJS): Add c-format.o.
11311
11312 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
11313
11314         * g++.1: Change to be ".so man1/gcc.1".
11315
11316 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
11317
11318         * Make-lang.in (c++.info, c++.install-info): Build and install g++
11319         internals info.
11320         (c++.uninstall, c++.maintainer-clean): Remove g++ internals info.
11321         ($(srcdir)/cp/g++int.info): New target.
11322         * gxxint.texi: Add info directory entry.  Use @@ in email address.
11323         * .cvsignore: Update.
11324
11325 2001-01-12  Nathan Sidwell  <nathan@codesourcery.com>
11326
11327         * typeck.c (build_c_cast): Do template processing earlier.
11328         Always pedwarn on array casts.
11329
11330 2001-01-12  Nathan Sidwell  <nathan@codesourcery.com>
11331
11332         * friend.c (make_friend_class): Make sure a templated class is
11333         actually a template.
11334
11335 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
11336
11337         * decl2.c (get_guard): Set linkage from guarded decl.
11338
11339 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
11340
11341         * call.c (convert_default_arg): Check for unprocessed
11342         DEFAULT_ARG.
11343         * cp-tree.h (replace_defarg): Move to spew.c.
11344         (maybe_snarf_defarg, add_defarg_fn, do_pending_defargs): Move to
11345         spew.c, which is where they really are.
11346         (done_pending_defargs): Declare.
11347         (unprocessed_defarg_fn): Declare.
11348         * decl.c (replace_defarg): Move to spew.c
11349         * parse.y (structsp): Call done_pending_defargs.
11350         * spew.c (defarg_fns): Rearrange list structure.
11351         (defarg_fnsdone): New static variable.
11352         (defarg_depfns): New static variable.
11353         (init_spew): Adjust.
11354         (add_defarg_fn): Store the type in TREE_TYPE.
11355         (do_pending_defargs): Detect and deal with ordering constraints
11356         and circularity.
11357         (done_pending_defargs): New function.
11358         (unprocessed_defarg_fn): New function.
11359         (replace_defarg): Moved from decl.c. Robustify. Don't save
11360         if circularity detected.
11361
11362 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
11363
11364         * pt.c (unify): Check array has a domain, before checking
11365         whether it is variable sized.
11366
11367 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
11368
11369         * decl.c (grokparms): Unobfuscate and get correct diagnostic for
11370         parameters with pointers to arrays of unknown bound.
11371
11372 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
11373
11374         * parse.y (template_parm_header, template_spec_header): New
11375         reductions. Split out from ...
11376         (template_header): ... here. Use them.
11377         (template_template_parm): Use template_parm_header.
11378         * semantics.c (finish_template_template_parm): Add assert.
11379
11380 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
11381
11382         * mangle.c (write_builtin_type): Fix thinko.
11383
11384         * pt.c (copy_default_args_to_explicit_spec_1): New function.
11385         (copy_default_args_to_explicit_spec): Likewise.
11386         (check_explicit_specialization): Use it.
11387
11388         * class.c (finish_struct_1):  Remove last argument in call to
11389         make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
11390         * decl.c (builtin_function): Likewise.
11391         (build_cp_library_fn): Likewise.
11392         (check_initializer): Likewise.
11393         (make_rtl_for_nonlocal_decl): Likewise.
11394         (cp_finish_decl): Likewise.
11395         (start_function): Likewise.
11396         * decl2.c (finish_anon_union): Likewise.
11397         * friend.c (do_friend): Likewise.
11398         * init.c (build_java_class_ref): Likewise.
11399         * method.c (make_thunk): Likewise.
11400         * pt.c (tsubst_friend_function): Likewise.
11401         * semantics.c (expand_body): Likewise.
11402
11403 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
11404
11405         * cp-tree.h (DECL_CLONED_FUNCTION_P): Avoid wild reads by not
11406         looking at DECL_CLONED_FUNCTION for non-functions.
11407
11408 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
11409
11410         * error.c (dump_template_parameter): Use parm to determine how
11411         to print default value.
11412
11413 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
11414
11415         * class.c (duplicate_tag_error): Clear more flags.
11416
11417 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
11418
11419         * call.c (build_new_method_call): Use binfo_for_vbase.
11420
11421 2001-01-10  Joseph S. Myers  <jsm28@cam.ac.uk>
11422
11423         * cp-tree.h (flag_cond_mismatch): Don't declare.
11424         * decl2.c (flag_cond_mismatch): Don't define.
11425         (lang_f_options): Remove cond-mismatch.
11426         (unsupported_options): Add cond-mismatch.
11427
11428 2001-01-09  Nathan Sidwell  <nathan@codesourcery.com>
11429
11430         * class.c (handle_using_decl): Reject using of constructor name
11431         of sourcing class. Allow injecting of a method with same name as
11432         nested class. Fixup error messages.
11433
11434 2001-01-09  Joseph S. Myers  <jsm28@cam.ac.uk>
11435
11436         * decl2.c (lang_decode_option): Handle -Wformat=2.
11437
11438 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
11439
11440         * cp-tree.h (lang_decl_flags): Rename defined_in_class to
11441         initialized_in_class.
11442         (DECL_DEFINED_IN_CLASS_P): Rename to ...
11443         (DECL_INITIALIZED_IN_CLASS_P): ... here, to reflect true meaning.
11444         * decl.c (duplicate_decls): Preseve DECL_INITIALIZED_IN_CLASS_P.
11445         (cp_finish_decl): Adjust for DECL_INITIALIZED_IN_CLASS_P.
11446         * pt.c (check_default_tmpl_args): Adjust for
11447         DECL_INITIALIZED_IN_CLASS_P.
11448         (instantiate_class_template): Likewise.
11449         (instantiate_decl): Check DECL_INITIALIZED_IN_CLASS_P.
11450
11451         * class.c (finish_struct): Constify saved_filename.
11452
11453 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
11454
11455         * class.c (duplicate_tag_error): Adjust diagnostic.
11456         (finish_struct): Locally set location to start of struct.
11457         * decl.c (fixup_anonymous_aggr): Use cp_error_at.
11458
11459 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
11460
11461         * decl.c (struct binding_level): Adjust class_shadowed comments
11462         to reflect reality.
11463         (push_class_level_binding): Adjust comments to reflect reality.
11464         Set IDENTIFIER_CLASS_VALUE when replacing an existing binding.
11465         Don't set TREE_VALUE on the class_shadowed list.
11466
11467 2001-01-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11468
11469         * decl2.c (acceptable_java_type): Allow references too.
11470         * init.c (build_java_class_ref): When using the new ABI, search
11471         `class$' and have it mangled with `mangle_decl.'
11472         * mangle.c (write_java_integer_type_codes): New function.
11473         (write_builtin_type): Detect and mangle Java integer and real
11474         types.
11475
11476 2001-01-07  Mark Mitchell  <mark@codesourcery.com>
11477
11478         * decl2.c (grokfield): Don't accept `asm' specifiers for
11479         non-static data members.
11480
11481 2001-01-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11482
11483         * expr.c (cplus_expand_expr): Don't reset `target'.
11484
11485 2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>
11486
11487         * cp/decl2.c (cxx_post_options): Call cpp_post_options.
11488
11489 2001-01-05  Nathan Sidwell  <nathan@codesourcery.com>
11490
11491         * parse.y (template_datadef): Check for error_mark_node.
11492
11493 2001-01-05  Nathan Sidwell  <nathan@codesourcery.com>
11494
11495         * cp-tree.def (DEFAULT_ARG): Make `x' class.
11496
11497 2001-01-04  Joseph S. Myers  <jsm28@cam.ac.uk>
11498
11499         * decl.c (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Don't define.
11500         (record_builtin_type): Make non-static.
11501         (flag_short_double): Don't declare.
11502         (init_decl_processing): Remove the creation of many tree nodes now
11503         in c_common_nodes_and_builtins.
11504         (build_void_list_node): New function.
11505         * decl2.c (flag_short_double, flag_short_wchar): Don't define.
11506         * cp-tree.h (flag_short_wchar): Don't declare.
11507
11508 2001-01-04  Mark Mitchell  <mark@codesourcery.com>
11509
11510         * call.c (build_conv): Don't use build1 for USER_CONV.
11511         * pt.c (tsubst_copy): Or for PREINCREMENT_EXPR and similar nodes.
11512
11513 2001-01-03  Joseph S. Myers  <jsm28@cam.ac.uk>
11514
11515         * lex.c (lang_init): Call c_common_lang_init.
11516
11517 2001-01-03  Nathan Sidwell  <nathan@codesourcery.com>
11518
11519         * search.c (lookup_fnfields_here): Remove.
11520         (look_for_overrides_r): Use lookup_fnfields_1.
11521         Ignore functions from using declarations.
11522
11523 2001-01-03  Nathan Sidwell  <nathan@codesourcery.com>
11524
11525         Implement exceptions specifiers for implicit member functions.
11526         * cp-tree.h (merge_exceptions_specifiers): Declare new function.
11527         * method.c (synthesize_exception_spec): New function.
11528         (locate_dtor, locate_ctor, locate_copy): New functions.
11529         (implicitly_declare_fn): Generate the exception spec too.
11530         * search.c (check_final_overrider): Check artificial functions
11531         too.
11532         * typeck2.c (merge_exception_specifiers): New function.
11533
11534 2001-01-03  Jason Merrill  <jason@redhat.com>
11535
11536         * init.c (build_default_init): New fn.
11537         (perform_member_init): Split out from here.
11538         (build_new_1): Use it.  Simplify initialization logic.
11539         (build_vec_init): Take an array, rather than a pointer and maxindex.
11540         Speed up simple initializations.  Don't clean up if we're assigning.
11541         * cp-tree.h: Adjust.
11542         * decl2.c (do_static_initialization): Remove TREE_VEC case.
11543         * parse.y (new_initializer): Return void_zero_node for ().
11544         * typeck.c (build_modify_expr): Handle getting a CONSTRUCTOR.
11545         * typeck2.c (digest_init): Only complain about user-written
11546         CONSTRUCTORs.
11547
11548 2000-12-22  Mike Stump  <mrs@wrs.com>
11549
11550         * decl2.c: (max_tinst_depth): Increase to 50.
11551
11552 2001-01-02  Mark Mitchell  <mark@codesourcery.com>
11553
11554         * class.c (invalidate_class_lookup_cache): Zero the
11555         previous_class_values.
11556         * cp-tree.h (TMPL_PARMS_DEPTH): Use TREE_INT_CST_LOW, not
11557         TREE_INT_CST_HIGH.
11558         (CLASSTYPE_TEMPLATE_LEVEL): Likewise.
11559         * decl.c (free_bindings): New variable.
11560         (push_binding): Don't create a new binding if we have one on the
11561         free list.
11562         (pop_binding): Put old bindings on the free list.
11563         (init_decl_processing): Use size_int, not build_int_2.
11564         Register free_bindings as a GC root.
11565         (cp_make_fname_decl): Use size_int, not build_int_2.
11566         (push_inline_template_parms_recursive): Likewise.
11567         (end_template_parm_list): Likewise.
11568         (for_each_template_parm): Do not use walk_tree_without_duplicates.
11569         (tsubst_template_parms): Use size_int, not build_int_2.
11570         (tsubst): Likewise.
11571         * rtti.c (get_vmi_pseudo_type_info): Likewise.
11572
11573 2001-01-02  Richard Henderson  <rth@redhat.com>
11574
11575         * parse.y (asm): Set ASM_INPUT_P.
11576
11577 2001-01-02  Jason Merrill  <jason@redhat.com>
11578
11579         * tree.c (cp_valid_lang_attribute): Don't set CLASSTYPE_COM_INTERFACE
11580         for v3 ABI.
11581
11582         * typeck.c (cp_truthvalue_conversion): New fn.
11583         * cvt.c (ocp_convert): Use it.
11584
11585         * cp-tree.h: Lose c-common.c decls.
11586
11587         * typeck.c (build_unary_op): Restore old &a.f diagnostic code.
11588         * cvt.c (convert_to_void): Use type_unknown_p.
11589
11590         * typeck.c (strip_all_pointer_quals): Also strip quals from
11591         pointer-to-member types.
11592
11593         * Make-lang.in (cp/TAGS): Use --no-globals.  Ignore parse.c, and treat
11594         parse.y as C.
11595
11596         * call.c (build_new_method_call): Do evaluate the object parameter
11597         when accessing a static member.
11598         * typeck.c (build_component_ref): Likewise.
11599
11600 2001-01-02  Andreas Jaeger  <aj@suse.de>
11601
11602         * decl.c (cp_missing_noreturn_ok_p): New.
11603         (init_decl_processing): Set lang_missing_noreturn_ok_p.
11604
11605 2000-12-29  Jakub Jelinek  <jakub@redhat.com>
11606
11607         * decl.c (init_decl_processing): Fix sign of wchar_type_node.
11608
11609 2000-12-29  Mark Mitchell  <mark@codesourcery.com>
11610
11611         * class.c (pushclass): Remove #if 0'd code.
11612         * cp-tree.h (overload_template_name): Remove.
11613         * decl.c (store_bindings): Simplify.
11614         (pop_from_top_level): Likewise.
11615         * pt.c (overload_template_name): Remove.
11616         (instantiate_decl): Don't call push_to_top_level if it's not
11617         needed.
11618
11619 2000-12-28  Mark Mitchell  <mark@codesourcery.com>
11620
11621         * pt.c (register_local_specialization): Don't return a value.
11622         (lookup_template_class): Use move-to-front heuristic when looking
11623         up template instantiations.
11624         (instantiate_decl): Only push_to_top_level when we're actually
11625         going to instantiate the template.
11626
11627 2000-12-29  Hans-Peter Nilsson  <hp@bitrange.com>
11628
11629         * search.c (binfo_for_vtable): Return least derived class, not
11630         most.  Handle secondary vtables.
11631
11632 2000-12-22  Jason Merrill  <jason@redhat.com>
11633
11634         * pt.c (more_specialized): Don't optimize len==0.
11635         (fn_type_unification): If we're adding the return type, increase len.
11636
11637         * typeck.c (build_binary_op): Fix pmf comparison logic.
11638
11639         * call.c (joust): Use DECL_NONSTATIC_MEMBER_FUNCTION_P, not
11640         DECL_STATIC_FUNCTION_P.
11641
11642         * semantics.c (genrtl_finish_function): Don't try to jump to
11643         return_label unless it exists.
11644
11645         In partial ordering for a call, ignore parms for which we don't have
11646         a real argument.
11647         * call.c (joust): Pass len to more_specialized.
11648         (add_template_candidate_real): Strip 'this', pass len.
11649         * pt.c (more_specialized): Pass len down.  Lose explicit_args parm.
11650         (get_bindings_order): New fn.  Pass len down.
11651         (get_bindings_real): Strip 'this', pass len.
11652         (fn_type_unification): Likewise.
11653         (type_unification_real): Succeed after checking 'len' args.
11654         (most_specialized_instantiation): Lose explicit_args parm.
11655         * class.c (resolve_address_of_overloaded_function): Strip 'this',
11656         pass len.
11657
11658 2000-12-21  Jason Merrill  <jason@redhat.com>
11659
11660         * pt.c (tsubst_decl): A FUNCTION_DECL has DECL_RESULT, not
11661         DECL_TEMPLATE_RESULT.
11662
11663         * search.c (lookup_field_r): Call lookup_fnfields_1, not
11664         lookup_fnfields_here.
11665
11666         * parse.y (typename_sub2): Return the TYPE_DECL, not the type.
11667
11668         * call.c (build_object_call): Also allow conversions that return
11669         reference to pointer to function.
11670         (add_conv_candidate): Handle totype being ref to ptr to fn.
11671         (build_field_call): Also allow members of type reference to function.
11672         Lose support for calling pointer to METHOD_TYPE fields.
11673
11674         * error.c (dump_expr): Handle *_CAST_EXPR.
11675
11676         * typeck2.c (build_scoped_ref): Always convert to the naming class.
11677
11678         * tree.c (break_out_cleanups): Lose.
11679         * cp-tree.h: Remove prototype.
11680         * typeck.c (build_component_ref): Don't break_out_cleanups.
11681         (build_compound_expr): Likewise.
11682         * semantics.c (finish_expr_stmt): Likewise.
11683
11684 2000-12-20  Richard Henderson  <rth@redhat.com>
11685
11686         * cp-tree.h: Update declarations.
11687         * decl.c (finish_case_label): Return the new stmt node.
11688         * semantics.c (finish_goto_stmt): Likewise.
11689         (finish_expr_stmt, finish_return_stmt): Likewise.
11690         (finish_break_stmt, finish_continue_stmt): Likewise.
11691         (finish_asm_stmt): Likewise.
11692         * parse.y (already_scoped_stmt): Set STMT_LINENO.
11693         (compstmt, implicitly_scoped_stmt, stmt): Likewise.
11694         (simple_if, simple_stmt): Return the new stmt node.
11695         (save_lineno): New.
11696
11697 2000-12-18  Joseph S. Myers  <jsm28@cam.ac.uk>
11698
11699         * cp-tree.h: Don't declare warn_long_long.
11700
11701 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
11702
11703         * tree.c (no_linkage_helper): Use CLASS_TYPE_P instead of
11704         IS_AGGR_TYPE.
11705
11706 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
11707
11708         * pt.c (unify): Handle when both ARG and PARM are
11709         BOUND_TEMPLATE_TEMPLATE_PARM.
11710
11711 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
11712
11713         * pt.c (reduce_template_parm_level): Set DECL_ARTIFICIAL and
11714         DECL_TEMPLATE_PARM_P.
11715
11716 2000-12-15  Jason Merrill  <jason@redhat.com>
11717
11718         * init.c (build_new_1): Reorganize.  Now with 100% fewer SAVE_EXPRs!
11719
11720         * init.c (build_new_1): Don't strip quals from type.
11721
11722         * decl.c (pushdecl): Don't check for linkage on a non-decl.
11723
11724         * call.c (build_op_delete_call): See through ARRAY_TYPEs.
11725
11726         * call.c (build_new_function_call): Lose space before paren in
11727         error message.
11728         (build_new_method_call): Likewise.
11729
11730         * typeck2.c (build_m_component_ref): Propagate quals from datum.
11731
11732 2000-12-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
11733
11734         * pt.c (check_explicit_specialization): Propagate default
11735         function arguments to explicit specializations.
11736
11737 2000-12-13  DJ Delorie  <dj@redhat.com>
11738
11739         * typeck.c (build_binary_op): Do signed/unsigned warnings for >?
11740         and <? operators.
11741
11742 2000-12-08  Jason Merrill  <jason@redhat.com>
11743
11744         * error.c (dump_function_name): Don't let the user see __comp_ctor.
11745
11746         Clean up copy-initialization in overloading code.
11747         * call.c (build_user_type_conversion_1): Die if we are asked to
11748         convert to the same or a base type.
11749         (implicit_conversion): Avoid doing so.  Lose reference binding code.
11750         (convert_like_real): Treat BASE_CONV and RVALUE_CONV as implicit
11751         direct-initialization.  Also do direct-init part of copy-init.
11752         (build_user_type_conversion): Don't provide context to convert_like.
11753         * cvt.c (ocp_convert): build_user_type_conversion will now provide
11754         the constructor call for copy-init.
11755
11756         * pt.c (tsubst_decl): Call clone_function_decl here if this is an
11757         instantiation of a member template.
11758         (do_decl_instantiation): Not here.
11759
11760 2000-12-07  Nathan Sidwell  <nathan@codesourcery.com>
11761
11762         * class.c (check_field_decls): Don't special case anonymous
11763         fields in error messages.
11764         (note_name_declared_in_class): Use %D on diagnostic.
11765
11766         * tree.c (pod_type_p): Use strip_array_types.
11767         (cp_valid_lang_attribute): Likewise.
11768         * typeck.c (cp_type_quals): Strip arrays separately, to avoid
11769         multiple evaluations.
11770         (cp_has_mutable_p): Use strip_array_types.
11771
11772 2000-12-07  Nathan Sidwell  <nathan@codesourcery.com>
11773
11774         * cp-tree.h (sufficient_parms_p): Declare new function.
11775         * call.c (sufficient_parms_p): New function, broken out of ...
11776         (add_function_candidate): ... here. Use it.
11777         (add_conv_candidate): Use it.
11778         * decl.c (grok_ctor_properties): Use it.
11779
11780 2000-12-07  Jakub Jelinek  <jakub@redhat.com>
11781
11782         * optimize.c (copy_body_r): Set STMT_IS_FULL_EXPR_P on EXPR_STMT.
11783
11784 2000-12-07  Joseph S. Myers  <jsm28@cam.ac.uk>
11785
11786         * decl2.c (lang_decode_option): Handle -Wformat-security.
11787
11788 2000-12-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
11789
11790         * pt.c (verify_class_unification): New function.
11791         (get_class_bindings): Use it.
11792         (try_class_unification): Tidy.
11793         (unify): Handle when argument of a template-id is not
11794         template parameter dependent.
11795         (template_args_equal): Handle when TREE_CODE's do not match.
11796
11797 2000-12-06  Alexandre Oliva  <aoliva@redhat.com>
11798
11799         * lang-specs.h (c++): When invoking the stand-alone preprocessor
11800         for -save-temps, pass all relevant -Defines to it, and then don't
11801         pass them to cc1plus.
11802
11803 2000-12-05  Will Cohen  <wcohen@redhat.com>
11804
11805         * decl.c (finish_case_label): Cleared
11806         more_cleanups_ok in surrounding function scopes.
11807         (define_label): Likewise.
11808
11809 2000-12-05  Nathan Sidwell  <nathan@codesourcery.com>
11810
11811         * cp-tree.h (IDENTIFIER_VIRTUAL_P): Document.
11812         (get_matching_virtual): Remove.
11813         (look_for_overrides): Declare new function.
11814         * decl.c (grokfndecl): Don't set IDENTIFIER_VIRTUAL_P or
11815         DECL_VINDEX here.
11816         * class.c (check_for_override): Move base class iteration code
11817         to look_for_overrides.
11818         * search.c (next_baselink): Remove.
11819         (get_virtuals_named_this): Remove.
11820         (get_virtual_destructor): Remove.
11821         (tree_has_any_destructors_p): Remove.
11822         (struct gvnt_info): Remove.
11823         (check_final_overrider): Remove `virtual' from error messages.
11824         (get_matching_virtuals): Remove. Move functionality to ...
11825         (look_for_overrides): ... here, and ...
11826         (look_for_overrides_r): ... here. Set DECL_VIRTUAL_P, if found
11827         to be overriding.
11828
11829 2000-12-05  Nathan Sidwell  <nathan@codesourcery.com>
11830
11831         * typeck.c (get_delta_difference): If via a virtual base,
11832         return zero.
11833         * cvt.c (cp_convert_to_pointer): If via a virtual base, do no
11834         adjustment.
11835
11836 2000-12-04  Richard Henderson  <rth@redhat.com>
11837
11838         * error.c (dump_tree): Use output_add_string not OB_PUTS.
11839
11840 2000-12-04  Jason Merrill  <jason@redhat.com>
11841
11842         * mangle.c (write_type): Mangle VECTOR_TYPE with "U8__vector".
11843         (write_builtin_type): Pass intSI_type_node and the like through
11844         type_for_mode.
11845         * method.c (process_overload_item): Mangle VECTOR_TYPEs with 'o'.
11846         Pass intSI_type_node and the like through type_for_mode.
11847         * decl2.c (arg_assoc_type): Handle VECTOR_TYPE like COMPLEX_TYPE.
11848         * pt.c (tsubst, unify): Likewise.
11849         * tree.c (walk_tree): Likewise.
11850         * error.c (dump_type): Likewise.
11851         (dump_type_prefix, dump_type_suffix): Don't bother with VECTOR_TYPE.
11852
11853         * Make-lang.in: Tweak top comment for emacs.
11854         (cp/TAGS): Restore.
11855
11856         * except.c (expand_throw): Use push_throw_library_fn for _Jv_Throw.
11857
11858         * class.c (clone_function_decl): Robustify.
11859
11860 2000-12-04  Michael Matz  <matzmich@cs.tu-berlin.de>
11861
11862         * decl.c (store_bindings): Only search in the non modified
11863         old_bindings for duplicates.
11864
11865 2000-12-04  Nathan Sidwell  <nathan@codesourcery.com>
11866
11867         * error.c (dump_function_decl): Use DECL_VIRTUAL_P, not
11868         TYPE_POLYMORPHIC_P.
11869
11870         * typeck.c (build_static_cast): Remove unused variable.
11871
11872 2000-12-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
11873
11874         * pt.c: Fix typo in comment.
11875
11876 2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>
11877
11878         * decl2.c (warn_format): Remove definition.
11879         (lang_decode_option): Handle -Wformat-nonliteral,
11880         -Wno-format-extra-args and -Wno-format-y2k.  Use set_Wformat.
11881
11882 2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>
11883
11884         * decl.c (WINT_TYPE, INTMAX_TYPE, UINTMAX_TYPE): Don't define.
11885         (init_decl_processing): Don't create string_type_node,
11886         const_string_type_node, wint_type_node, intmax_type_node,
11887         uintmax_type_node, default_function_type, ptrdiff_type_node and
11888         unsigned_ptrdiff_type_node.  Adjust position of call to
11889         c_common_nodes_and_builtins.
11890         (identifier_global_value): New function.
11891
11892 2000-12-01  Nathan Sidwell  <nathan@codesourcery.com>
11893
11894         * call.c (standard_conversion): Reject pointer to member
11895         conversions from ambiguous, inaccessible or virtual bases.
11896         * typeck.c (build_static_cast): Don't check pointers to members
11897         specially.
11898
11899 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
11900
11901         * method.c (do_build_copy_constructor): Preserve cv
11902         qualifications when accessing source object members.
11903         (do_build_assign_ref): Likewise. Remove separate diagnostics for
11904         unnamed fields.
11905
11906 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
11907
11908         * method.c (do_build_assign_ref): Construct appropriately
11909         CV-qualified base reference. Don't allow const casts in base
11910         conversion.
11911
11912 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
11913
11914         * call.c (build_over_call): Use VOID_TYPE_P. Don't die on
11915         incomplete return type.
11916
11917 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
11918
11919         * parse.y (base_class.1): Produce a _TYPE not a _DECL.
11920         * semantics.c (finish_base_specifier): Accept a _TYPE not a
11921         _DECL.
11922
11923 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
11924
11925         * spew.c (yyerror): Cope if yylval.ttype is NULL.
11926
11927 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
11928
11929         * decl.c (grokdeclarator): Diagnose undefined template contexts.
11930
11931 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
11932
11933         * decl.c (grokdeclarator): Do type access control on friend
11934         class.
11935
11936 2000-11-27  Nathan Sidwell  <nathan@codesourcery.com>
11937
11938         * decl.c (grokfndecl): Undo COMPONENT_REF damage caused by
11939         bison parser ickiness.
11940         * pt.c (tsubst_friend_function): Enter namespace scope when
11941         tsubsting the function name.
11942         * cp-tree.h (DECL_TI_TEMPLATE): Update comment to reflect reality.
11943
11944 2000-11-27  Nathan Sidwell  <nathan@codesourcery.com>
11945
11946         * cp-tree.h (binfo_from_vbase): Return the virtual base's binfo.
11947         * cvt.c (cp_convert_to_pointer): Add force parameter.
11948         Allow conversions via virtual base if forced.
11949         (convert_to_pointer_force): Adjust call to cp_convert_to_pointer.
11950         (ocp_convert): Likewise.
11951         * search.c (binfo_from_vbase): Return the virtual base's binfo.
11952         * typeck.c (get_delta_difference): Adjust handling of virtual
11953         bases.
11954
11955 2000-11-26  Mark Mitchell  <mark@codesourcery.com>
11956
11957         * tree.c (struct list_hash): Remove.
11958         (list_hash_table): Make it be an htab.
11959         (struct list_proxy): New type.
11960         (list_hash_eq): New function.
11961         (list_hash_pieces): Renamed from ...
11962         (list_hash): ... this.
11963         (list_hash_lookup): Remove.
11964         (list_hash_add): Remove.
11965         (hash_tree_cons): Use the generic hashtable.
11966         (mark_list_hash): Remove.
11967         (init_tree): Create the hashtable.
11968
11969 2000-11-25  Joseph S. Myers  <jsm28@cam.ac.uk>
11970
11971         * method.c (build_mangled_C9x_name): Rename to
11972         build_mangled_C99_name.  Change C9X references in comments to
11973         refer to C99.
11974
11975 2000-11-24  Nathan Sidwell  <nathan@codesourcery.com>
11976
11977         * parse.y (unary_expr): Move VA_ARG from here ...
11978         (primary): ... to here.
11979
11980 2000-11-24  Nathan Sidwell  <nathan@codesourcery.com>
11981
11982         * semantics.c (finish_id_expr): If type is error_mark, return
11983         error_mark.
11984
11985 2000-11-23  Nathan Sidwell  <nathan@codesourcery.com>
11986
11987         * pt.c (lookup_template_class): Simplify loop exit constructs.
11988         Cope when there is no partial instantiation of a template
11989         template member.
11990
11991 2000-11-23  J"orn Rennecke <amylaar@redhat.com>
11992
11993         * Make-lang.in (g++spec.o, cxxmain.o): Depend on $(CONFIG_H).
11994
11995 2000-11-22  Mark Mitchell  <mark@codesourcery.com>
11996
11997         * mangle.c (mangle_conv_op_name_for_type): Don't use `__op'
11998         prefix.
11999
12000         * pt.c (do_decl_instantiate): Explicitly clone constructors and
12001         destructors that haven't already been cloned.
12002
12003 2000-11-20  Richard Henderson  <rth@redhat.com>
12004
12005         * parse.y (yyparse_1): Rename the parser entry point.
12006
12007 2000-11-20  Alex Samuel  <samuel@codesourcery.com>
12008
12009         * mangle.c (write_name): Use <unscoped-name> for names directly in
12010         function scope.
12011         (write_unscoped_name): Accept names directly in function scope.
12012
12013 2000-11-20  Nathan Sidwell  <nathan@codesourcery.com>
12014
12015         * lex.c (rid_to_yy, RID_EXPORT): Make unique keyword.
12016         * parse.y (extdef): Add EXPORT reduction.
12017         * spew.c (yylex): Don't skip export here.
12018
12019 2000-11-19  Mark Mitchell  <mark@codesourcery.com>
12020
12021         * decl.c (init_decl_processing): Correct name of pure virtual
12022         function under the new ABI.
12023         * rtti.c (throw_bad_cast): Likewise, for bad cast function.
12024         (throw_bad_typeid): Likewise for bad typeid function.
12025
12026 2000-11-18  Mark Mitchell  <mark@codesourcery.com>
12027
12028         * decl.c (grokparms): Don't even function types of `void' type,
12029         either.
12030         * mangle.c (write_type): Don't crash when confronted with the
12031         error_mark_node.
12032
12033         * decl.c (grokparms): Don't create parameters of `void' type.
12034
12035 2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
12036
12037         * lex.c (mark_impl_file_chain): Delete.
12038         (init_parse): Remove call to ggc_add_string_root.  No need to
12039         ggc_strdup a string constant.  Do not add impl_file_chain to GC
12040         roots.
12041         (handle_pragma_implementation): No need to ggc_strdup main_filename.
12042
12043 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
12044
12045         * pt.c (tsubst_expr, DECL_STMT): Instantiate decl's type.
12046
12047 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
12048
12049         * cp-tree.h (PARMLIST_ELLIPSIS_P): New macro.
12050         * decl.c (grokdeclarator): Don't reject void parms here.
12051         (require_complete_types_for_parms): Simplify, use
12052         complete_type_or_else.
12053         (grokparms): Remove bitrot. Remove funcdef parm.
12054         Deal with ellipsis parm lists here.
12055         * semantics.c (finish_parmlist): Don't append void_list_node
12056         here. Set PARMLIST_ELLIPSIS_P.
12057
12058 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
12059
12060         * typeck2.c (incomplete_type_error): Reorganize to avoid
12061         excessive diagnostics.
12062
12063 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
12064
12065         * lex.c (struct impl_files, internal_filename): Constify a char *.
12066
12067 2000-11-16  Mark Mitchell  <mark@codesourcery.com>
12068
12069         * mangle.c (write_special_name_constructor): Don't generate
12070         assembler junk when confronted with an old-style constructor.
12071         (write_special_name_destructor): Likewise.
12072         (mangle_decl_string): Do it here instead.
12073
12074 2000-11-16  Nathan Sidwell  <nathan@codesourcery.com>
12075
12076         * call.c (op_error): Make error messages clearer.
12077
12078 2000-11-15  Mark Mitchell  <mark@codesourcery.com>
12079
12080         * decl.c (wrapup_globals_for_namespace): Don't mark things
12081         TREE_ASM_WRITTEN when they're not.
12082
12083 2000-11-15  Jason Merrill  <jason@redhat.com>
12084
12085         * typeck2.c (friendly_abort): Uncount the error before handing
12086         off to fancy_abort.
12087
12088 2000-11-15  Nathan Sidwell  <nathan@codesourcery.com>
12089
12090         * typeck.c (lookup_anon_field): Cope with qv qualifiers.
12091
12092 2000-11-14  Mark Mitchell  <mark@codesourcery.com>
12093
12094         * class.c (build_vtbl_initializer): Fix typo in comment.
12095         * typeck.c (expr_sizeof): Don't crash on errors.
12096
12097 2000-11-14  Jim Wilson  <wilson@redhat.com>
12098
12099         * lang-specs.h: Add %2 after %(cc1_options).
12100
12101 2000-11-14  Richard Henderson  <rth@redhat.com>
12102
12103         * typeck.c (c_sizeof): Be strict about casting result value
12104         back to c_size_type_node.
12105         (expr_sizeof, c_sizeof_nowarn, c_alignof): Likewise.
12106
12107 2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>
12108
12109         * typeck.c (build_unary_op): Use boolean_increment from
12110         c-common.c, moving the relevant code there.
12111
12112 2000-11-11  Jason Merrill  <jason@redhat.com>
12113
12114         * typeck.c (mark_addressable): Don't call put_var_into_stack.
12115
12116         * decl.c (maybe_commonize_var): Set DECL_UNINLINABLE for statics
12117         in inlines.
12118
12119 2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12120
12121         * decl.c (grokdeclarator, save_function_data): Use memcpy, not bcopy.
12122         * lex.c (copy_lang_decl): Likewise.
12123
12124 2000-11-09  Mark Mitchell  <mark@codesourcery.com>
12125
12126         * dump.c (cp_dump_tree): Don't dump function bodies here.
12127
12128         * Make-lang.in (CXX_C_OBJS): Add c-dump.o.
12129         (dump.o): Update dependency list.
12130         * cp-tree.h (DECL_MAYBE_TEMPLATE): Remove.
12131         (flag_dump_translation_unit): Likewise.
12132         (CP_TYPE_QUALS): Adjust definition.
12133         (DECL_C_BIT_FIELD): Remove.
12134         (SET_DECL_C_BIT_FIELD): Likewise.
12135         (CLEAR_DECL_C_BIT_FIELD): Likewise.
12136         (add_maybe_template): Likewise.
12137         (strip_array_types): Likewise.
12138         (dump_node_to_file): Likewise.
12139         (cp_dump_tree): New function.
12140         * decl.c (init_decl_processing): Set lang_dump_tree.
12141         * decl2.c (flag_dump_translation_unit): Remove.
12142         * dump.c: Move most of it to ../c-dump.c.
12143         (cp_dump_tree): New function.
12144         * pt.c (add_maybe_template): Remove.
12145         * typeck.c (strip_array_types): Likewise.
12146
12147 2000-11-07  Eric Christopher  <echristo@redhat.com>
12148
12149         * decl.c (init_decl_processing): Change definition of
12150         __wchar_t to wchar_t.  Remove artificial declaration of
12151         wchar_t.
12152         * lex.c: Change instances of __wchar_t to wchar_t.
12153
12154 2000-11-09  Nathan Sidwell  <nathan@codesourcery.com>
12155
12156         * lex.c (do_identifier): Don't lookup_name for operators.
12157         * parse.y (operator): Save looking_for_typename.
12158         (unoperator): Restore it.
12159         * spew.c (frob_opname): Use nth_token for lookahead.
12160
12161 2000-11-08  Nathan Sidwell  <nathan@codesourcery.com>
12162
12163         * decl.c (grok_op_properties): Always use coerce_new_type and
12164         coerce_delete_type.
12165         * decl2.c (coerce_new_type): Use c_size_type_node. Preserve
12166         exception specification. Tidy up.
12167         (coerce_delete_type): Preserve exception specification. Tidy up.
12168
12169 2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>
12170
12171         * class.c (duplicate_tag_error, build_vtbl_initializer), decl.c
12172         (push_binding_level), error.c (cp_tree_printer), pt.c
12173         (process_partial_specialization, tsubst_template_arg_vector),
12174         search.c (lookup_member): Use memset () instead of bzero ().
12175
12176 2000-11-07  Nathan Sidwell  <nathan@codesourcery.com>
12177
12178         * decl.c (build_ptrmemfunc_type): Allow error_mark_node.
12179
12180 2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>
12181
12182         * Make-lang.in (c++.distdir): Remove.
12183
12184 2000-11-04  Mark Mitchell  <mark@codesourcery.com>
12185
12186         * decl2.c (do_nonmember_using_decl): Allow `extern "C"'
12187         declarations from different namespaces to be combined.
12188
12189 2000-11-03  Zack Weinberg  <zack@wolery.stanford.edu>
12190
12191         * decl.c: Include tm_p.h.
12192
12193 2000-11-03  Joseph S. Myers  <jsm28@cam.ac.uk>
12194
12195         * tree.c (cp_tree_equal): Use memcmp () instead of bcmp ().
12196
12197 2000-11-02  Joseph S. Myers  <jsm28@cam.ac.uk>
12198
12199         * dump.c (dequeue_and_dump), lex.c (interface_strcmp), method.c
12200         (build_overload_value), repo.c (open_repo_file), xref.c
12201         (open_xref_file): Use strchr () and strrchr () instead of index ()
12202         and rindex ().
12203
12204 2000-11-01  Bernd Schmidt  <bernds@redhat.co.uk>
12205
12206         * call.c (build_over_call): Call fold on the CALL_EXPR.
12207
12208 2000-11-01  Gabriel Dos Reis  <gdr@codesourcery.com>
12209
12210         * error.c (dump_template_decl): Separate template hearders with
12211         space not comma.
12212
12213 2000-10-31  Gabriel Dos Reis  <gdr@codesourcery.com>
12214
12215         * error.c: Move TFF_ macros into cp-tree.h.  Throughout, replace
12216         TS_* flags with corresponding TFF_*.  Adjust prototypes of
12217         functions (which used to take a tree_string_flags) to take an int.
12218
12219         * cp-tree.h (enum tree_string_flags): Remove
12220         (TFF_PLAIN_IDENTIFIER, TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE,
12221         TFF_CHASE_NAMESPACE_ALIAS, TFF_CHASE_TYPEDEF, TFF_DECL_SPECIFIERS,
12222         TFF_CLASS_KEY_OR_ENUM, TFF_RETURN_TYPE,
12223         TFF_FUNCTION_DEFAULT_ARGUMENTS, TFF_EXCEPTION_SPECIFICATION,
12224         TFF_TEMPLATE_HEADER, TFF_TEMPLATE_DEFAULT_ARGUMENTS,
12225         TFF_TEMPLATE_NAME, TFF_EXPR_IN_PARENS, TFF_SCOPE): New macros.
12226         (type_as_string, decl_as_string, expr_as_string,
12227         context_as_string): Adjust prototype.
12228
12229         * class.c (dump_class_hierarchy_r): Use TFF_PLAIN_IDENTIFIER
12230         instead of TS_PLAIN.
12231
12232         * pt.c (mangle_class_name_for_template): Use TFF_CHASE_TYPEDEF
12233         instead of TF_CHASE_TYPEDEFS. Use TFF_PLAIN_IDENTIFIER instead of
12234         plain `0'.
12235
12236 2000-10-30  Mark Mitchell  <mark@codesourcery.com>
12237
12238         * cp-tree.h (DECL_EXTERNAL_LINKAGE_P): New macro.
12239         (linkage_kind): New enumeration.
12240         (decl_linkage): New function.
12241         * decl2.c (comdat_linkage): Extend comment.
12242         * error.c (dump_function_decl): Print the arguments used to
12243         instantiate a template, even when not printing the type of the
12244         function.
12245         * pt.c (convert_nontype_argument): Use DECL_EXTERNAL_LINKAGE_P,
12246         not TREE_PUBLIC, to test for external linkage.
12247         * tree.c (decl_linkage): New function.
12248
12249 2000-10-28  Mark Mitchell  <mark@codesourcery.com>
12250
12251         * pt.c (instantiate_decl): Always instantiate static data members
12252         initialized in-class.
12253
12254 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
12255
12256         * Make-lang.in: Move all build rules here from Makefile.in,
12257         adapt to new context.  Wrap all rules that change the current
12258         directory in parentheses.  Expunge all references to $(P).
12259         When one command depends on another and they're run all at
12260         once, use && to separate them, not ;.  Add OUTPUT_OPTION to
12261         all object-file generation rules.  Delete obsolete variables.
12262
12263         * Makefile.in: Delete.
12264         * config-lang.in: Delete outputs= line.
12265
12266 2000-10-26  Gabriel Dos Reis  <gdr@codesourcery.com>
12267
12268         * error.c (dump_function_decl): Print no space between
12269         `ptr-operator' the `type-specifier' of the return type.
12270         (dump_type_prefix): Make sure we put space at the appropriate
12271         place.
12272
12273 2000-10-23  Jason Merrill  <jason@redhat.com>
12274
12275         * call.c (equal_functions): Also call decls_match for extern "C" fns.
12276
12277 2000-10-22  Jason Merrill  <jason@redhat.com>
12278
12279         * call.c (build_conditional_expr): Use ocp_convert to force
12280         rvalue conversion.
12281
12282 2000-10-22  Mark Mitchell  <mark@codesourcery.com>
12283
12284         * call.c (standard_conversion): Use RVALUE_CONVs for all
12285         expressions that satisfy lvalue_p, not just those that satisfy
12286         real_lvalue_p.
12287
12288         * optimize.c (copy_body_r): Don't treat CALL_EXPRs specially.
12289
12290         * typeck.c (c_sizeof): Return an expression of `size_t' type,
12291         not one with TYPE_IS_SIZETYPE set.
12292         (dubious_conversion_warnings): Remove special-case code.
12293
12294 2000-10-21  Geoffrey Keating  <geoffk@cygnus.com>
12295
12296         * decl2.c (arg_assoc_type): Handle VECTOR_TYPE.
12297         * error.c (dump_type): Handle VECTOR_TYPE like POINTER_TYPE.
12298         (dump_type_prefix): Print vector-of-int as 'int vector'.
12299         (dump_type_suffix): Handle VECTOR_TYPE like POINTER_TYPE.
12300         * tree.c (walk_tree): Handle VECTOR_TYPE.
12301
12302         * decl.c (init_decl_processing): Call MD_INIT_BUILTINS.
12303
12304 2000-10-21  Jason Merrill  <jason@redhat.com>
12305
12306         * parse.y (operator): Set got_object from got_scope.
12307         Set looking_for_typename.
12308         * decl.c (lookup_name_real): Clear val after setting from_obj.
12309         Reorganize diagnostic.
12310
12311 2000-10-20  Jason Merrill  <jason@redhat.com>
12312
12313         * tree.c (walk_tree): Don't walk into default args.
12314
12315         * error.c (dump_expr): Use host_integerp.
12316
12317 2000-10-20  David Edelsohn  <edelsohn@gnu.org>
12318
12319         * typeck2.c (abstract_virtuals_error): Use "because" instead of
12320         "since" in error message.
12321
12322 2000-10-20  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
12323
12324         * typeck.c (dubious_conversion_warning): Suppress if TYPE_IS_SIZETYPE.
12325
12326 2000-10-20  Jeffrey Oldham  <oldham@codesourcery.com>
12327
12328         * decl.c (revert_static_member_fn): Fixed typo.
12329
12330 2000-10-19  Mark Mitchell  <mark@codesourcery.com>
12331
12332         * class.c (subobject_offset_fn): New type.
12333         (dfs_record_base_offsets): Remove.
12334         (record_base_offsets): Likewise.
12335         (dfs_search_base_offsets): Likewise.
12336         (record_subobject_offset): New function.
12337         (check_subobject_offset): Likewise.
12338         (walk_subobject_offsets): Likewise.
12339         (record_subobject_offsets): Likewise.
12340         (layout_conflict_p): Reimplement.
12341         (layout_nonempty_base_or_field): Correct handling of type
12342         conflicts during layout.
12343         (layout_empty_base): Likewise.
12344         (build_base_field): Adjust to handle new representation of empty
12345         base offset table.
12346         (build_base_fields): Likewise.
12347         (layout_virtual_bases): Likewise.
12348         (splay_tree_compare_integer_csts): New function.
12349         (layout_class_type): Use a splay_tree, rather than a varray, to
12350         represent the offsets of empty bases.
12351
12352         * cp-tree.h (DECL_ANTICIPATED): Don't require a FUNCTION_DECL.
12353         * decl.c (select_decl): Don't return declarations that are
12354         DECL_ANTICIPATED.
12355
12356 2000-10-18  Mark Mitchell  <mark@codesourcery.com>
12357
12358         * cp-tree.h (cp_tree_index): Add CPTI_FAKE_STD.
12359         (fake_std_node): New macro.
12360         * decl.c (in_std): Rename to ...
12361         (in_fake_std): ... this.
12362         (flag_no_builtin): Remove.
12363         (flag_no_nonansi_builtin): Likewise.
12364         (walk_namespaces_r): Use fake_std_node.
12365         (push_namespace): Use std_identifier.
12366         (pop_namespace): Use in_fake_std.
12367         (lookup_name_real): Use fake_std_node.
12368         (init_decl_processing): When -fhonor-std, create the `std'
12369         namespace.  Don't create a dummy fake_std_node in that case.
12370         Adjust call to c_common_nodes_and_builtins.  Use std_identifier.
12371         (builtin_function): Put builtins whose names don't begin
12372         with `_' in the std namespace.
12373         * decl2.c (flag_no_builtin): Remove.
12374         (flag_no_nonansi_builtin): Likewise.
12375         (set_decl_namespace): Use fake_std_node.
12376         (validate_nonmember_using_decl): Likewise.
12377         (do_using_directive): Likewise.
12378         (handle_class_head): Likewise.
12379         * dump.c (dequeue_and_dump): Likewise.
12380         * except.c (init_exception_processing): Use std_identifier.
12381         * init.c (build_member_call): Use fake_std_node.
12382         * rtti.c (init_rtti_processing): Use std_identifier.
12383
12384 2000-10-17  Mark Mitchell  <mark@codesourcery.com>
12385
12386         * cp-tree.h (back_end_hook): Remove declaration.
12387         * decl2.c (back_end_hook): Remove definition.
12388
12389         * dump.c (dequeue_and_dump): Dump TREE_USED.
12390
12391 2000-10-17  Brad Lucier <lucier@math.purdue.edu>
12392
12393         * spew.c (snarf_defarg): Cast 2nd arg to obstack_blank to (int).
12394
12395 2000-10-17  Joseph S. Myers  <jsm28@cam.ac.uk>
12396
12397         * decl.c (WINT_TYPE): Define.
12398         (init_decl_processing): Create types unsigned_ptrdiff_type_node,
12399         c_size_type_node, signed_size_type_node and wint_type_node.
12400
12401 2000-10-17  Joseph S. Myers  <jsm28@cam.ac.uk>
12402
12403         * decl2.c (warn_missing_format_attribute): New variable.
12404         (lang_decode_option): Decode -Wmissing-format-attribute.
12405
12406 2000-10-16  Mark Mitchell  <mark@codesourcery.com>
12407
12408         * typeck.c (qualify_type): Remove.
12409         (composite_pointer_type): Fix handling of conversions to `cv void*'.
12410
12411 2000-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12412
12413         * Makefile.in (parse.c, parse.h): Fix think-o in last patch.
12414
12415 2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12416
12417         * Makefile.in (parse.c, parse.h): Create atomically.
12418
12419 2000-10-12  Mark Mitchell  <mark@codesourcery.com>
12420
12421         * class.c (current_obstack): Remove.
12422         * decl.c (ggc_p): Remove.
12423         (start_decl): Don't use decl_tree_cons.
12424         (grokdeclarator): Don't use build_decl_list.
12425         (start_function): Don't use decl_tree_cons.
12426         (finish_function): Don't mess with obstacks.
12427         * decl2.c (grok_x_components): Don't use build_decl_list.
12428         * lex.c (make_call_declarator): Don't call decl_tree_cons.
12429         (implicitly_declare_fn): Don't call build_decl_list.
12430         * parse.y (frob_specs): Don't call build_decl_list or
12431         decl_tree_cons.
12432         (expr_or_declarator_intern): Don't call decl_tree_cons.
12433         (primary): Don't call build_decl_list.
12434         (fcast_or_absdcl): Likewise.
12435         (typed_declspecs): Don't call decl_tree_cons.
12436         (reserved_declspecs): Don't call build_decl_list.
12437         (declmods): Likewise.
12438         (reserved_typespecquals): Likewise.
12439         (aggr): Likewise.
12440         (new_type_id): Likewise.
12441         (cv_qualifiers): Likewise.
12442         (after_type_declarator_intern): Likewise.
12443         (notype_declarator_intern): Likewise.
12444         (absdcl_intern): Likewise.
12445         (named_parm): Likewise.
12446         * pt.c (most_specialized_class): Likewise.
12447         * repo.c (temporary_obstack): Make it a structure, not a pointer.
12448         (init_repo): Initialize it.
12449         * search.c (current_obstack): Remove.
12450         * typeck2.c (add_exception_specifier): Don't call build_decl_list.
12451
12452 2000-10-09  Richard Henderson  <rth@cygnus.com>
12453
12454         * Make-lang.in (CXX_EXTRA_HEADERS): Remove.
12455         (c++ language support bits for libgcc): Remove.
12456         (c++.clean): Remove cplib2.txt cleanup.
12457         * config-lang.in (headers, lib2funcs): Remove.
12458
12459         * exception.cc, new.cc, new1.cc, new2.cc: Remove files.
12460         * tinfo.cc, tinfo.h, tinfo2.cc, vec.cc: Remove files.
12461         * inc/cxxabi.h, inc/exception, inc/new: Remove files.
12462         * inc/new.h, inc/typeinfo: Remove files.
12463
12464 2000-10-08  Joseph S. Myers  <jsm28@cam.ac.uk>
12465
12466         * decl.c (INTMAX_TYPE, UINTMAX_TYPE): Define if not already
12467         defined.
12468         (init_decl_processing): Initialize intmax_type_node and
12469         uintmax_type_node.
12470
12471 2000-10-06  Richard Henderson  <rth@cygnus.com>
12472
12473         * cp-tree.h (struct cp_language_function): Remove x_result_rtx.
12474         (original_result_rtx): Remove.
12475         * decl.c (save_function_data): Don't clear x_result_rtx.
12476         (mark_lang_function): Don't mark it either.
12477         * expr.c (fixup_result_decl): Remove.
12478         * semantics.c (genrtl_named_return_value): Frob the return decl
12479         before calling emit_local_var.
12480         (genrtl_finish_function): Don't call fixup_result_decl.
12481         Always emit the jump to return_label.
12482
12483 2000-10-06  Nathan Sidwell  <nathan@codesourcery.com>
12484
12485         * pt.c (lookup_template_class): Set current access for enum.
12486         (tsubst_enum): Set file & line for enum decl.
12487
12488         * spew.c (yylex): Remove unused variable.
12489
12490 2000-10-05  Richard Henderson  <rth@cygnus.com>
12491
12492         * semantics.c (genrtl_finish_function): Don't init or check
12493         can_reach_end; remove noreturn and return value checks.
12494
12495 2000-10-05  Tom Tromey  <tromey@cygnus.com>
12496
12497         * init.c (build_java_class_ref): Use `build_static_name' with a
12498         suffix, not a prefix, to build the class object's name.
12499
12500 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
12501
12502         * cp-tree.h (access_kind): Fix comment typo.
12503         * decl2.c (grokfield): Fix diagnostic typo.
12504         * semantics.c (finish_template_type): Fix comment typo.
12505         (finish_qualified_object_call_expr): Likewise.
12506
12507 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
12508
12509         * pt.c (tsubst_expr, DECL_STMT case): Don't process if
12510         tsubsting fails.
12511
12512 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
12513
12514         * spew.c (frob_id): New static function.
12515         (frob_opname): Use it.
12516         (yylex): Use it.
12517
12518 2000-10-01  Mark Mitchell  <mark@codesourcery.com>
12519
12520         * decl.c (lang_mark_false_label_stack): Remove.
12521         * lex.c (cp_mang_lang_type): Use ggc_alloc_cleared.
12522
12523 2000-09-30  Joseph S. Myers  <jsm28@cam.ac.uk>
12524
12525         * gxxint.texi: Use @email for formatting email addresses.
12526
12527 2000-09-29  Gabriel Dos Reis  <gdr@codesourcery.com>
12528
12529         * error.c: Remove direct obstack manipulation.  Replace with
12530         output_buffer-based formatting.  Adjust calls to removed macros.
12531         (obstack_chunk_alloc, obstack_chunk_free): Remove.
12532         (OB_INIT, OB_PUTC, OB_PUTC2, OB_PUTS, OB_PUTID, OB_PUTCP,
12533         OB_FINISH, OB_PUTI, OB_END_TEMPLATE): Likewise.
12534
12535 2000-09-24  Mark Mitchell  <mark@codesourcery.com>
12536
12537         * ir.texi: Move to ../c-tree.texi.
12538
12539 2000-09-20  Jason Merrill  <jason@redhat.com>
12540
12541         * decl2.c (get_guard): Check DECL_FUNCTION_SCOPE_P.
12542
12543 2000-09-21  Andreas Jaeger  <aj@suse.de>
12544
12545         * errfn.c: Move declaration of cp_printer and cp_printers to ...
12546         * cp-tree.h: ... here.
12547
12548         * error.c: Remove declaration of cp_printer.
12549
12550 2000-09-20  Mark Mitchell  <mark@codesourcery.com>
12551
12552         * tree.c (mark_local_for_remap_r): Handle CASE_LABELs.
12553
12554 2000-09-20  Hans-Peter Nilsson  <hp@axis.com>
12555
12556         * except.c: Delete #if 0:d EXCEPTION_SECTION_ASM_OP-default and
12557         users.
12558
12559 2000-09-18  Mark Mitchell  <mark@codesourcery.com>
12560
12561         * decl.c (start_function): Robustify.
12562
12563 2000-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12564
12565         * cp-tree.h (check_function_format): Accept a `status' parameter.
12566
12567         * call.c, typeck.c: Updates calls to `check_function_format'.
12568
12569 2000-09-17  Geoffrey Keating  <geoffk@cygnus.com>
12570
12571         * decl2.c (handle_class_head): Always push some scope even
12572         in the error case.
12573
12574 2000-09-16  Mark Mitchell  <mark@codesourcery.com>
12575
12576         * cp-tree.h (struct cp_language_function): Remove
12577         x_scope_stmt_stack and name_declared.
12578         (current_scope_stmt_stack): Remove.
12579         (function_name_declared_p): New macro.
12580         (struct lang_decl_flags): Use c_lang_decl as a base class.
12581         (context): Remove.
12582         (struct lang_decl): Replace saved_tree with context.
12583         (DECL_FRIEND_CONTEXT): Adjust accordingly.
12584         (SET_DECL_FRIEND_CONTEXT): Likewise.
12585         (DECL_VIRTUAL_CONTEXT): Likewise.
12586         (DECL_SAVED_TREE): Remove.
12587         (C_DECLARED_LABEL_FLAG): Likewise.
12588         (cplus_expand_expr_stmt): Don't declare.
12589         (add_decl_stmt): Likewise.
12590         (add_scope_stmt): Likewise.
12591         * decl.c (mark_stmt_tree): Remove.
12592         (case_compare): Likewise.
12593         (finish_case_label): Use c_add_case_label.
12594         (init_decl_processing): Set more language-specific hooks.
12595         (build_enumerator): Fix typo in comment.
12596         (cplus_expand_expr_stmt): Remove.
12597         (mark_lang_function): Use mark_c_language_function.
12598         (lang_mark_tree): Use c_mark_lang_decl.
12599         * decl2.c: Change order of inclusion.
12600         * except.c: Likewise.
12601         * expr.c (cplus_expand_expr): Remove handling of STMT_EXPR.  Fall
12602         back on c_expand_expr.
12603         * friend.c: Include expr.h.
12604         * init.c: Change order of inclusion.
12605         * Makefile.in: Update dependencies.
12606         * lex.h (free_lang_decl_chain): Remove.
12607         * optimize.c (maybe_clone_body): Use function_name_declared_p.
12608         * pt.c (build_template_decl): Don't copy DECL_VIRTUAL_CONTEXT if
12609         it doesn't exist.
12610         (instantiate_decl): Use function_name_declared_p.
12611         * semantics.c (lang_expand_expr_stmt): Remove.
12612         (set_current_function_name_declared): Likewise.
12613         (current_function_name_declared): Likewise.
12614         (begin_compound_stmt): Use function_name_declared_p.
12615         (add_decl_stmt): Remove.
12616         (setup_vtbl_ptr): Use function_name_declared_p.
12617         (add_scope_stmt): Remove.
12618         (current_scope_stmt_stack): New function.
12619         (cp_expand_stmt): Don't handle SCOPE_STMTs.
12620         (expand_body): Use function_name_declared_p.
12621         * tree.c (cp_statement_code_p): Don't include SCOPE_STMT.
12622         * typeck.c: Change order of includes.
12623         (convert_sequence): Remove.
12624
12625 2000-09-14  Joseph S. Myers  <jsm28@cam.ac.uk>
12626
12627         * lex.c (reswords): Add _Complex.
12628
12629 2000-09-14  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
12630
12631         * Make-lang.in (cplib2.txt): Depend on cp/Makefile.
12632
12633 2000-09-13  J. David Anglin  <dave@hiauly1.hia.nrc.ca>
12634
12635         * init.c (begin_init_stmts): Don't use // comments.
12636
12637 2000-09-12  Jason Merrill  <jason@redhat.com>
12638
12639         * decl.c (maybe_deduce_size_from_array_init): Set do_default for
12640         all non-extern arrays.
12641
12642         * decl.c (grokdeclarator): Complain about 'friend T' for implicit
12643         typenames, too.  Downgrade complaint to pedwarn.
12644         (xref_tag): Warn about surprising behavior of 'friend struct T'.
12645         * decl2.c (handle_class_head): Generate a TYPENAME_TYPE for
12646         'class This::Inherited'.
12647
12648 2000-09-12  Mark Mitchell  <mark@codesourcery.com>
12649
12650         * decl.c (finish_case_label): Given the LABEL_DECL a
12651         DECL_CONTEXT.
12652
12653 2000-09-12  Gabriel Dos Reis  <gdr@codesourcery.com>
12654
12655         * error.c (TFF_PLAIN_IDENTIFIER, TFF_NAMESPACE_SCOPE,
12656         TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS, TFF_CHASE_TYPDEF,
12657         TFF_DECL_SPECIFIERS, TFF_CLASS_KEY_OR_ENUM, TFF_RETURN_TYPE,
12658         TFF_FUNCTION_DEFAULT_ARGUMENTS, TFF_EXCEPTION_SPECIFICATION,
12659         TFF_TEMPLATE_HEADER, TFF_TEMPLATE_DEFAULT_ARGUMENTS, TFF_SCOPE):
12660         New macros.
12661         (sorry_for_unsupported_tree, print_scope_operator,
12662         print_left_paren, print_right_paren, print_left_bracket,
12663         print_right_bracket, print_whitespace): Likewise.
12664         (aggr_variety): Rename to class_key_or_enum.
12665         (print_type): Rename to print_type_id.
12666         (print_type_specifier_seq, print_simple_type_specifier,
12667         print_elaborated_type_specifier,
12668         print_rest_of_abstract_declarator,
12669         print_parameter_declaration_clause, print_exception_specification,
12670         print_nested_name_specifier, print_template_id,
12671         typedef_original_name,  print_template_argument_list_start,
12672         print_template_argument_list_end): New functions.
12673
12674 2000-09-11  Gabriel Dos Reis  <gdr@codesourcery.com>
12675
12676         * ir.texi: Add more documentation.
12677
12678 2000-09-11  Mark Mitchell  <mark@codesourcery.com>
12679
12680         * cp-tree.h (struct saved_scope): Remove x_function_parms.
12681         (current_function_parms): Don't define.
12682         (struct cp_language_function): Remove parms_stored.
12683         (current_function_just_assigned_this): Don't define.
12684         (current_function_parms_stored): Likewise.
12685         (static_ctors): Declare.
12686         (static_dtors): Likewise.
12687         (SF_EXPAND): Don't define.
12688         (expand_start_early_try_stmts): Remove declaration.
12689         (store_parm_decls): Likewise.
12690         * decl.c (static_ctors): Don't declare.
12691         (static_dtors): Likewise.
12692         (struct binding_level): Remove this_block.
12693         (poplevel): Remove dead code.
12694         (set_block): Likewise.
12695         (mark_binding_level): Don't mark this_block.
12696         (mark_saved_scope): Don't mark x_function_parms.
12697         (init_decl_processing): Don't add current_function_parms as a GC
12698         root.
12699         (check_function_type): Change prototype.
12700         (start_function): Remove RTL-generation code.
12701         (expand_start_early_try_stmts): Remove.
12702         (store_parm_decls): Give it internal linkage.  Remove
12703         RTL-generation code.
12704         (finish_function): Remove RTL-generation code.
12705         * decl2.c (static_ctors): Fix formatting.
12706         (static_dtors): Likewise.
12707         * method.c (use_thunk): Don't call store_parm_decls.
12708         (synthesize_method): Likewise.
12709         * optimize.c (maybe_clone_body): Likewise.
12710         * parse.y (fn.def2): Likewise.
12711         (.set_base_init): Likewise.
12712         (nodecls): Likewise.
12713         * pt.c (instantiate_decl): Likewise.
12714         * rtti.c (synthesize_tinfo_fn): Likewise.
12715         * semantics.c (genrtl_try_block): Simplify.
12716         (expand_body): Use genrtl_start_function and
12717         genrtl_finish_function.
12718         (genrtl_start_function): New function.
12719         (genrtl_finish_function): Likewise.
12720
12721 2000-09-11  Nathan Sidwell  <nathan@codesourcery.com>
12722
12723         * error.c (cp_tree_printer, case 'P'): Append break.
12724
12725 2000-09-11  Nathan Sidwell  <nathan@codesourcery.com>
12726
12727         * cp-tree.h (frob_opname): Declare.
12728         * parse.y (saved_scopes): New static variable.
12729         (cp_parse_init): Adjust.
12730         (do_id): If lastiddecl is NULL, do do_identifier.
12731         (operator): Save scope information.
12732         (unoperator): New reduction. Restore scope information.
12733         (operator_name): Append unoperator. Call frob_opname.
12734         * spew.c (frob_opname): Define.
12735
12736 2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>
12737
12738         * decl.c, rtti.c: Include defaults.h if not already included.
12739         Don't define the *_TYPE_SIZE macros.
12740
12741 2000-09-09  Mark Mitchell  <mark@codesourcery.com>
12742
12743         * cp-tree.h (push_switch): Change prototype.
12744         (check_cp_case_value): Remove declaration.
12745         (decl_constant_value): Likewise.
12746         * decl.c (struct cp_switch): Add switch_stmt and cases.
12747         (case_compare): New function.
12748         (push_switch): Set switch_stmt.  Initialize cases.
12749         (pop_switch): Clean up cases.
12750         (define_case_label): Rename to ...
12751         (finish_case_label): ... this.  Do semantic analysis for case
12752         labels here.
12753         (start_function): Correct comment.
12754         * decl2.c (check_cp_case_value): Remove.
12755         * expr.c (do_case): Remove.
12756         * pt.c (tsubst_expr): Adjust call to finish_case_label.
12757         * semantics.c (genrtl_do_poplevel): Remove declaration.
12758         (RECHAIN_STMTS): Remove.
12759         (finish_break_stmt): Use build_break_stmt.
12760         (finish_continue_stmt): Use build_continue_stmt.
12761         (finish_switch_cond): Adjust condition here, rater than in
12762         c_expand_start_case.
12763         (finish_case_label): Remove.
12764         * typeck.c (c_expand_return): Remove.
12765         (c_expand_start_case): Likewise.
12766
12767 2000-09-07  Gabriel Dos Reis  <gdr@codesourcery.com>
12768
12769         * ir.texi: Document type nodes.
12770
12771 2000-09-06  Mark Mitchell  <mark@codesourcery.com>
12772
12773         * cp-tree.h (init_cp_semantics): Declare.
12774         (genrtl_try_block): Don't declare.
12775         (genrtl_handler): Likewise.
12776         (genrtl_catch_block): Likewise.
12777         (genrtl_ctor_stmt): Likewise.
12778         (genrtl_subobject): Likewise.
12779         (genrtl_do_poplevel): Likewise.
12780         (genrtl_named_return_value): Likewise.
12781         * lex.c (init_parse): Call init_cp_semantics.
12782         * semantics.c (genrtl_try_block): Give it internal linkage.
12783         (genrtl_handler): Likewise.
12784         (genrtl_catch_block): Likewise.
12785         (genrtl_ctor_stmt): Likewise.
12786         (genrtl_subobject): Likewise.
12787         (genrtl_do_poplevel): Likewise.
12788         (genrtl_named_return_value): Likewise.
12789         (lang_expand_stmt): Rename to ...
12790         (cp_expand_stmt): ... this.  Only handle C++-specific nodes.
12791         (init_cp_semantics): Define.
12792
12793         * decl.c (initialize_local_var): Remove RTL-generating code.
12794         * semantics.c (genrtl_try_block): Fix formatting.
12795
12796         Move statement-tree facilities from C++ to C front-end.
12797         * cp-tree.h (cp_tree_index): Remove CPTI_VOID_ZERO.
12798         (void_zero_node): Remove.
12799         (stmt_tree): Likewise.
12800         (scope_chain): Adjust.
12801         (language_function): Rename to cp_language_function.
12802         (cp_function_chain): Adjust.
12803         (current_stmt_tree): Remove.
12804         (last_tree): Likewise.
12805         (last_expr_type): Likewise.
12806         (struct lang_decl): Adjust.
12807         (STMT_IS_FULL_EXPR_P): Remove.
12808         (add_tree): Remove.
12809         (begin_stmt_tree): Likewise.
12810         (finish_stmt_tree): Likewise.
12811         (walk_tree_fn): Likewise.
12812         (walk_stmt_tree): Likewise.
12813         * class.c (finish_struct): Replace use of add_tree with add_stmt.
12814         * decl.c (mark_stmt_tree): Adjust type.
12815         (init_decl_processing): Don't build void_zero_node.
12816         (initialize_local_var): Adjust usage of current_stmt_tree.
12817         (finish_enum): Use add_stmt, not add_tree.
12818         (save_function_data): Adjust use of language_function.
12819         (finish_constructor_body): Use add_stmt, not add_tree.
12820         (finish_destructor_body): Likewise.
12821         (push_cp_function_context): Adjust use of language_function.
12822         (pop_cp_function_context): Likewise.
12823         (mark_lang_function): Likewise.
12824         (mark_cp_function_context): Likewise.
12825         * init.c (build_aggr_init): Adjust use of current_stmt_tree.
12826         (build_vec_init): Likewise.
12827         * semantics.c (SET_LAST_STMT): Remove.
12828         (RECHAIN_STMTS): Don't use it.
12829         (stmts_are_full_exprs_p): Adjust use of current_stmt_tree.
12830         (current_stmt_tree): Define.
12831         (add_tree): Remove.
12832         (finish_goto_stmt): Use add_stmt, not add_tree.
12833         (finish_expr_stmt): Likewise.
12834         (begin_if_stmt): Likewise.
12835         (finish_then_clause): Likewise.
12836         (begin_while_stmt): Likewise.
12837         (begin_do_stmt): Likewise.
12838         (finish_return_stmt): Likewise.
12839         (begin_for_stmt): Likewise.
12840         (finish_break_stmt): Likewise.
12841         (finish_continue_stmt): Likewise.
12842         (begin_switch_stmt): Likewise.
12843         (finish_case_label): Likewise.
12844         (begin_try_block): Likewise.
12845         (begin_function_try_block): Likewise.
12846         (begin_handler): Likewise.
12847         (begin_catch_block): Likewise.
12848         (begin_compound_stmt): Likewise.
12849         (begin_asm_stmt): Likewise.
12850         (finish_asm_stmt): Likewise.
12851         (finish_label_stmt): Likewise.
12852         (add_decl_stmt): Likewise.
12853         (finish_subobject): Likewise.
12854         (finish_decl_cleanup): Likewise.
12855         (finish_named_return_value): Likewise.
12856         (setup_vtbl_ptr): Likewise.
12857         (add_scope_stmt): Likewise.
12858         (finish_stmt_expr): Likewise.
12859         (prune_unused_decls): Remove.
12860         (begin_stmt_tree): Likewise.
12861         (finish_stmt_tree): Likewise.
12862         (prep_stmt): Adjust use of current_stmt_tree.
12863         (lang_expand_stmt): Likewise.
12864         * tree.c (statement_code_p): Remove.
12865         (cp_statement_code_p): New function.
12866         (walk_stmt_tree): Remove.
12867         (init_tree): Set lang_statement_code_p.
12868
12869 2000-09-06  Zack Weinberg  <zack@wolery.cumb.org>
12870
12871         Integrated preprocessor.
12872
12873         * Make-lang.in, Makefile.in: Remove all references to input.c,
12874         gxx.gperf, and hash.h.  Add ../c-lex.o to C_OBJS.
12875         * gxx.gperf, hash.h, input.c: Delete.
12876         * lang-specs.h: Pass -lang-c++ to cc1plus so cpplib is
12877         initialized properly.
12878
12879         * class.c (fixup_pending_inline): Take a tree, not a
12880         struct pending_inline *.  All callers changed.
12881         (init_class_processing): Set RID_PUBLIC, RID_PRIVATE,
12882         RID_PROTECTED entries in ridpointers[] array here.
12883         * decl.c (duplicate_decls): Do not refer to struct
12884         pending_inline.
12885         (record_builtin_type, init_decl_processing): Use RID_MAX not
12886         CP_RID_MAX.
12887         (grokdeclarator): Use C_IS_RESERVED_WORD.
12888         * decl2.c (lang_decode_option): Ignore -lang-c++ for sake of
12889         cpplib.
12890         (grok_x_components): Do not inspect pending_inlines chain.
12891
12892         * cp-tree.h (struct lang_identifier): Add rid_code entry.
12893         (C_IS_RESERVED_WORD, C_RID_CODE, C_RID_YYCODE): New.
12894         (flag_no_gnu_keywords, flag_operator_names, rid_to_yy): Declare.
12895         (DEFARG_LENGTH, struct pending_inline, TIME_IDENTIFIER_TIME,
12896         TIME_IDENTIFIER_FILEINFO): Kill.
12897         Update prototypes.
12898         * lex.h: Expunge cp_rid.  Rewrite RIDBIT macros to use just a
12899         single 32-bit word.
12900         * parse.y: Call do_pending_inlines unconditionally.
12901         reinit_parse_for_method is now snarf_method.  fn.defpen is no
12902         longer necessary.  Remove unnecessary <itype> annotation on
12903         SCOPE.  Do not refer to end_of_file or struct pending_inline.
12904         * semantics.c (begin_inline_definitions): Call
12905         do_pending_inlines unconditionally.
12906
12907         * lex.c: Remove all code now shared with C front end.
12908         Initialize cpplib properly if USE_CPPLIB.  Put reserved words
12909         into the get_identifier table.  Rewrite pragma handling to
12910         work with the registry.  Move code to save tokens for later
12911         processing to spew.c.
12912
12913         * spew.c: Rewrite everything in terms of token streams instead
12914         of text.  Move routines here from lex.c / input.c as
12915         appropriate.  GC-mark trees hanging off the pending inlines
12916         chain.
12917
12918 2000-09-06  Mark Mitchell  <mark@codesourcery.com>
12919
12920         * NEWS: Mention that the named return value extension has been
12921         deprecated.
12922         * cp-tree.h (original_result_rtx): Define.
12923         (TREE_REFERENCE_EXPR): Remove.
12924         (DECL_VPARENT): Likewise.
12925         (pushdecl_nonclass_level): Likewise.
12926         (store_return_init): Likewise.
12927         (reinit_lang_specific): Likewise.
12928         (genrtl_named_return_value): Change prototype.
12929         * decl.c (original_result_rtx): Remove.
12930         (cp_finish_decl): Don't build DECL_STMTs for RESULT_DECLs.
12931         Do not generate RTL for local variables here.
12932         (store_return_init): Remove.
12933         * semantics.c (genrtl_named_return_value): Simplify.  Fold in
12934         store_return_init.
12935         (finish_named_return_value): Adjust accordingly.  Warn that this
12936         extension is deprecated.
12937         (lang_expand_stmt): Adjust call to genrtl_named_return_value.
12938
12939 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
12940
12941         * pt.c (type_unification_real): Replace switch with if.
12942         (unify): Tsubst non-type parms before comparing.
12943
12944 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
12945
12946         * error.c (dump_typename): New function, broken out of ...
12947         (dump_type): ... here. Use it.
12948         * typeck.c (same_type_p): Use cp_tree_equal for TYPENAME_TYPE.
12949
12950 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
12951
12952         * init.c (build_offset_ref): Deal with namespace scoped
12953         TEMPLATE_ID_EXPRs.
12954
12955 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
12956
12957         * class.c (resolve_address_of_overloaded_function): Add
12958         explanation message.
12959         * decl.c (define_case_label): Reformat explanation.
12960         * decl2.c (finish_static_data_member_decl): Likewise.
12961         (grokfield): Likewise.
12962         * friend.c (do_friend): Likewise.
12963
12964 2000-09-05  Zack Weinberg  <zack@wolery.cumb.org>
12965
12966         * tree.c (walk_tree): Expose tail recursion.
12967         (walk_stmt_tree): New function.
12968         * cp-tree.h: Prototype walk_stmt_tree.
12969         * semantics.c (prune_unused_decls): Operate on SCOPE_STMTs not
12970         the BLOCKs directly.  If a BLOCK has no variables after
12971         pruning, discard it.
12972         (finish_stmt_tree): Use walk_stmt_tree.  No need to save and
12973         restore the line number.
12974
12975 2000-09-05  Mark Mitchell  <mark@codesourcery.com>
12976
12977         * Makefile.in (CXX_TREE_H): Add dependency on HTAB_H.
12978         (pt.o): Remove dependency on HTAB_H.
12979         * cp-tree.h: Include hashtab.h.
12980         (walk_tree): Change prototype.
12981         (walk_tree_without_duplicates): New function.
12982         * decl.c (check_default_argument): Use it.
12983         * optimize.c (remap_decl): Adjust calls to walk_tree.
12984         (copy_body): Likewise.
12985         (expand_calls_inline): Likewise.
12986         (calls_setjmp_p): Use walk_tree_without_duplicates.
12987         * pt.c: Don't include hashtab.h.
12988         (for_each_template_parm): Use walk_tree_without_duplicates.
12989         * semantics.c (finish-stmt_tree): Likewise.
12990         (expand_body): Likewise.
12991         * tree.c (walk_tree): Add additional parameter.
12992         (walk_tree_without_duplicates): New function.
12993         (count_trees): Use it.
12994         (verify_stmt_tree): Adjust call to walk_tree.
12995         (find_tree): Use walk_tree_without_duplicates.
12996         (no_linkage_check): Likewise.
12997         (break_out_target_exprs): Adjust call to walk_tree.
12998         (cp_unsave): Likewise.
12999
13000 2000-09-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
13001
13002         * cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code.
13003         (TEMPLATE_TEMPLATE_PARM): Adjust comment.
13004         * cp-tree.h (TYPE_BINFO): Adjust comment.
13005         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
13006         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
13007         (IS_AGGR_TYPE): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
13008         (TYPE_TEMPLATE_INFO): Likewise.
13009         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Likewise.
13010         * class.c (push_nested_class): Likewise.
13011         * decl.c (lookup_name_real): Likewise.
13012         (grokdeclarator): Likewise.
13013         (grok_op_properties): Likewise.
13014         (xref_tag): Likewise.
13015         (xref_basetypes): Likewise.
13016         * decl2.c (constructor_name_full): Likewise.
13017         (arg_assoc_template_arg): Add TEMPLATE_TEMPLATE_PARM case.
13018         (arg_assoc_type): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
13019         * error.c (dump_type): Split TEMPLATE_TEMPLATE_PARM case.
13020         (dump_type_prefix): Add BOUND_TEMPLATE_TEMPLATE_PARM.
13021         (dump_type_suffix): Likewise.
13022         * init.c (is_aggr_type): Use BOUND_TEMPLATE_TEMPLATE_PARM
13023         instead.
13024         (get_aggr_from_typedef): Likewise.
13025         * mangle.c (write_type): Split TEMPLATE_TEMPLATE_PARM case.
13026         (write_expression): Add BOUND_TEMPLATE_TEMPLATE_PARM.
13027         (write_template_parm): Likewise.
13028         (write_template_template_parm): Check tree code instead of
13029         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
13030         * method.c (build_overload_nested_name): Add
13031         BOUND_TEMPLATE_TEMPLATE_PARM.
13032         (process_overload_item): Split TEMPLATE_TEMPLATE_PARM case.
13033         * parse.y (bad_parm): Add BOUND_TEMPLATE_TEMPLATE_PARM.
13034         * pt.c (convert_template_argument): Check tree code instead of
13035         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
13036         (for_each_template_parm_r): Split TEMPLATE_TEMPLATE_PARM case.
13037         (for_each_template_parm): Adjust comment.
13038         (tsubst): Add BOUND_TEMPLATE_TEMPLATE_PARM.  Reorganize.
13039         (tsubst_copy): Add BOUND_TEMPLATE_TEMPLATE_PARM.
13040         (unify): Add BOUND_TEMPLATE_TEMPLATE_PARM.  Reorganize.  Use
13041         template_args_equal to compare template template parameter cases.
13042         * ptree.c (print_lang_type): Add BOUND_TEMPLATE_TEMPLATE_PARM.
13043         * search.c (lookup_field_1): Use BOUND_TEMPLATE_TEMPLATE_PARM
13044         instead.
13045         * tree.c (copy_template_template_parm): Decide whether to create
13046         a TEMPLATE_TEMPLATE_PARM or BOUND_TEMPLATE_TEMPLATE_PARM node.
13047         (walk_tree): Add BOUND_TEMPLATE_TEMPLATE_PARM.
13048         (copy_tree_r): Likewise.
13049         * typeck.c (comptypes): Likewise.  Check tree code instead of
13050         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
13051
13052 2000-09-04  Mark Elbrecht  <snowball3@bigfoot.com>
13053
13054         * decl.c (finish_function): Move the code for handling functions
13055         marked with the constructor and destructor attributes inside the
13056         expand_p block.
13057
13058 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
13059
13060         * init.c (resolve_offset_ref): Deal with TEMPLATE_ID_EXPR.
13061
13062 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
13063
13064         * pt.c (lookup_template_class): Remove abort.
13065         * tree.c (get_type_decl): Allow error_mark_node.
13066
13067 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
13068
13069         * decl2.c (arg_assoc): Deal with COMPONENT_REFs inside
13070         TEMPLATE_ID_EXPRs.
13071
13072 2000-09-03  Mark Mitchell  <mark@codesourcery.com>
13073
13074         * operators.def (ALIGNOF_EXPR, MAX_EXPR, MIN_EXPR): Change
13075         new ABI mangling.
13076
13077 2000-09-01  Nathan Sidwell  <nathan@codesourcery.com>
13078
13079         * parse.y (named_class_head): Check for TYPENAME_TYPE. Simplify
13080         union tag mismatch error reporting.
13081
13082 2000-09-01  Nathan Sidwell  <nathan@codesourcery.com>
13083
13084         * call.c (build_scoped_method_call): Check it is not a namespace.
13085
13086 2000-08-30  Jason Merrill  <jason@redhat.com>
13087
13088         * cp-tree.h (LOCAL_CLASS_P): Use decl_function_context.
13089
13090         * tree.c (bot_manip): Check TREE_CONSTANT rather than
13091         !TREE_SIDE_EFFECTS.  Call break_out_target_exprs and
13092         build_target_expr_with_type for the non-AGGR_INIT_EXPR case.
13093
13094         * decl.c (start_function): Always call make_function_rtl.
13095
13096 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
13097
13098         * semantics.c (prune_unused_decls): New function.
13099         (finish_stmt_tree): Call it via walk_tree.
13100
13101 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
13102
13103         * class.c (build_secondary_vtable): Constify a char *.
13104         * decl.c (init_decl_processing): Initialize function_id_node,
13105         pretty_function_id_node, and func_id_node.
13106         * input.c (struct input_source): Constify 'str'.
13107         (feed_input): Constify first argument.
13108         * mangle.c (write_identifier): Constify argument.
13109         * pt.c (mangle_class_name_for_template): Constify argument.
13110
13111 2000-08-29  Mark Mitchell  <mark@codesourcery.com>
13112
13113         * typeck.c (mark_addressable): Remove code that pokes around in
13114         RTL.
13115
13116 2000-08-28  Jason Merrill  <jason@redhat.com>
13117
13118         * lex.c (file_name_nondirectory): Move to toplev.c.
13119
13120         * cp-tree.h (LOCAL_CLASS_P): New macro.
13121         * class.c (finish_struct_1): Use it.
13122
13123 2000-08-27  Alex Samuel  <samuel@codesourcery.com>
13124
13125         * mangle.c (CLASSTYPE_TEMPLATE_ID_P): Remove unexplained voodoo.
13126         (write_encoding): Pass another argument to write_name.
13127         (write_name): Add ignore_local_scope parameter.  Fix handling of
13128         local names.
13129         (write_nested_name): Use write_unqualified_name.
13130         (write_prefix): Likewise.  Skip out on FUNCTION_DECLs.
13131         (write_template_prefix): Use write_unqualified_name.
13132         (write_component): Remove.
13133         (write_local_name): Add parameter.  Use direct local entity to
13134         discriminator calculation.
13135         (write_class_enum_type): Pass another argument to write_name.
13136         (write_template_template_arg): Likewise.
13137         (make_guard_variable): Likewise.
13138
13139 2000-08-27  Jason Merrill  <jason@redhat.com>
13140
13141         * decl.c (pushdecl): Matching decls for local externs are found in
13142         the current level.  Propagate linkage information from previous
13143         declarations.
13144
13145 2000-08-26  Gabriel Dos Reis  <gdr@codesourcery.com>
13146
13147         * ir.texi (Expressions): Fix typo.
13148
13149 2000-08-25  Greg McGary  <greg@mcgary.org>
13150
13151         * tree.c (init_tree): Use ARRAY_SIZE.
13152
13153 2000-08-25  Gabriel Dos Reis  <gdr@codesourcery.com>
13154
13155         * error.c (cp_tree_printer): Rework.
13156
13157 2000-08-25  Mark Mitchell  <mark@codesourcery.com>
13158
13159         * Make-lang.in (CXX_LIB2FUNCS): Remove cp-demangle.o and
13160         dyn-string.o.
13161         (CXX_LIB2SRCS): Remove cp-demangle.c and dyn-string.c.
13162         (cp-demangle.o): Remove target.
13163         (dyn-string.o): Likewise.
13164
13165         * decl.c (grokfndecl): Require that `main' return an `int'.
13166         * mangle.c (write_encoding): Don't mangle return types for
13167         conversion functions.
13168
13169 2000-08-25  Gabriel Dos Reis  <gdr@codesourcery.com>
13170
13171         * error.c (tree_formatting_info): New data type.
13172         (tree_being_formatted): New macro.
13173         (tree_formatting_flags): Likewise.
13174         (put_whitespace): Likewise.
13175         (print_tree_identifier): Likewise.
13176         (print_identifier): Likewise.
13177         (cp_tree_printer, print_function_argument_list, print_declaration,
13178         print_expression, print_function_declaration,
13179         print_function_parameter, print_type, print_cv_qualifier): New
13180         functions.
13181         (init_error): Initialize lang_printer.
13182
13183 2000-08-24  Jason Merrill  <jason@redhat.com>
13184
13185         * typeck.c (build_ptrmemfunc): Just reinterpret if there's no
13186         adjustment necessary.
13187
13188 2000-08-24  Greg McGary  <greg@mcgary.org>
13189
13190         * cp-tree.h (MAIN_NAME_P): Remove macro.
13191
13192 2000-08-24  Gabriel Dos Reis  <gdr@codesourcery.com>
13193
13194         * error.c (print_instantiation_context): Don't forget to flush the
13195         buffer.
13196
13197 2000-08-23  Jason Merrill  <jason@redhat.com>
13198
13199         * typeck.c (build_ptrmemfunc): Save the input pmf.
13200
13201         * method.c (process_modifiers): Use same_type_p.
13202
13203 2000-08-23  Mark Mitchell  <mark@codesourcery.com>
13204
13205         * cp-tree.h (DECL_CLONED_FUNCTION_P): Check DECL_LANG_SPECIFIC.
13206         * mangle.c (write_function_type): Change prototype.
13207         (write_encoding): Don't mangle return types for
13208         constructors or destructors.
13209         (write_type): Adjust call to write_function_type.
13210         * pt.c (instantiate_template): Instantiate alternate entry points
13211         when instantiating the main function.
13212
13213 2000-08-23  Gabriel Dos Reis  <gdr@codesourcery.com>
13214
13215         * error.c (cp_print_error_function): Don't use embedded '\n' in
13216         output_printf.
13217
13218 2000-08-23  Gabriel Dos Reis  <gdr@codesourcery.com>
13219
13220         * decl.c (init_decl_processing): Remove bogus initialization.
13221         * error.c (lang_print_error_function): Restore here.
13222         (init_error): Initialize print_error_function.
13223
13224 2000-08-22  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
13225
13226         * decl2.c (arg_assoc): Revert my 2000-08-11 change.
13227
13228 2000-08-22  Gabriel Dos Reis  <gdr@codesourcery.com>
13229
13230         * Makefile.in (error.o): Depends on diagnostic.h
13231
13232         * cp-tree.h (problematic_instantiation_changed,
13233         record_last_problematic_instantiation, current_instantiation,
13234         print_instantiation_context): Declare.
13235         (maybe_print_template_context): Remove.
13236
13237         * decl.c (init_decl_processing): Set print_error_function to NULL.
13238         (lang_print_error_function): Remove, since we're using a new
13239         machinery.
13240
13241         * error.c: #include diagnostic.h
13242         (function_category): New function.
13243         (cp_diagnostic_starter): Likewise.
13244         (cp_diagnostic_finalizer): Likewise.
13245         (cp_print_error_function): Likewise.
13246         (maybe_print_instantiation_context): Likewise.
13247         (print_instantiation_full_context): Likewise.
13248         (print_instantiation_partial_context): Likewise.
13249         (print_instantiation_context): Define.
13250         (init_error): Initialize diagnostic pager and finalizer.
13251
13252         * pt.c (problematic_instantiation_changed): Define.
13253         (record_last_problematic_instantiation): Likewise.
13254         (current_instantiation): Likewise.
13255         (maybe_print_template_context): Remove.
13256         (print_template_context): Likewise.
13257         (current_tinst_level): Make static to reflect Brendan Kehoe's
13258         change of 1995-04-13.
13259         (push_tinst_level): Call print_instantiation_context.
13260
13261 2000-08-21  Nix  <nix@esperi.demon.co.uk>
13262
13263         * lang-specs.h: Do not process -o or run the assembler if
13264         -fsyntax-only.
13265
13266 2000-08-21  Joseph S. Myers  <jsm28@cam.ac.uk>
13267
13268         * decl.c (flag_hosted, flag_noniso_default_format_attributes): New
13269         variables.
13270         * decl2.c (lang_decode_option): Disable gettext attributes for
13271         -ansi.
13272
13273 2000-08-21  Gabriel Dos Reis  <gdr@codesourcery.com>
13274
13275         * lex.c (lang_init_options): Default diagnostic message maximum
13276         length to 80, when line-wrapping.
13277
13278 2000-08-20  Mark Mitchell  <mark@codesourcery.com>
13279
13280         * class.c (build_vtbl_initializer): Clear the entire
13281         vtbl_init_data.  Start keeping track of the functions for which we
13282         have created vcall offsets here.
13283         (dfs_build_vcall_offset_vtbl_entries): Remove.
13284         (build_vcall_offset_vtbl_entries): Reimplement.
13285         (add_vcall_offset_vtbl_entries_r): New function.
13286         (add_vcall_offset_vtbl_entries_1): Likewise.  Tweak logic for
13287         computing when vcall offsets are necessary.
13288
13289 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
13290
13291         * decl.c (member_function_or_else): Use cp_error ... %T.
13292         (grokdeclarator): Likewise.
13293         (start_method): Likewise.
13294         * friend.c (make_friend_class): Use cp_pedwarn ... %T.
13295
13296 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
13297
13298         * decl2.c (grokfield): Set CLASSTYPE_GOT_SEMICOLON on class
13299         TYPE_DECLs.
13300
13301 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
13302
13303         * cp-tree.h (PTRMEM_OK_P): New macro.
13304         (itf_ptrmem_ok): New enumeration value.
13305         * class.c (resolve_address_of_overloaded_function): Add PTRMEM
13306         argument. Diagnose implicit pointer to member.
13307         (instantiate_type): Don't diagnose implicit pointer to member
13308         here. Pass itf_ptrmem_ok if ok. Adjust calls to
13309         resolve_address_of_overloaded_function.
13310         * init.c (build_offset_ref): Set PTRMEM_OK_P.
13311         (resolve_offset_ref): Don't diagnose implicit pointer to member here.
13312         * semantics.c (finish_parenthesized_expr): Clear OFFSET_REFs here.
13313         * typeck.c (build_x_unary_op): Calculate PTRMEM_OK_P.
13314         (build_unary_op): Deal with single non-static member in
13315         microsoft-land.
13316
13317 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
13318
13319         * decl2.c (arg_assoc_type): Cope with TYPENAME_TYPE.
13320
13321 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
13322
13323         * cp-tree.h (enum_name_string): Remove prototype.
13324         (report_case_error): Remove prototype.
13325         * cp/typeck2.c (enum_name_string): Remove.
13326         (report_case_error): Remove.
13327         * error.c (dump_expr): Deal with enum values directly.
13328         Correctly negate integer constant.
13329
13330 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
13331
13332         * inc/cxxabi.h (__cxa_vec_new2, __cxa_vec_new3): Declare.
13333         (__cxa_vec_delete2, __cxa_vec_delete3): Declare.
13334         * vec.cc (__cxa_vec_new2, __cxa_vec_new3): Implement.
13335         (__cxa_vec_delete2, __cxa_vec_delete3): Implement.
13336         (__cxa_vec_new): Use __cxa_vec_new2.
13337         (__cxa_vec_delete): Use __cxa_vec_delete2.
13338
13339 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
13340
13341         * vec.cc (__cxa_vec_new): Set "C" linkage.
13342         (__cxa_vec_ctor): Likewise.
13343         (__cxa_vec_cctor): Likewise.
13344         (__cxa_vec_dtor): Likewise.
13345         (__cxa_vec_delete): Likewise.
13346         * inc/cxxabi.h (__cxa_vec_new): Set "C" linkage.
13347         (__cxa_vec_ctor): Likewise.
13348         (__cxa_vec_cctor): Likewise.
13349         (__cxa_vec_dtor): Likewise.
13350         (__cxa_vec_delete): Likewise.
13351
13352 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
13353
13354         * class.c (instantiate_type): Reinstate local variable
13355         deleted in previous change.
13356
13357         * cvt.c (cp_convert_to_pointer): Pass itf_complain, not
13358         itf_no_attributes.
13359
13360 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
13361
13362         * cp-tree.h (instantiate_type_flags): New enumeration.
13363         (instantiate_type): Change parameter.
13364         * class.c (instantiate_type): Adjust prototype. Adjust.
13365         * call.c (standard_conversion): Adjust instantiate_type call.
13366         (reference_binding): Likewise.
13367         (build_op_delete_call): Likewise.
13368         (convert_like_real): Likewise.
13369         * cvt.c (cp_convert_to_pointer): Likewise.
13370         (convert_to_reference): Likewise.
13371         * pt.c (convert_nontype_argument): Likewise.
13372         * typeck.c (build_binary_op): Likewise.
13373         (build_ptrmemfunc): Likewise.
13374         (convert_for_assignment): Likewise.
13375
13376 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
13377
13378         * cp-tree.h (CPTR_AGGR_TAG): New global tree node.
13379         (current_aggr): Define.
13380         * decl.c (grokdeclarator): Make sure a friend class is an
13381         elaborated type specifier.
13382         * parse.y (current_aggr): Remove static definition.
13383         (cp_parse_init): Adjust.
13384         (structsp): Clear and restore current_aggr.
13385         (component_decl_list): Clear current_aggr.
13386
13387         * error.c (dump_type, case TYPENAME_TYPE): Don't emit the
13388         aggregate tag on the typename's context.
13389
13390         * pt.c (tsubst_friend_class): Return error_mark_node, if
13391         parms becomes NULL.
13392         (instantiate_class_template): Ignore error_mark_node friend types.
13393
13394 2000-08-14  Nathan Sidwell  <nathan@codesourcery.com>
13395
13396         * cvt.c (warn_ref_binding): New static function, broken out of ...
13397         (convert_to_reference): ... here. Use it.
13398
13399 2000-08-11  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
13400
13401         * parse.y (template_arg): Add rule for template qualified with
13402         global scope.
13403
13404 2000-08-11  Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
13405
13406         * decl2.c (add_function): Reorganize.
13407         (arg_assoc): Do not consider function template decls.
13408
13409 2000-08-11  Jason Merrill  <jason@redhat.com>
13410
13411         * decl.c (lookup_name_real): Don't forget the TYPENAME_TYPE we're
13412         looking inside.
13413
13414 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
13415
13416         * cp-tree.h (resolve_scope_to_name): Remove unused prototype.
13417         (lookup_nested_tag): Likewise.
13418
13419         * decl2.c (grokfield): Fix comment to reflect many types of _DECLs
13420         can be produced.
13421
13422 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
13423
13424         * parse.y (named_complex_class_head_sans_basetype): Remove
13425         always true if.
13426
13427 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
13428
13429         * decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Build
13430         explicit TEMPLATE_ID_EXPR args.
13431         (build_expr_from_tree, case CALL_EXPR): Likewise.
13432
13433 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
13434
13435         * decl.c (check_tag_decl): Diagnose typename's which don't
13436         declare anything.
13437
13438 2000-08-10  Nathan Sidwell  <nathan@codesourcery.com>
13439
13440         * init.c (build_aggr_init): Reject bogus array initializers
13441         early.
13442
13443 2000-08-09  Nathan Sidwell  <nathan@codesourcery.com>
13444
13445         * rtti.c (build_dynamic_cast_1): Set "C" linkage for new abi
13446         runtime.
13447         * cp/tinfo.cc (__dynamic_cast): Likewise.
13448         * cp/inc/cxxabi.h (__dynamic_cast): Likewise.
13449
13450 2000-08-09  Nathan Sidwell  <nathan@codesourcery.com>
13451
13452         * cvt.c (convert_to_pointer_force): Fix error message when
13453         attempting to cast from ambiguous base.
13454
13455 2000-08-08  Jason Merrill  <jason@redhat.com>
13456
13457         * pt.c (tsubst_aggr_type): Bail if creating the argvec fails.
13458         (tsubst_template_arg_vector): Likewise.
13459
13460         * decl2.c (build_anon_union_vars): Choose the largest field; don't
13461         assume that one will be as large as the union.
13462
13463 2000-08-07  Kazu Hirata  <kazu@hxi.com>
13464
13465         * cp-tree.h (CLASSTYPE_HAS_PRIMARY_BASE_P): Fix a comment typo.
13466         * decl.c (pop_labels): Likewise.
13467
13468 2000-08-04  Jeffrey Oldham  <oldham@codesourcery.com>
13469
13470         * inc/cxxabi.h (__pbase_type_info): Changed member names to match
13471         specifications.
13472         (__pointer_to_member_type_info): Likewise.
13473         (__base_class_info): Likewise.
13474         (__class_type_info): Likewise.
13475         (__si_class_type_info): Likewise.
13476         (__vmi_class_type_info): Likewise.
13477         * tinfo.cc (__si_class_type_info::__do_find_public_src):
13478         Changed member names to match specifications.
13479         (__vmi_class_type_info::__do_find_public_src): Likewise.
13480         (__si_class_type_info::__do_dyncast): Likewise.
13481         (__vmi_class_type_info::__do_dyncast): Likewise.
13482         (__si_class_type_info::__do_upcast): Likewise.
13483         (__vmi_class_type_info::__do_upcast): Likewise.
13484         * tinfo2.cc (__pbase_type_info::__do_catch): Likewise.
13485         (__pbase_type_info::__pointer_catch): Likewise.
13486         (__pointer_type_info::__pointer_catch): Likewise.
13487         (__pointer_to_member_type_info::__pointer_catch): Likewise.
13488
13489 2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>
13490
13491         * Make-lang.in (cc1plus): Depend on $(BACKEND), not stamp-objlist.
13492         * Makefile.in: Add C_OBJS, BACKEND; delete OBJS, OBJDEPS.
13493         (cc1plus): Link with $(BACKEND) and $(C_OBJS).
13494
13495 2000-08-04  Mark Mitchell  <mark@codesourcery.com>
13496
13497         * cp-tree.h (add_method): Change prototype.
13498         * class.c (add_method): Remove FIELDS parameter.  Add ERROR_P.
13499         Don't double the size of the method vector in the error case.
13500         (handle_using_decl): Adjust call to add_method.
13501         (add_implicitly_declared_members): Likewise.
13502         (clone_function_decl): Likewise.
13503         * decl2.c (check_classfn): Likewise.
13504         * semantics.c (finish_member_declaration): Likewise.
13505
13506 2000-08-04  Joseph S. Myers  <jsm28@cam.ac.uk>
13507
13508         * decl.c (flag_isoc94): New variable.
13509
13510 2000-08-02  Jason Merrill  <jason@redhat.com>
13511
13512         * pt.c (do_type_instantiation): Add complain parm; don't complain
13513         if called recursively.
13514         * cp-tree.h, parse.y: Adjust.
13515
13516 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
13517
13518         * decl2.c: Silently ignore -Wstrict-prototypes; warn about
13519         -Wno-strict-prototypes.
13520
13521         * g++spec.c: Adjust type of second argument to
13522         lang_specific_driver, and update code as necessary.
13523
13524         * cp-tree.h: Don't prototype min_precision here.
13525         (my_friendly_assert): Cast expression to void.
13526         * semantics.c (do_poplevel): Initialize scope_stmts.
13527
13528 2000-08-02  Mark Mitchell  <mark@codesourcery.com>
13529
13530         * cp-tree.h (DECL_NEEDED_P): Tweak.
13531
13532 2000-07-28  Jason Merrill  <jason@redhat.com>
13533
13534         * lang-specs.h: Use %i in rule for .ii files.
13535
13536 2000-07-31  Zack Weinberg  <zack@wolery.cumb.org>
13537
13538         * lang-specs.h: Rename cpp to cpp0 and/or tradcpp to tradcpp0.
13539
13540 2000-07-30  Mark Mitchell  <mark@codesourcery.com>
13541
13542         Allow indirect primary bases.
13543         * cp-tree.h (struct lang_type): Remove vfield_parent.  Add
13544         primary_base.
13545         (CLASSTYPE_VFIELD_PARENT): Remove.
13546         (CLASSTYPE_PRIMARY_BINFO): Reimplement.
13547         (BINFO_PRIMARY_BINFO): Remove.
13548         (CLASSTYPE_HAS_PRIMARY_BASE_P): Reimplement.
13549         (BINFO_VBASE_PRIMARY_P): Likewise.
13550         (BINFO_PRIMARY_BASE_OF): New macro.
13551         (BINFO_INDIRECT_PRIMARY_P): Likewise.
13552         (get_primary_binfo): New function.
13553         * decl.c (lang_mark_tree): Make lang_type::primary_base.
13554         * class.c (vcall_offset_data_s): Rename to ...
13555         (vtbl_init_data_s): ... this.  Rename primary_p to primary_vtbl_p,
13556         and add ctor_vtbl_p.
13557         (get_derived_offset): Use get_primary_binfo.
13558         (dfs_mark_primary_bases): Adjust handling of virtual primary
13559         bases.
13560         (mark_primary_bases): Likewise.
13561         (set_primary_base): Take a binfo, not an integer, as a
13562         representation of the primary base.
13563         (indirect_primary_base_p): Remove.
13564         (determine_primary_base): Adjust for indirect primary bases.
13565         (dfs_find_final_overrider): Fix typo in coment.
13566         (update_vtable_entry_for_fn): Use get_primary_binfo.
13567         (layout_nonempty_base_or_field): Tweak.
13568         (build_base_fields): Adjust for new primary base semantics.
13569         (dfs_propagate_binfo_offsets): Remove.
13570         (propagate_binfo_offsets): Rewrite.
13571         (dfs_set_offset_for_shared_vbases): Remove.
13572         (layout_virtual_bases): Don't use it.
13573         (layout_class_type): Set CLASSTYPE_SIZE correctly under the new
13574         ABI.
13575         (finish_struct_1): Set CLASSTYPE_PRIMARY_BINFO, not
13576         CLASSTYPE_VFIELD_PARENT.
13577         (dfs_get_primary_binfo): New function.
13578         (get_primary_binfo): Likewise.
13579         (dump_class_hierarchy_r): Tweak printing of primary bases.
13580         (build_vtbl_initializer): Fix typo in comments.  Use
13581         vtbl_init_data.
13582         (build_vcall_and_vbase_vtbl_entries): Likewise.
13583         (build_vbaes_offset_vtbl_entries): Likewise.
13584         (dfs_build_vcall_offset_vtbl_entries): Adjust setting of
13585         BV_VCALL_INDEX to handle indirect primary bases.
13586         (build_vcall_offset_vtbl_entries): Use vtbl_init_data.
13587         (build_rtti_vtbl_entries): Likewise.
13588         * search.c (get_shared_vbase_if_not_primary): Tweak.
13589         (find_vbase_instance): Likewise.
13590         (binfo_for_vtable): Simplify.
13591         * tree.c (unshare_base_binfos): Clear BINFO_PRIMARY_BASE_OF.
13592         (make_binfo): Make it have 11 entries.
13593
13594 2000-07-30  Alex Samuel  <samuel@codesourcery.com>
13595
13596         * mangle.c (DECL_TEMPLATE_ID_P): Remove.
13597         (CLASSTYEP_TEMPLATE_ID_P): Check template info, and context when
13598         ascertaining primaryness.
13599         (G): Remove template_args.
13600         (decl_is_template_id): New function.
13601         (write_encoding): Use decl_is_template_id.
13602         (write_name): Likewise.  Handle type_decls.  Get main variant of
13603         type decls.
13604         (write_nested_name): Likewise.
13605         (write_prefix): Likewise.
13606         (write_template_prefix): Likewise.
13607         (write_special_name_constructor): Remove defunct production from
13608         comment.
13609         (write_bare_function_type): Remove comment about absent parameter.
13610         (write_template_template_arg): Add missing grammar production to
13611         comment.
13612
13613 2000-07-27  Jason Merrill  <jason@redhat.com>
13614
13615         * decl.c (duplicate_decls): If common_type produces a non-typedef
13616         type for a typedef, just use the old type.
13617
13618 2000-07-27  Mark Mitchell  <mark@codesourcery.com>
13619
13620         * cp-tree.h (function_depth): Declare.
13621         (verify_stmt_tree): Likewise.
13622         (find_tree): Likewise.
13623         * decl.c (function_depth): Give it external linkage.
13624         * optimize.c (optimize_function): Increment and decrement it.
13625         * tree.c (verify_stmt_tree_r): New function.
13626         (verify_stmt_tree): Likewise.
13627         (find_tree_r): Likewise.
13628         (find_tree): Likewise.
13629
13630 2000-07-27  Jason Merrill  <jason@redhat.com>
13631
13632         * pt.c (for_each_template_parm_r, case RECORD_TYPE): Use
13633         TYPE_PTRMEMFUNC_P.
13634         * cp-tree.h (TYPE_TEMPLATE_INFO): Check for TYPE_LANG_SPECIFIC.
13635
13636 2000-07-26  Mark Mitchell  <mark@codesourcery.com>
13637
13638         * decl.c (start_cleanup_fn): Mark the function as `inline'.
13639         * decl2.c (get_guard): Call cp_finish_decl, not
13640         rest_of_decl_compilation, for local guards.
13641         * lex.c (do_identifier): Remove unused variable.
13642
13643 2000-07-26      Marc Espie <espie@cvs.openbsd.org>
13644
13645         * parse.y:  Add missing ';'.
13646
13647 2000-07-26  Mark Mitchell  <mark@codesourcery.com>
13648
13649         * parse.y (empty_parms): Use `()', not `(...)', when in the scope
13650         of `extern "C++"'.
13651
13652 2000-07-25  Nathan Sidwell  <nathan@codesourcery.com>
13653
13654         Kill strict_prototype. Backwards compatibility only for
13655         non NO_IMPLICIT_EXTERN_C systems.
13656         * cp-tree.h (flag_strict_prototype): Remove.
13657         (strict_prototype): Remove.
13658         (strict_prototypes_lang_c, strict_prototypes_lang_cplusplus): Remove.
13659         * decl.c (maybe_push_to_top_level): Adjust.
13660         (pop_from_top_level): Adjust.
13661         (decls_match): Only allow sloppy parm matching for ancient
13662         system headers.
13663         (init_decl_processing): Adjust.
13664         (grokdeclarator): Adjust.
13665         * decl2.c (flag_strict_prototype): Remove.
13666         (strict_prototype): Remove.
13667         (strict_prototypes_lang_c, strict_prototypes_lang_cplusplus): Remove.
13668         (lang_f_options): Remove "strict-prototype".
13669         (unsupported-options): Add "strict-prototype".
13670         * lex.c (do_identifier): Adjust.
13671         (do_scoped_id): Adjust.
13672         * parse.y (empty_parms): Adjust.
13673         * class.c (push_lang_context): Adjust.
13674         (pop_lang_context): Adjust.
13675         * typeck.c (comp_target_parms): Adjust.
13676
13677 2000-07-25  Nathan Sidwell  <nathan@codesourcery.com>
13678
13679         * decl.c (poplevel): Deal with anonymous variables at for scope.
13680         (maybe_inject_for_scope_var): Likewise.
13681
13682 2000-07-25  Zack Weinberg  <zack@wolery.cumb.org>
13683
13684         * decl.c: Remove all signal handling code, now done in toplev.c.
13685
13686 2000-07-23  Mark Mitchell  <mark@codesourcery.com>
13687
13688         * decl.c (make_rtl_for_nonlocal_decl): Rework.
13689
13690         * pt.c (lookup_template_class): Ensure that TYPE_CONTEXT is set
13691         correctly.
13692
13693 2000-07-20  Zack Weinberg  <zack@wolery.cumb.org>
13694
13695         * cp-tree.h: Use __FUNCTION__ not __PRETTY_FUNCTION__.
13696         Define my_friendly_assert and my_friendly_abort as macros
13697         which may call friendly_abort.  Prototype friendly abort, not
13698         my_friendly_abort or my_friendly_assert.
13699         * decl.c (signal_catch): Report the signal caught in the error
13700         message.  Call fatal directly.
13701         * typeck2.c (ack, my_friendly_assert): Delete.
13702         (my_friendly_abort): Rename to friendly_abort.  Expect file,
13703         line, and function parameters.  Report the abort code, then
13704         call fancy_abort.  Do not mask an abort if errors have
13705         already occurred.
13706
13707 2000-07-18  Nathan Sidwell  <nathan@codesourcery.com>
13708
13709         * typeck.c (comp_target_parms): Remove obsolete parameter.
13710         (comp_target_types): Adjust.
13711
13712 2000-07-17  Jason Merrill  <jason@redhat.com>
13713
13714         * typeck.c (mark_addressable): Never set TREE_USED.
13715         * call.c (build_call): Don't abort on calls to library functions
13716         that have been declared normally.
13717
13718         * typeck.c (build_binary_op): Fix grammar in warning.
13719
13720         * exception.cc (__eh_free): Fix prototype.
13721
13722         * decl2.c (finish_decl_parsing): Handle TEMPLATE_ID_EXPR.
13723
13724         * decl.c (pushdecl): Handle seeing an OVERLOAD in
13725         IDENTIFIER_NAMESPACE_VALUE.
13726
13727 2000-07-16  Mark Mitchell  <mark@codesourcery.com>
13728
13729         * cp-tree.h (THUNK_VCALL_OFFSET): Update documentation.
13730         * method.c (use_thunk): Correct handling of vcall offsets.
13731
13732 2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>
13733
13734         * .cvsignore: parse.h and parse.c have no cp- prefix.
13735
13736 2000-07-13  Mark Mitchell  <mark@codesourcery.com>
13737
13738         * .cvsignore: New file.
13739
13740 2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>
13741
13742         * lang-specs.h: Use the new named specs.  Remove unnecessary braces.
13743
13744 2000-07-12  Mark Mitchell  <mark@codesourcery.com>
13745
13746         * Makefile.in ($(PARSE_H)): Depend directly on parse.y.
13747         * parse.c: Remove.
13748         * parse.h: Likewise.
13749
13750 2000-07-11  Mark Mitchell  <mark@codesourcery.com>
13751
13752         * class.c (layout_class_type): Add pointers to virtual bases after
13753         base classes under the old ABI.
13754
13755 2000-07-10  Benjamin Chelf  <chelf@codesourcery.com>
13756
13757         * semantics.c (finish_for_stmt): Remove call to emit_line_note.
13758         (finish_continue_stmt): Likewise.
13759         (begin_for_stmt): Remove call to note_level_for_for.
13760         (finish_goto_stmt): Change call from build_min_nt
13761         to build_stmt.
13762         (finish_expr_stmt): Likewise.
13763         (begin_if_stmt): Likewise.
13764         (begin_while_stmt): Likewise.
13765         (finish_while_stmt): Likewise.
13766         (finish_return_stmt): Likewise.
13767         (begin_for_stmt): Likewise.
13768         (finish_for_stmt): Likewise.
13769         (finish_break_stmt): Likewise.
13770         (begin_switch_stmt): Likewise.
13771         (finish_case_label): Likewise.
13772         (genrtl_try_block): Likewise.
13773         (begin_try_block): Likewise.
13774         (begin_handler): Likewise.
13775         (begin_compound_stmt): Likewise.
13776         (finish_asm_stmt): Likewise.
13777         (finish_label_stmt): Likewise.
13778         (add_decl_stmt): Likewise.
13779         (finish_subobject): Likewise.
13780         (finish_decl_cleanup): Likewise.
13781         (finish_named_return_value): Likewise.
13782         (setup_vtbl_ptr): Likewise.
13783         (add_scope_stmt): Likewise.
13784         * decl.c (finish_constructor_body): Likewise.
13785         (finish_destructor_body): Likewise.
13786         * optimize.c (copy_body_r): Likewise.
13787         (initialize_inlined_parameters): Likewise.
13788         (declare_return_variable): Likewise.
13789         (expand_call_inline): Likewise.
13790
13791 2000-07-10  Jakub Jelinek  <jakub@redhat.com>
13792
13793         * semantics.c (expand_body): Sync interface information
13794         at the end of function body expansion.
13795
13796 2000-07-09  Jason Merrill  <jason@redhat.com>
13797
13798         * init.c (build_new_1): Bail early if the call to new fails.
13799
13800         * decl.c (compute_array_index_type): Check specifically for
13801         an INTEGER_CST, not just TREE_CONSTANT.
13802
13803         * decl.c (duplicate_decls): Don't call duplicate_decls on
13804         the DECL_TEMPLATE_RESULT.
13805         (decls_match): Return 0 if the DECL_TEMPLATE_RESULTs have different
13806         codes.
13807
13808         * error.c (dump_template_bindings): Don't crash if we had an
13809         invalid argument list.
13810
13811         * typeck.c (c_expand_start_case): Do narrowing here.
13812         * semantics.c (finish_switch_cond): Not here.
13813
13814 2000-07-09  Hidvegi Zoli  <hzoli@austin.ibm.com>
13815
13816         * parse.y (asm_clobbers): Do string concatenation.
13817
13818 2000-07-09  Mark Mitchell  <mark@codesourcery.com>
13819
13820         * decl.c (pushtag): Don't put local classes in template functions
13821         on the local_classes list.
13822
13823 2000-07-04  Scott Snyder  <snyder@fnal.gov>
13824
13825         * decl2.c (get_guard): Add missing return for old ABI local
13826         variable case.
13827
13828 2000-07-09  Mark Mitchell  <mark@codesourcery.com>
13829
13830         * cp-tree.h (char_type_p): New function.
13831         * decl.c (init_decl_processing): Don't initialize
13832         signed_wchar_type_node or unsigned_wchar_type_node.
13833         (complete_array_type): Handle brace-enclosed string-constants.
13834         * rtti.c (emit_support_tinfos): Remove #if 0'd code.
13835         * tree.c (char_type_p): New function.
13836         * typeck2.c (digest_init): Use char_type_p.
13837
13838 2000-07-06  Nathan Sidwell  <nathan@codesourcery.com>
13839
13840         * pt.c (tsubst): Don't layout type, if it's error_mark.
13841
13842 2000-07-06  Nathan Sidwell  <nathan@codesourcery.com>
13843
13844         * pt.c (instantiate_pending_templates): Reset template level.
13845
13846 2000-07-05  Jason Merrill  <jason@redhat.com>
13847
13848         * call.c (joust): Don't complain about `operator char *()' beating
13849         `operator const char *() const'.
13850
13851 2000-07-04  scott snyder  <snyder@fnal.gov>
13852             Jason Merrill  <jason@redhat.com>
13853
13854         * repo.c (repo_get_id): Handle the case where a class with virtual
13855         bases has a null TYPE_BINFO_VTABLE.
13856
13857 2000-07-04  Kevin Buhr  <buhr@stat.wisc.edu>
13858             Jason Merrill  <jason@redhat.com>
13859
13860         * parse.y (member_init): Just pass in the type.
13861         * init.c (expand_member_init): Handle getting a type.
13862
13863 2000-07-04  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
13864             Jason Merrill  <jason@redhat.com>
13865
13866         * decl.c (finish_function): Warn if a function has no return
13867         statement.
13868         Suggested by Andrew Koenig.
13869         * typeck.c (check_return_expr): Do set current_function_returns_value
13870         if we got an error_mark_node.
13871
13872 2000-07-03  Nathan Sidwell  <nathan@codesourcery.com>
13873
13874         * decl2.c (push_decl_namespace): Push the original namespace.
13875
13876 2000-07-03  Nathan Sidwell  <nathan@codesourcery.com>
13877
13878         * pt.c (instantiate_class_template): Set CLASSTYPE_VBASECLASSES.
13879         * semantics.c (begin_class_definition): Clear it.
13880
13881 2000-07-02  Benjamin Chelf  <chelf@codesourcery.com>
13882
13883         * cp-tree.h (genrtl_goto_stmt): Remove declaration.
13884         (genrtl_expr_stmt): Likewise.
13885         (genrtl_decl_stmt): Likewise.
13886         (genrtl_if_stmt): Likewise.
13887         (genrtl_while_stmt): Likewise.
13888         (genrtl_do_stmt): Likewise.
13889         (genrtl_return_stmt): Likewise.
13890         (genrtl_for_stmt): Likewise.
13891         (genrtl_break_stmt): Likewise.
13892         (genrtl_continue_stmt): Likewise.
13893         (genrtl_scope_stmt): Likewise.
13894         (genrtl_switch_stmt): Likewise.
13895         (genrtl_case_label): Likewise.
13896         (genrtl_begin_compound_stmt): Likewise.
13897         (genrtl_finish_compound_stmt): Likewise.
13898         (genrtl_compound_stmt): Likewise.
13899         (genrtl_asm_stmt): Likewise.
13900
13901         * init.c (begin_init_stmts): Remove call to
13902         genrtl_begin_compound_stmt.
13903         (finish_init_stmts): Remove call to genrtl_finish_compound_stmt.
13904
13905         * semantics.c (lang_expand_stmt): Changed call to
13906         genrtl_compound_stmt to ignore return value.
13907
13908 2000-07-02  Mark Mitchell  <mark@codesourcery.com>
13909
13910         * mangle.c (canonicalize_for_substitution): Return the canonical
13911         variant of a type.
13912
13913         * decl.c (duplicate_decls): Preserve DECL_ORIGINAL_TYPE for a
13914         TYPE_DECL.
13915         * typeck.c (commonparms): Remove obstack manipulations.
13916
13917 2000-07-01  Benjamin Chelf  <chelf@codesourcery.com>
13918
13919         * Make-lang.in (cc1plus$(exeext)): Added c-semantics.o.
13920
13921         * Makefile.in (OBJS): Added ../c-semantics.o.
13922         (OBJDEPS): Likewise.
13923
13924         * cp-tree.h (TREE_LANG_FLAG_?): Moved common documentation to
13925         ../c-common.h.
13926         (struct stmt_tree): Added comment.
13927         (current_function_name_declared): Removed.
13928         (stmts_are_full_exprs_p): Likewise.
13929         (genrtl_do_pushlevel): Likewise.
13930         (genrtl_clear_out_block): Likewise.
13931         (COMPOUND_STMT_NO_SCOPE): Moved to ../c-common.h.
13932         (DECL_ANON_UNION_ELEMS): Likewise.
13933         (emit_local_var): Likewise.
13934         (make_rtl_for_local_static): Likewise.
13935         (do_case): Likewise.
13936         (expand_stmt): Likewise.
13937         (genrtl_decl_cleanup): Likewise.
13938         (c_expand_asm_operands): Likewise.
13939         (c_expand_return): Likewise.
13940         (c_expand_start_case): Likewise.
13941
13942         * decl.c (make_rtl_for_local_static): Moved to c-semantics.c.
13943         (emit_local_var): Likewise.
13944         (initialize_local_var): Change reference to
13945         stmts_are_full_exprs_p to call to stmts_are_full_exprs_p().
13946         Change reference to stmts_are_full_exprs_p to
13947         current_stmt_tree->stmts_are_full_exprs_p.
13948         (push_cp_function_context): Likewise.
13949
13950         * expect.c (expand_throw): Change reference to
13951         stmts_are_full_exprs_p.
13952
13953         * init.c (build_aggr_init): Change reference to
13954         stmts_are_full_exprs_p.
13955         (build_vec_init): Likewise.
13956
13957         * optimize.c (maybe_clone_body): Change reference to
13958         current_function_name_declared to
13959         cp_function_chain->name_declared.
13960
13961         * pt.c (instantiate_decl): Change reference to
13962         current_function_name_declared to
13963         cp_function_chain->name_declared.
13964
13965         * semantics.c (expand_cond): Moved declaration to c-common.h.
13966         (genrtl_do_pushlevel): Moved to c-semantics.c.
13967         (genrtl_clear_out_block): Likewise.
13968         (genrtl_goto_stmt): Likewise.
13969         (genrtl_expr_stmt): Likewise.
13970         (genrtl_decl_stmt): Likewise.
13971         (gerntl_if_stmt): Likewise.
13972         (genrtl_while_stmt): Likewise.
13973         (genrtl_do_stmt): Likewise.
13974         (genrtl_return_stmt): Likewise.
13975         (genrtl_for_stmt): Likewise.
13976         (genrtl_break_stmt): Likewise.
13977         (genrtl_continue_stmt): Likewise.
13978         (genrtl_scope_stmt): Likewise.
13979         (genrtl_switch_stmt): Likewise.
13980         (genrtl_case_label): Likewise.
13981         (genrtl_begin_compound_stmt): Likewise.
13982         (genrtl_finish_compound_stmt): Likewise.
13983         (genrtl_compound_stmt): Likewise.
13984         (genrtl_asm_stmt): Likewise.
13985         (genrtl_decl_cleanup): Likewise.
13986         (expand_cond): Likewise.
13987         (expand_stmt): Renamed to ...
13988         (lang_expand_stmt): ... this.
13989         (lang_expand_expr_stmt): Initialize.
13990         (set_current_function_name_declared): Likewise.
13991         (stmts_are_full_exprs_p): Likewise.
13992         (current_function_name_declared): Likewise.
13993         (anon_aggr_type_p): Likewise.
13994         (do_poplevel): Change reference to
13995         stmts_are_full_exprs_p to call to stmts_are_full_exprs_p().
13996         Change reference to stmts_are_full_exprs_p to
13997         current_stmt_tree->stmts_are_full_exprs_p.
13998         (add_tree): Likewise.
13999         (finish_expr_stmt): Likewise.
14000         (prep_stmt): Likewise.
14001         (lang_expand_stmt): Likewise.
14002         (begin_compound_stmt): Change reference to
14003         current_function_name_declared to
14004         cp_function_chain->name_declared and call to
14005         current_function_name_declared().
14006         (setup_vtbl_ptr): Likewise.
14007         (genrtl_do_poplevel): Removed.
14008
14009 2000-06-30  Jason Merrill  <jason@redhat.com>
14010
14011         * init.c (init_init_processing): Go back to aligning like
14012         double_type_node for old ABI.
14013         (get_cookie_size): Make cookie larger if we get a type that needs
14014         more alignment.
14015         (build_vec_delete): Call it.
14016
14017         * typeck.c (qualify_type_recursive): New fn.
14018         (composite_pointer_type): Use it.
14019         (build_binary_op): Use composite_pointer_type.
14020
14021 2000-06-24  Carlos O'Ryan  <coryan@cs.wustl.edu>
14022             Jason Merrill  <jason@redhat.com>
14023
14024         * typeck.c (check_return_expr): Don't complain about returning
14025         NULL from operator new if -fcheck-new.
14026         * cp-tree.h: Declare flag_check_new here.
14027         * init.c: Not here.
14028
14029 2000-06-28  Alex Samuel  <samuel@codesourcery.com>
14030
14031         * mangle.c (find_substitution): Use same_type_p.
14032         (write_encoding): Don't check for substitutions.
14033
14034 2000-06-30  Nathan Sidwell  <nathan@codesourcery.com>
14035
14036         * parse.y (expr_no_comma_rangle): New non-terminal.
14037         (template_parm): Use it for default parameter case.
14038         (template_arg): Use it.
14039         (expr_no_commas): Remove commented out undefined extensions.
14040         * Makefile.in (CONFLICTS): Adjust to 33 s/r & 48 r/r.
14041         * parse.h, parse.c: Rebuilt.
14042
14043 2000-06-30  Mark Mitchell  <mark@codesourcery.com>
14044
14045         * semantics.c (genrtl_asm_stmt): Don't decay input operands here.
14046         (finish_asm_stmt): Do it here, instead.
14047
14048         * cp-tree.h (ridpointers): Don't declare.
14049         * decl.c (record_builtin_type): Use CP_RID_MAX instead of RID_MAX.
14050         (record_builtin_java_type): Likewise.
14051         (init_decl_processing): Likewise.
14052         * lex.c: Move inclusion of lex.h.
14053         (ridpointers): Don't define.
14054         (init_parse): Initialize ripdointers.  Use CP_RID_MAX instead of
14055         RID_MAX.
14056         * lex.h (enum rid): Rename to ...
14057         (enum cp_rid): ... this.
14058         (ridpointers): Don't declare.
14059         * parse.y: Move inclusion of lex.h.
14060         * parse.c: Regenerated.
14061         * spew.c: Move inclusion of lex.h.
14062
14063         * cp-tree.h (struct language_function): Remove temp_name_counter.
14064         (temp_name_counter): Remove.
14065         (get_temp_name): Change prototype.
14066         (get_guard): New function.
14067         (get_guard_cond): Likewise.
14068         (set_guard): Likewise.
14069         * cvt.c (build_up_reference): Adjust call to get_temp_name.
14070         * decl.c (expand_static_init): Use get_guard and friends to
14071         implement guard variables.
14072         * decl2.c (get_temp_name): Assume that the variables created are
14073         always static.
14074         (get_sentry): Rename to ...
14075         (get_guard): ... this.  Implement new ABI guard variables.
14076         (get_guard_bits): New function.
14077         (get_guard_cond): Likewise.
14078         (set_guard): Likewise.
14079         (start_static_initialization_or_destruction): Use them.
14080         (do_static_initialization): Replace sentry with guard throughout.
14081         (do_static_destruction): Likewise.
14082         * init.c (create_temporary_var): Add comment.
14083
14084 2000-06-28  Alex Samuel  <samuel@codesourcery.com>
14085
14086         * mangle.c (find_substitution): Use same_type_p.
14087         (write_encoding): Don't check for substitutions.
14088
14089 2000-06-30  Nathan Sidwell  <nathan@codesourcery.com>
14090
14091         * parse.y (expr_no_comma_rangle): New non-terminal.
14092         (template_parm): Use it for default parameter case.
14093         (template_arg): Use it.
14094         (expr_no_commas): Remove commented out undefined extensions.
14095         * Makefile.in (CONFLICTS): Adjust to 33 s/r & 48 r/r.
14096         * parse.h, parse.c: Rebuilt.
14097
14098 2000-06-29  Mark Mitchell  <mark@codesourcery.com>
14099
14100         * cp-tree.h (flag_const_strings): Remove.
14101         (warn_parentheses): Likewise.
14102         (warn_format): Likewise.
14103         (common_type): Likewise.
14104         (default_conversion): Likewise.
14105         (build_binary_op): Likewise.
14106         (cp_build_binary_op): New macro.
14107         * call.c (build_new_op): Use cp_build_binary_op instead of
14108         build_binary_op.
14109         * class.c (build_vtable_entry_ref): Likewise.
14110         * decl.c (expand_static_init): Likewise.
14111         (compute_array_index_type): Likewise.
14112         (build_enumerator): Likewise.
14113         * decl2.c (delete_sanity): Likewise.
14114         (start_static_initialization_or_destruction): Likewise.
14115         * error.c (dump_type_suffix): Likewise.
14116         * init.c (resolve_offset_ref): Likewise.
14117         (build_new): Likewise.
14118         (build_new_1): Likewise.
14119         (build_vec_delete_1): Likewise.
14120         (build_vec_init): Likewise.
14121         (build_delete): Likewise.
14122         * rtti.c (synthesize_tinfo_fn): Likewise.
14123         (synthesize_tinfo_var): Likewise.
14124         * search.c (expand_upcast_fixups): Likewise.
14125         (fixup_all_virtual_upcast_offsets): Likewise.
14126         * typeck.c (build_array_ref): Likewise.
14127         (get_member_function_from_ptrfunc): Likewise.
14128         (build_binary_op): Add parameter.
14129         (pointer_int_sum): Use cp_build_binary_op.
14130         (pointer_diff): Likewise.
14131         (build_modify_expr): Likewise.
14132         (get_delta_difference): Likewise.
14133         (build_ptrmemfunc): Likewise.
14134
14135 2000-06-29  Nathan Sidwell  <nathan@codesourcery.com>
14136
14137         * cp-tree.h (SET_DECL_ARTIFICIAL): Remove.
14138         * decl.c (create_implicit_typedef): Adjust.
14139         * decl2.c (build_artificial_parm): Adjust.
14140         * method.c (implicitly_declare_fn): Adjust.
14141         * pt.c (push_inline_template_parms_recursive): Adjust.
14142         (process_template_parm): Adjust.
14143         (overloaded_template_name): Adjust.
14144         * semantics.c (finish_template_template_parm): Adjust.
14145
14146 2000-06-28  Mark Mitchell  <mark@codesourcery.com>
14147
14148         * cp-tree.h (CLEAR_BINFO_NEW_VTABLE_MARKED): Remove.
14149         * class.c (update_vtable_entry_for_fn): Correct logic for deciding
14150         where to emit thunks.
14151         (build_vtt): Adjust call to build_vtt_inits.
14152         (build_vtt_inits): Add parameter to indicate whether or not
14153         sub-VTTs for virtual bases should be included.  Adjust handling of
14154         construction vtables.
14155         (get_matching_base): New function.
14156         (dfs_build_vtt_inits): Rename to ...
14157         (dfs_build_secondary_vptr_vtt_inits): Adjust handling of
14158         construction vtables.
14159         (dfs_fixup_binfo_vtbls): Likewise.
14160         (build_ctor_vtbl_groups): Build construction vtables for virtual
14161         bases, too.
14162         (accumulate_vtbl_inits): Tweak logic for deciding whether or not
14163         to build construction vtbls.
14164         (dfs_accumulate_vtbl_inits): Adjust handling of
14165         construction vtables.
14166
14167         * pt.c (tsubst, case TEMPLATE_TEMPLATE_PARM): Handle cv-qualified
14168         types correctly.
14169
14170 2000-06-27  Mark Mitchell  <mark@codesourcery.com>
14171
14172         * decl.c (grokfndecl): Set DECL_CONTEXT for static functions too.
14173
14174 2000-06-26  Nathan Sidwell  <nathan@codesourcery.com>
14175
14176         * search.c (hides): Remove.
14177         (is_subobject_of_p): Add most_derived parameter. Use
14178         CANONICAL_BINFO.
14179         (lookup_field_queue_p): Adjust.
14180         (lookup_field_r): Adjust.
14181
14182 2000-06-26  Nathan Sidwell  <nathan@codesourcery.com>
14183
14184         * decl2.c (handle_class_head): Bash typedefs to the type's main
14185         decl.
14186
14187 2000-06-25  Mark Mitchell  <mark@codesourcery.com>
14188
14189         * cp-tree.h (genrtl_begin_stmt_expr): Rename to ...
14190         (begin_global_stmt_expr): ... this.
14191         (genrtl_finish_stmt_expr): Rename to ...
14192         (finish_global_stmt_expr): ... this.
14193         * init.c (begin_init_stmts): Adjust calls.
14194         (finish_init_stmts): Likewise.
14195         * semantics.c (genrtl_begin_stmt_expr): Rename to ...
14196         (begin_global_stmt_expr): ... this.
14197         (genrtl_finish_stmt_expr): Rename to ...
14198         (finish_global_stmt_expr): ... this.
14199
14200 2000-06-25 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
14201
14202         * search.c (lookup_member): Fix typo in comment.
14203
14204 2000-06-24  Jason Merrill  <jason@redhat.com>
14205
14206         * decl.c (pushdecl): Don't set DECL_CONTEXT from current_namespace.
14207         (push_namespace): Set DECL_CONTEXT for a new NAMESPACE_DECL.
14208
14209 2000-06-24  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
14210
14211         * parse.y (complex_direct_notype_declarator): Support global_scope.
14212         * Makefile.in: Adjust conflict count.
14213
14214 2000-06-23  Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
14215
14216         * parse.y (template_arg): Convert TEMPLATE_DECL
14217         that is a template template parameter to
14218         TEMPLATE_TEMPLATE_PARM here.
14219
14220         * cp-tree.def (TEMPLATE_TEMPLATE_PARM): Adjust comment.
14221         * cp-tree.h (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): New macro.
14222         (copy_template_template_parm): Adjust prototype.
14223         * decl.c (grokdeclarator): Remove dead code.
14224         * pt.c (process_template_parm): Tidy.
14225         (lookup_template_class): Construct nodes in
14226         copy_template_template_parm.
14227         (tsubst): Pass TEMPLATE_DECL rather than IDENTIFIER_NODE to
14228         lookup_template_class.  Use TYPE_TI_TEMPLATE.
14229         * tree.c (copy_template_template_parm): Add NEWARGS
14230         parameter.
14231         (mapcar): Adjust call to copy_template_template_parm.
14232         * typeck.c (comptypes): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL.
14233         * method.c (build_template_template_parm_names): Change error
14234         code to avoid compilation warning.
14235
14236         * gxxint.texi: Document template template parameter
14237         name mangling.
14238
14239 2000-06-21  Alex Samuel  <samuel@codesourcery.com>
14240
14241         * Make-lang.in (CXX_LIB2FUNCS): Add cp-demangle.o and dyn-string.o.
14242         (CXX_LIB2SRCS): Add cp-demangle.c and dyn-string.c.
14243         (cp-demangle.o): New rule.
14244         (dyn-string.o): Likewise.
14245         * inc/cxxabi.h (__cxa_demangle): New declaration.
14246
14247 2000-06-22  Mark Mitchell  <mark@codesourcery.com>
14248
14249         * cp-tree.h (BV_USE_VCALL_INDEX_P): New macro.
14250         (BV_GENERATE_THUNK_WITH_VTABLE_P): Likewise.
14251         (lang_decl_flags): Add generate_with_vtable_p.  Make vcall_offset
14252         a tree, not an int.
14253         (THUNK_GENERATE_WITH_VTABLE_P): New macro.
14254         (make_thunk): Change prototype.
14255         (emit_thunk): Rename to use_thunk.
14256         (mangle_thunk): Change prototype.
14257         * class.c (get_derived_offset): Simplify.
14258         (copy_virtuals): Clear BV_USE_VCALL_INDEX_P and
14259         BV_GENERATE_THUNK_WITH_VTABLE_P.
14260         (build_primary_vtable): Simplify.
14261         (add_virtual_function): Use BV_FN, rather than TREE_VALUE.
14262         (dfs_find_base): Remove.
14263         (update_vtable_entry_for_fn): Correct bug in finding the base
14264         where a virtual function was first declared.  Figure out whether
14265         or not to emit a vcall-thunk with the vtables in which it appears.
14266         Correct logic for deciding whether to use an ordinary thunk, or a
14267         vcall thunk.
14268         (finish_struct_1): Remove unnecssary code.
14269         (build_vtbl_initializer): Use ssize_int for the running counter of
14270         negative indices.
14271         (build_vtbl_initializer): Only use vcall thunks where necessary.
14272         Mark thunks as needing to be emitted with their vtables, or not.
14273         (build_vbase_offset_vtbl_entries): Adjust for use of ssize_int in
14274         indices.  Use size_binop.
14275         (dfs_build_vcall_offset_vtbl_entries): Don't rely on
14276         BINFO_PRIMARY_MARKED_P here.  Use BV_FN consistently.  Use
14277         size_binop.
14278         (build_rtti_vtbl_entries): Adjust call to build_vtable_entry.
14279         (build_vtable_entry): Mark thunks as needing to be emitted with
14280         their vtables, or not.
14281         * decl.c (lang_mark_tree): Mark the vcall_offset in a thunk.
14282         * decl2.c (mark_vtable_entries): Use use_thunk instead of
14283         emit_thunk.
14284         * dump.c (dequeue_and_dump): Remove dead code.  Dump new thunk
14285         information.
14286         * error.c (dump_expr): Use BV_FN.
14287         * mangle.c (mangle_thunk): Adjust now that vcall_offset is a tree,
14288         not an int.
14289         * method.c (make_thunk): Likewise.
14290         (emit_thunk): Rename to use_thunk.  Allow callers to decide
14291         whether or not to actually emit the thunk.  Adjust for changes in
14292         representation of vcall offsets.
14293         * search.c (dfs_get_pure_virtuals): Use BV_FN.
14294         * semantics.c (emit_associated_thunks): New function.
14295         (expand_body): Use it.
14296         * ir.texi: Adjust decriptions of thunks.
14297
14298 2000-06-22  Jason Merrill  <jason@redhat.com>
14299
14300         * pt.c (tsubst_decl, case FUNCTION_DECL): Clear DECL_SAVED_TREE.
14301         (tsubst_friend_function): Copy it here.
14302
14303         * decl.c (grok_op_properties): Fix typo.
14304
14305         * decl2.c (delete_sanity): Clarify warning, avoid failure on
14306         deleting void*.
14307
14308         * pt.c (check_explicit_specialization): Clarify error.
14309
14310         * decl.c (pushdecl): Also pull out one of the FUNCTION_DECLs from
14311         an old OVERLOAD when we're declaring a non-function.
14312         (pushdecl, destroy_local_var): Check for error_mark_node.
14313         (warn_extern_redeclared_static): Also bail early if
14314         we're a CONST_DECL.
14315         (push_overloaded_decl): Ignore an old error_mark_node.
14316
14317 2000-06-22  Nathan Sidwell  <nathan@codesourcery.com>
14318
14319         * call.c (build_x_va_arg): Check if in a template decl.
14320         * pt.c (tsubst_copy, case VA_ARG_EXPR): Use build_x_va_arg.
14321
14322 2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14323
14324         * class.c (push_lang_context): TYPE_NAME gets you to the Java
14325         types DECLs.
14326         * decl.c (check_goto): Computed gotos assumed OK.
14327
14328 2000-06-20  Jason Merrill  <jason@redhat.com>
14329
14330         * pt.c (tsubst_decl, case TYPE_DECL): Fix test for TYPE_DECLs
14331         for which we don't need to look for instantiations.
14332
14333 2000-06-21  Nathan Sidwell  <nathan@codesourcery.com>
14334
14335         * parse.y (program): Always call finish_translation_unit.
14336         * parse.c, parse.h: Rebuilt.
14337
14338 2000-06-20  Zack Weinberg  <zack@wolery.cumb.org>
14339
14340         * method.c: Don't include hard-reg-set.h.
14341
14342 2000-06-20  Nathan Sidwell  <nathan@codesourcery.com>
14343
14344         * rtti.c (get_base_offset): Cope when vbase field is in a base.
14345
14346 2000-06-20  Nathan Sidwell  <nathan@codesourcery.com>
14347
14348         * call.c (build_conditional_expr): Use VOID_TYPE_P.
14349         * cvt.c (cp_convert_to_pointer): Likewise.
14350         (convert_to_void): Likewise.
14351         * error.c (dump_expr): Likewise.
14352         * except.c (complete_ptr_ref_or_void_ptr_p): Likewise.
14353         * init.c (build_delete): Likewise.
14354         * method.c (emit_thunk): Likewise.
14355         * optmize.c (declare_return_variable): Likewise.
14356         * rtti.c (get_tinfo_decl_dynamic): Likewise.
14357         (get_typeid): Likewise.
14358         (build_dynamic_cast_1): Likewise.
14359         * typeck.c (composite_pointer_type): Likewise.
14360         (common_type): Likewise.
14361         (build_indirect_ref): Likewise.
14362         (build_binary_op): Likewise.
14363         (build_x_compound_expr): Likewise.
14364         (check_return_expr): Likewise.
14365         * typeck2.c (add_exception_specifier): Likewise.
14366
14367         * mangle.c (write_method_parms): Use direct comparison for end
14368         of parmlist.
14369
14370 2000-06-19  Benjamin Chelf  <chelf@codesourcery.com>
14371
14372         * cp-tree.h (genrtl_try_block): Declare function.
14373         (genrtl_handler): Likewise.
14374         (genrtl_catch_block): Likewise.
14375         (genrtl_ctor_stmt): Likewise.
14376         (genrtl_subobject): Likewise.
14377         (genrtl_decl_cleanup): Likewise.
14378         (genrtl_do_poplevel): Likewise.
14379         (genrtl_do_pushlevel): Likewise.
14380         (genrtl_clear_out_block): Likewise.
14381         (genrtl_goto_stmt): Likewise.
14382         (genrtl_expr_stmt): Likewise.
14383         (genrtl_decl_stmt): Likewise.
14384         (genrtl_if_stmt): Likewise.
14385         (genrtl_while_stmt): Likewise.
14386         (genrtl_do_stmt): Likewise.
14387         (genrtl_return_stmt): Likewise.
14388         (genrtl_for_stmt): Likewise.
14389         (genrtl_break_stmt): Likewise.
14390         (genrtl_continue_stmt): Likewise.
14391         (genrtl_scope_stmt): Likewise.
14392         (genrtl_switch_stmt): Likewise.
14393         (genrtl_case_label): Likewise.
14394         (genrtl_begin_compound_stmt): Likewise.
14395         (genrtl_finish_compound_stmt): Likewise.
14396         (genrtl_compound_stmt): Likewise.
14397         (genrtl_asm_stmt): Likewise.
14398         (genrtl_named_return_value): Likewise.
14399         (genrtl_begin_stmt_expr): Likewise.
14400         (genrtl_finish_stmt_expr): Likewise.
14401         (finish_for_stmt): Removed first argument.
14402         (finish_switch_stmt): Likewise.
14403
14404         * semantics.c (genrtl_try_block): Define function.
14405         (genrtl_handler): Likewise.
14406         (genrtl_catch_block): Likewise.
14407         (genrtl_ctor_stmt): Likewise.
14408         (genrtl_subobject): Likewise.
14409         (genrtl_decl_cleanup): Likewise.
14410         (genrtl_do_poplevel): Likewise.
14411         (genrtl_do_pushlevel): Likewise.
14412         (genrtl_clear_out_block): Likewise.
14413         (genrtl_goto_stmt): Likewise.
14414         (genrtl_expr_stmt): Likewise.
14415         (genrtl_decl_stmt): Likewise.
14416         (genrtl_if_stmt): Likewise.
14417         (genrtl_while_stmt): Likewise.
14418         (genrtl_do_stmt): Likewise.
14419         (genrtl_return_stmt): Likewise.
14420         (genrtl_for_stmt): Likewise.
14421         (genrtl_break_stmt): Likewise.
14422         (genrtl_continue_stmt): Likewise.
14423         (genrtl_scope_stmt): Likewise.
14424         (genrtl_switch_stmt): Likewise.
14425         (genrtl_case_label): Likewise.
14426         (genrtl_begin_compound_stmt): Likewise.
14427         (genrtl_finish_compound_stmt): Likewise.
14428         (genrtl_compound_stmt): Likewise.
14429         (genrtl_asm_stmt): Likewise.
14430         (genrtl_named_return_value): Likewise.
14431         (genrtl_begin_stmt_expr): Likewise.
14432         (genrtl_finish_stmt_expr): Likewise.
14433         (finish_for_stmt): Removed first argument and generate rtl
14434         specific code.
14435         (finish_switch_stmt): Likewise.
14436         (do_poplevel): Removed generate rtl specific code.
14437         (do_pushlevel): Likewise.
14438         (add_tree): Likewise.
14439         (finish_goto_stmt): Likewise.
14440         (finish_expr_stmt): Likewise.
14441         (begin_if_stmt): Likewise.
14442         (finish_if_stmt_cond): Likewise.
14443         (finish_then_clause): Likewise.
14444         (begin_else_clause): Likewise.
14445         (finish_else_clause): Likewise.
14446         (finish_if_stmt): Likewise.
14447         (clear_out_block): Likewise.
14448         (begin_while_stmt): Likewise.
14449         (finish_while_stmt_cond): Likewise.
14450         (finish_while_stmt): Likewise.
14451         (begin_do_stmt): Likewise.
14452         (finish_do_body): Likewise.
14453         (finish_do_stmt): Likewise.
14454         (finish_return_stmt): Likewise.
14455         (begin_for_stmt): Likewise.
14456         (finish_for_init_stmt): Likewise.
14457         (finish_for_cond): Likewise.
14458         (finish_for_expr): Likewise.
14459         (finish_break_stmt): Likewise.
14460         (finish_continue_stmt): Likewise.
14461         (begin_switch_stmt): Likewise.
14462         (finish_switch_cond): Likewise.
14463         (finish_case_label): Likewise.
14464         (begin_try_block): Likewise.
14465         (begin_function_try_block): Likewise.
14466         (finish_try_block): Likewise.
14467         (finish_cleanup_try_block): Likewise.
14468         (finish_cleanup): Likewise.
14469         (finish_function_try_block): Likewise.
14470         (finish_handler_sequence): Likewise.
14471         (finish_function_handler_sequence): Likewise.
14472         (begin_handler): Likewise.
14473         (finish_handler_parms): Likewise.
14474         (begin_catch_block): Likewise.
14475         (finish_handler): Likewise.
14476         (begin_compound_stmt): Likewise.
14477         (finish_compound_stmt): Likewise.
14478         (finish_asm_stmt): Likewise.
14479         (finish_label_stmt): Likewise.
14480         (finish_label_decl): Likewise.
14481         (finish_subobject): Likewise.
14482         (finish_decl_cleanup): Likewise.
14483         (finish_named_return_value): Likewise.
14484         (begin_stmt_expr): Likewise.
14485         (finish_stmt_expr): Likewise.
14486
14487         * decl.c (initialize_local_var): Changed call to finish_expr_stmt
14488         to call genrtl_expr_stmt when appropriate.
14489
14490         * init.c (begin_init_stmts): Changed calls to begin_stmt_expr and
14491         begin_compound_expr to call genrtl_begin_stmt_expr and
14492         genrtl_begin_compound_expr when appropriate.
14493         (finish_init_stmts): Changed calls to finish_compound_expr and
14494         finish_stmt_expr to call genrtl_finish_compound_expr and
14495         genrtl_finish_stmt_expr when appropriate.
14496         (expand_default_init): Changed call to finish_expr_stmt to call
14497         genrtl_expr_stmt when appropriate.
14498         (build_vec_init): Likewise.
14499
14500         * parse.y (simple_stmt): Removed first argument from call to
14501         finish_for_stmt. Removed first argument from call to
14502         finish_switch_stmt.
14503
14504         * parse.c: Regenerated.
14505
14506         * pt.c (tsubst_expr): Removed first argument from call to
14507         finish_for_stmt. Removed first argument from call to
14508         finish_switch_stmt.
14509
14510 2000-06-16  Benjamin Chelf  <chelf@codesourcery.com>
14511
14512         * cp-tree.h (enum cplus_tree_code): Changed __DUMMY to
14513         CP_DUMMY_TREE_CODE. Remove #include "c-common.def".
14514
14515         * lex.c (cplus_tree_code_type[]): Removed #include "c-common.def".
14516         (cplus_tree_code_length[]): Likewise.
14517         (cplus_tree_code_name[]): Likewise.
14518         (init_parse): Added call to add_c_tree_codes. Changed
14519         LAST_AND_UNUSED_TREE_CODE to LAST_C_TREE_CODE.
14520
14521 2000-06-16  Mark Mitchell  <mark@codesourcery.com>
14522
14523         * cp-tree.h (finish_mem_initializers): Declare.
14524         (count_trees): Likewise.
14525         * parse.y (base_init): Use finish_mem_initializers.
14526         * semantics.c (finish_mem_initializers): New function.
14527
14528         * tree.c (count_trees_r): Prototype.  Use DATA parameter to store
14529         the number of trees.
14530         (n_trees): Remove.
14531         (count_trees): Don't use it.
14532
14533 2000-06-15  Jason Merrill  <jason@redhat.com>
14534
14535         * tree.c (count_trees): New debugging function.
14536
14537         * typeck.c (build_x_function_call): Use DECL_FUNCTION_TEMPLATE_P.
14538         * init.c (build_member_call): Pull out the name of a DECL.
14539
14540         * Makefile.in (semantics.o, pt.o): Depend on TIMEVAR_H.
14541         * semantics.c (expand_body): Push to TV_INTEGRATION here.
14542         * optimize.c (optimize_function): Not here.
14543         * pt.c (instantiate_decl): Push to TV_PARSE.
14544
14545 2000-06-15  Mark Mitchell  <mark@codesourcery.com>
14546
14547         * cp-tree.h (struct language_function): Remove x_base_init_list
14548         and x_member_init_list.
14549         (current_base_init_list): Remove.
14550         (current_member_init_list): Likewise.
14551         (setup_vtbl_ptr): Change prototype.
14552         (emit_base_init): Likewise.
14553         (expand_member_init): Likewise.
14554         (reinit_parse_for_function): Remove.
14555         * decl.c (save_function_data): Don't clear x_base_init_list and
14556         x_member_init_list.
14557         (mark_language_function): Don't mark them.
14558         * init.c (perform_member_init): Tweak comment.
14559         (sort_member_init): Take the list of initializers as an argument.
14560         (sort_base_init): Likewise.
14561         (emit_base_init): Likewise.
14562         (expand_member_init): Return the initializer.  Don't use global
14563         variables.
14564         * lex.c (reinit_parse_for_function): Remove.
14565         * method.c (build_template_parm_names): Correct substitution.
14566         (do_build_copy_constructor): Don't use current_member_init_list
14567         and current_base_init_list.
14568         (synthesize_method): Likewise.
14569         * parse.y (base_init): Split mem-initializers into
14570         base-initializers and field-initializers.
14571         (member_init_list): Build up the list here.
14572         (member_init): Return the initializer.
14573         (fn.depfn): Don't use reinit_parse_for_function.
14574         * parse.c: Regenerated.
14575         * pt.c (convert_nontype_argument): Don't make an ADDR_EXPR of the
14576         ERROR_MARK.
14577         (tsubst_expr): Don't use current_member_init_list
14578         and current_base_init_list.
14579         (tsubst_expr_values): Rename to ...
14580         (tsubst_initializer_list): ... this.  Use convert_from_reference.
14581         * semantics.c (setup_vtbl_ptr): Don't use current_member_init_list
14582         and current_base_init_list.
14583         (begin_function_definition): Don't call reinit_parse_for_function.
14584
14585         * dump.c (dequeue_and_dump): Use TREE_VEC_LENGTH with vectors.
14586
14587         * error.c (dump_expr): Handle ADDR_EXPRs with REFERENCE_TYPE
14588         correctly.
14589
14590         * cp-tree.h (DECL_PENDING_INLINE_P): Relax checking.
14591
14592 2000-06-14  Benjamin Chelf  <chelf@codesourcery.com>
14593
14594         * cp-tree.h (IF_COND): Move to c-common.h.
14595         (THEN_CLAUSE): Likewise.
14596         (ELSE_CLAUSE): Likewise.
14597         (WHILE_COND): Likewise.
14598         (WHILE_BODY): Likewise.
14599         (DO_COND): Likewise.
14600         (DO_BODY): Likewise.
14601         (RETURN_EXPR): Likewise.
14602         (EXPR_STMT_EXPR): Likewise.
14603         (FOR_INIT_STMT): Likewise.
14604         (FOR_COND): Likewise.
14605         (FOR_EXPR): Likewise.
14606         (FOR_BODY): Likewise.
14607         (SWITCH_COND): Likewise.
14608         (SWITCH_BODY): Likewise.
14609         (CASE_LOW): Likewise.
14610         (CASE_HIGH): Likewise.
14611         (GOTO_DESTINATION): Likewise.
14612         (COMPOUND_BODY): Likewise.
14613         (ASM_CV_QUAL): Likewise.
14614         (ASM_STRING): Likewise.
14615         (ASM_OUTPUTS): Likewise.
14616         (ASM_INPUTS): Likewise.
14617         (ASM_CLOBBERS): Likewise.
14618         (DECL_STMT_DECL): Likewise.
14619         (STMT_EXPR_STMT): Likewise.
14620         (LABEL_STMT_LABEL): Likewise.
14621         (SCOPE_BEGIN_P): Likewise.
14622         (SCOPE_END_P): Likewise.
14623         (SCOPE_STMT_BLOCK): Likewise.
14624         (SCOPE_NULLIFIED_P): Likewise.
14625         (SCOPE_NO_CLEANUPS_P): Likewise.
14626         (SCOPE_PARTIAL_P): Likewise.
14627         (ASM_VOLATILE_P): Likewise.
14628         (STMT_LINENO): Likewise.
14629         (STMT_LINENO_FOR_FN_P): Likewise.
14630
14631         * cp-tree.def: Removed SRCLOC, SIZEOF_EXPR, ARROW_EXPR,
14632         ALIGNOF_EXPR, EXPR_STMT, COMPOUND_STMT, DECL_STMT, IF_STMT,
14633         FOR_STMT, WHILE_STMT, DO_STMT, RETURN_STMT, BREAK_STMT,
14634         CONTINUE_STMT, SWITCH_STMT, GOTO_STMT, LABEL_STMT, ASM_STMT,
14635         SCOPE_STMT, CASE_LABEL, STMT_EXPR.
14636
14637         * Makefile.in (CXX_TREE_H): Added $(srcdir)/../c-common.def.
14638
14639         * Make-lang.in (CXX_SRCS): Added $(srcdir)/c-common.def.
14640         (cc1plus$(exeext)): Added $(srcdir)/c-common.def.
14641
14642         * lex.c (cplus_tree_code_type[]): Added '#include "c-common.def"'.
14643         (cplus_tree_code_length[]): Added '#include "c-common.def"'.
14644         (cplus_tree_code_name[]): Added '#include "c-common.def"'.
14645
14646 2000-06-14  Mark Mitchell  <mark@codesourcery.com>
14647
14648         * cp-tree.h (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH): New macro.
14649         * class.c (dfs_find_final_overrider): Set it appropriately.
14650         (dfs_built_vtt_inits): Check BINFO_OVERRIDE_ALONG_VIRTUAL_PATH to
14651         avoid unneeded secondary vptrs.
14652
14653 2000-06-13  Jakub Jelinek  <jakub@redhat.com>
14654
14655         * class.c (build_secondary_vtable): Set DECL_USER_ALIGN.
14656         (check_bitfield_decl, check_field_decl): Likewise.
14657         (build_vtbl_or_vbase_field, build_base_field): Likewise.
14658         (layout_class_type): Set DECL_USER_ALIGN resp. CLASSTYPE_USER_ALIGN.
14659         * decl.c (record_unknown_type): Set TYPE_USER_ALIGN.
14660         (xfer_tag, finish_enum): Likewise.
14661         * decl2.c (finish_builtin_type): Likewise.
14662         * init.c (init_init_processing): Likewise.
14663         * pt.c (instantiate_class_template): Likewise.
14664         * rtti.c (get_tinfo_decl, synthesize_tinfo_fn): Set DECL_USER_ALIGN.
14665         * cp-tree.h (struct lang_type): Add user_align member.
14666         (CLASSTYPE_USER_ALIGN): Define.
14667
14668 2000-06-13  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
14669
14670         * Make-lang.in (c++.install-common): Install g++-cross in
14671         $(gcc_tooldir)/bin as g++ and c++; g++ in $(bindir) as
14672         $(target_alias)-g++ and $(target_alias)-c++.
14673
14674 2000-06-12  Mark Mitchell  <mark@codesourcery.com>
14675
14676         * class.c (vcall_offset_data_s): Add last_init and fns.
14677         (overrides): Rename to same_signature_p.
14678         (dfs_find_final_overrider): Adjust accordingly.
14679         (mark_overriders): Likewise.
14680         (warn_hidden): Likewise.
14681         (build_vtbl_initializer): Reorganize machinery for building things
14682         at negative offsets.
14683         (build_vcall_and_vbase_vtbl_entries): Likewise.
14684         (build_vbase_offset_vtbl_entries): Likewise.
14685         (dfs_build_vcall_offset_vtbl_entries): Correct order of vcall
14686         offset entries.  Do not create two entries for functions with the
14687         same signature.
14688         (build_vcall_offset_vtbl_entries): Initialize vod->fns.
14689         (build_rtti_vtbl_entries): Reorganize machinery for building things
14690         at negative offsets.
14691
14692         * optimize.c (expand_call_inline): Don't recurse into the code
14693         used to initialize the parameters more than once.
14694
14695 2000-06-11  Mark Mitchell <mark@codesourcery.com>
14696
14697         * mangle.c (NESTED_TEMPLATE_MATCH): Fix typo in comment.
14698         (is_std_substitution): Don't check CLASSTYPE_USE_TEMPLATE here.
14699         (find_substitution): Only use the `Sa' substitution for
14700         std::allocator, not instantiations of it.
14701         (write_template_prefix): Move comment.  Only use a TREE_LIST to
14702         represent substitutions for a member template.
14703         (write_array_type): Mangle array dimensions correctly.
14704         * optimize.c (maybe_clone_body): Copy more information from the
14705         cloned function.
14706         * pt.c (regenerate_decl_from_template): Preserve DECL_USE_TEMPLATE
14707         on the regenerated declaration.
14708
14709 2000-06-11  Chip Salzenberg  <chip@valinux.com>
14710             Mark Mitchell <mark@codesourcery.com>
14711
14712         * class.c (build_vtable): Clarify comment.
14713         (build_ctor_vtbl_group): Pass the most derived type to
14714         build_vtable.
14715
14716 2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14717
14718         * decl2.c (compare_options): Don't needlessly cast away const-ness.
14719
14720 2000-06-10  Mark Mitchell  <mark@codesourcery.com>
14721
14722         * decl.c (add_binding): Handle duplicate declarations of external
14723         variables.
14724
14725 2000-06-09  Chip Salzenberg  <chip@valinux.com>
14726             Mark Mitchell <mark@codesourcery.com>
14727
14728         * mangle.c (write_number): Take an unsigned HOST_WIDE_INT as an
14729         argument.
14730         (write_signed_number): New macro.
14731         (write_unsigned_number): Likewise.
14732         (write_source_name): Use them.
14733         (write_number): Handle signed and unsigned values.
14734         (write_integer_cst): Use tree_int_cst_sgn, and use
14735         write_unsigned_number or write_signed_number as appropriate.
14736         (write_discriminator): Use write_unsigned_number or
14737         write_signed_number as appropriate.
14738         (write_template_arg_literal): Likewise.
14739         (write_array_type): Use tree_low_cst.
14740         (write_template_parm):  Use write_unsigned_number or
14741         write_signed_number as appropriate.
14742         (write_substitution): Adjust call to write_number.
14743         (write_type): Get the TYPE_MAIN_VARIANT before mangling it.
14744         (write_expression): Handle non-type template arguments of
14745         reference type correctly.
14746         (mangle_thunk): Use write_signed_number.
14747
14748 2000-06-09  Chip Salzenberg  <chip@valinux.com>
14749
14750         * mangle.c (find_substition): Don't mangle objects with typename
14751         substitutions (e.g. "cin" as "Si").
14752
14753 2000-06-09  Zack Weinberg  <zack@wolery.cumb.org>
14754
14755         * call.c (add_candidate): Use ggc_alloc_cleared.
14756         * decl.c (lookup_label): Likewise.
14757         * lex.c (retrofit_lang_decl): Likewise.
14758
14759 2000-06-09  Jason Merrill  <jason@casey.soma.redhat.com>
14760
14761         * semantics.c (expand_body): Push to TV_EXPAND.
14762         * optimize.c (optimize_function): Push to TV_INTEGRATION.
14763         * decl.c (start_function): Always call announce_function.
14764
14765         * tinfo2.cc: Just declare abort.
14766
14767 2000-06-09  Gabriel Dos Reis  <gdr@codesourcery.com>
14768
14769         * lex.c (DEF_OPERATOR): Say `operator@' -not- `operator @'
14770         whenever @ is a symbolic name.
14771
14772 2000-06-08  Jakub Jelinek  <jakub@redhat.com>
14773
14774         * method.c (make_thunk): Clear DECL_VTT_PARM in thunk.
14775
14776 2000-06-07  Mark Mitchell  <mark@codesourcery.com>
14777
14778         * decl.c (pushdecl): Look up functions by DECL_NAME, not
14779         DECL_ASSEMBLER_NAME.
14780
14781 2000-06-06  Mark Mitchell  <mark@codesourcery.com>
14782
14783         * decl2.c (c_language): Define.
14784
14785 2000-06-06  Gabriel Dos Reis  <gdr@codesourcery.com>
14786
14787         * lex.c (lang_init_options): Tweak.
14788
14789         * decl2.c: Remove #inclusion of diagnostic.h
14790         (lang_decode_option): Move diagnostic formatting options to
14791         toplevel.
14792
14793         * lang-options.h: Remove documentation for diagnostic options.
14794
14795         * Makefile.in (lex.o): Depends upon diagnostic.h
14796
14797 2000-06-06  Mark Mitchell  <mark@codesourcery.com>
14798
14799         * decl.c (redeclaration_error_message): If two TEMPLATE_DECLs have
14800         the same DECL_RESULT, it's not a redefinition.
14801         * pt.c (tsubst_decl): Remove code to handle illegal
14802         specializations.
14803
14804 2000-06-06  Nathan Sidwell  <nathan@codesourcery.com>
14805
14806         * exception.cc: (__eh_alloc, __eh_free): Moved to libgcc2.c
14807
14808 2000-06-05  Jason Merrill  <jason@casey.soma.redhat.com>
14809
14810         * search.c (maybe_suppress_debug_info): Don't check
14811         CLASSTYPE_INTERFACE_ONLY if CLASSTYPE_INTERFACE_KNOWN isn't set.
14812
14813         * pt.c (mark_decl_instantiated): Do SET_DECL_EXPLICIT_INSTANTIATION
14814         here if extern_p.
14815
14816         Remember instantiation context in deferred instantiations.
14817         * cp-tree.h (struct tinst_level): Remove.
14818         (TINST_DECL, TINST_LINE, TINST_FILE): New macros.
14819         * pt.c (current_tinst_level): Now a tree.
14820         (print_template_context, push_tinst_level, pop_tinst_level,
14821         tinst_for_decl): Adjust.
14822         (reopen_tinst_level): New fn.
14823         (init_pt): Register current_tinst_level as a root.
14824         (add_pending_template): Put current_tinst_level in TREE_PURPOSE
14825         of the pending templates list.
14826         (instantiate_pending_templates): Adjust.  Call reopen_tinst_level.
14827         * lex.c (extract_interface_info): Adjust.
14828         * decl2.c (warn_if_unknown_interface): Adjust.
14829
14830 2000-06-05  Mark Mitchell  <mark@codesourcery.com>
14831
14832         * class.c (indirect_primary_base_p): New function.
14833         (determine_primary_base): Use it.
14834
14835 2000-06-05  Nathan Sidwell  <nathan@codesourcery.com>
14836
14837         Update new-abi dynamic cast algorithm.
14838         * tinfo.cc (__class_type_info::__dyncast_result): Add
14839         whole_details. Adjust constructor.
14840         (__vmi_class_type_info::__do_dyncast): Adjust for vmi_flags.
14841         Avoid unnecessary searching.
14842         (__dynamic_cast): Adjust for __dyncast_result::whole_details.
14843
14844 2000-06-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
14845
14846         * decl.c (init_decl_processing): Don't call record_component_aliases.
14847         * tree.c (build_cplus_array_type_1): Likewise.
14848
14849 2000-06-04  Mark Mitchell  <mark@codesourcery.com>
14850
14851         * ir.texi: Correct typo.
14852         * mangle.c (write_expression): Handle non-type template arguments
14853         with reference type.
14854         * method.c (build_overload_value): Likewise.
14855         * pt.c (convert_nontype_argument): Explicitly represent conversion
14856         to a reference with an ADDR_EXPR.
14857         (unify): Always unify arguments in left-to-right order.
14858
14859 2000-06-03  Alex Samuel    <samuel@codesourcery.com>
14860             Mark Mitchell  <mark@codesourcery.com>
14861
14862         * Make-lang.in (CXX_SRCS): Add mangle.c.
14863         * Makefile.in (CXX_OBJS): Add mangle.o.
14864         (mangle.o): New rule.
14865
14866         * class.c (local_classes): New variable.
14867         * class.c (get_vtable_name): Use mangle_vtable_for_type for new ABI.
14868         (get_vtt_name): Use mangle_vtt_name for new ABI.
14869         (init_class_processing): Initialize local_classes.
14870         (build_ctor_vtbl_group): Use mangle_ctor_vtbl_for_type for new ABI.
14871         * cp-tree.h (cp_tree_index): Add CPTI_STD_IDENTIFIER.
14872         (std_identifier): New macro.
14873         (DECL_VOLATILE_MEMFUNC_P): New macro.
14874         (DECL_NAMESPACE_STD_P): Likewise.
14875         (local_classes): Declare.
14876         (get_mostly_instantiated_function_type): Declare.
14877         (init_mangle): Declare.
14878         (mangle_decl): Likewise.
14879         (mangle_type_string): Likewise.
14880         (mangle_type): Likewise.
14881         (mangle_typeinfo_for_type): Likewise.
14882         (mangle_typeinfo_string_for_type): Likewise.
14883         (mangle_vtbl_for_type): Likewise.
14884         (mangle_vtt_for_type): Likewise.
14885         (mangle_ctor_vtbl_for_type): Likewise.
14886         (mangle_thunk): Likewise.
14887         (mangle_conv_op_name_for_type): Likewise.
14888         (mangle_guard_variable): Likewise.
14889         * decl.c (pushtag): Keep track of local classes.
14890         (initialize_predefined_identifiers): Initialize std_identifier.
14891         (init_decl_processing): Use std_identifier.
14892         (start_decl): Don't treat instantiations as specializations.
14893         (grokdeclarator): Likewise.
14894         (grokvardecl): Call mangle_decl for new ABI.  Only set mangled
14895         name for fully-instantiated templates.
14896         * decl2.c (grokclassfn): Use set_mangled_name_for_decl for
14897         destructors with the new ABI.
14898         (finish_static_data_member_decl): Use mangle_decl under the new ABI.
14899         (grokfield): Use mangle_type for new ABI.
14900         (grokoptypename): Use mangle_conv_op_for_type for new ABI.
14901         (get_sentry): Use mangle_guard_variable for new ABI.
14902         (start_static_initialization_or_destruction): Likewise.
14903         * expr.c (extract_aggr_init): Remove.
14904         (extract_scalar_init): Likewise.
14905         (extract_init): Remove #if 0'd code.
14906         * mangle.c: New function.
14907         * method.c (build_mangled_name): Assert not flag_new_abi.
14908         (build_static_name): Likewise.
14909         (build_decl_overload_real): Likewise.
14910         (build_typename_overload): Likewise.
14911         (build_overload_with_type): Likewise.
14912         (build_overload_name): Likewise.
14913         (get_ctor_vtbl_name): Likewise.
14914         (start_squangling): Likewise.
14915         (get_id_2): Likewise.
14916         (set_mangled_name_for_decl): Call mangle_decl for new ABI.
14917         (init_method): Call init_mangle for new ABI.
14918         (make_thunk): Call mangle_thunk for new ABI.
14919         * operators.def: Correct new ABI manglings for the `%' operator.
14920         Add `::' operator.
14921         * pt.c (build_template_decl): Copy DECL_OVERLOADED_OPERATOR_P and
14922         DECL_ASSIGNMENT_OPERATOR_P to the TEMPLATE_DECL.
14923         (lookup_template_class): Call mangle_decl for new ABI.
14924         (get_mostly_instantiated_function_type): New function.
14925         (set_mangled_name_for_template_decl): Use it.
14926         (tsubst_decl): Use set_mangled_name_for_decl for destructors with
14927         the new ABI.  Use mangle_conv_op_name_for_type for instantiated
14928         conversion op names.
14929         * rtti.c (tinfo_name): Call mangle_type_string for new ABI.
14930         (get_tinfo_decl): Call mangle_typeinfo_for_type for new ABI.
14931         (tinfo_base_init):  Likewise.  Mangle typeinfo string name with
14932         mangle_typeinfo_string_for_type.
14933
14934 2000-06-03  Mark Mitchell  <mark@codesourcery.com>
14935
14936         * cp-tree.h (TMPL_ARGS_LEVEL): Clarify comment.
14937         (INNERMOST_TEMPLATE_ARGS): New macro.
14938         (innermost_args): Remove.
14939         (get_innermost_template_args): New function.
14940         * decl2.c (arg_assoc_class): Use INNERMOST_TEMPLATE_ARGS.
14941         * error.c (dump_function_decl): Be caution when using
14942         most_general_template.
14943         * method.c (build_template_parm_names):  Use
14944         INNERMOST_TEMPLATE_ARGS.
14945         * pt.c (add_to_template_args): Tidy comment
14946         (get_innermost_template_args): New function.
14947         (check_explicit_specialization): Clear DECL_INITIAL for a new
14948         specialization.
14949         (process_partial_specialization): Use INNERMOST_TEMPLATE_ARGS.
14950         Tidy.
14951         (push_template_decl): Always register specializations of the most
14952         general template.
14953         (convert_template_argument): Use INNERMOST_TEMPLATE_ARGS.
14954         (coerce_template_parms): Likewise.
14955         (lookup_template_class): Likewise.
14956         (innermost_args): Remove.
14957         (tsubst_decl): Use INNERMOST_TEMPLATE_ARGS.
14958         (tsubst_decl): Handle tricky specializations.  Use
14959         get_innermost_template_args.
14960         (instantiate_template): Simplify handling of partial
14961         instantiations.
14962         (get_class_bindings): Use INNERMOST_TEMPLATE_ARGS.
14963         (most_general_template): Reimplement, in a more straightforward
14964         manner.
14965         (regenerate_decl_from_template): Tweak formatting.  Use
14966         TMPL_ARGS_DEPTH for clarity.
14967         (set_mangled_name_for_template_decl): Use INNERMOST_ARGS.
14968
14969         * dump.c (dequeue_and_dump): Dump information about thunks.
14970
14971 2000-06-01  Richard Henderson  <rth@cygnus.com>
14972
14973         * decl.c (init_decl_processing): Set lang_get_alias_set first thing.
14974
14975 2000-06-01  Richard Henderson  <rth@cygnus.com>
14976
14977         * decl2.c (unsupported_options): Fix typo, make const.
14978         (lang_decode_option): Fix bsearch argument order.
14979
14980 2000-06-01  Mark Mitchell  <mark@codesourcery.com>
14981
14982         * init.c (resolve_offset_ref): Remove check for TREE_ADDRESSABLE
14983         on FIELD_DECLs.
14984
14985 2000-05-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
14986
14987         * cp-tree.h (c_get_alias_set): Deleted.
14988         * Makefile.in (decl.o): Include ../expr.h.
14989         * decl.c (expr.h): Include.
14990         (init_decl_processing): Call record_component_aliases for arrays.
14991         (grokdeclarator): Likewise.
14992         Set TREE_ADDRESSABLE for fields that aren't bitfields.
14993         * tree.c (build_cplus_array_type_1): Call record_component_aliases.
14994
14995 2000-05-31  Mark Mitchell  <mark@codesourcery.com>
14996
14997         Remove guiding declaration support.
14998         * cp/cp-tree.h (flag_dump_translation_unit): Make it const.
14999         (flag_guiding_decls): Remove.
15000         * call.c (build_user_type_conversion_1): Remove support for
15001         guiding decls.
15002         (build_new_function_call): Likewise.
15003         (build_new_op): Likewise.
15004         (build_new_method_call): Likewise.
15005         * decl.c (start_function): Likewise.
15006         * friend.c (is_friend): Likewise.
15007         (do_friend): Likewise.
15008         * decl2.c ((flag_dump_translation_unit): Make it const.
15009         (flag_guiding_decls): Remove.
15010         (unsupported_options): New variable
15011         (compare_options): New function.
15012         (lang_decode_option): Use them.
15013
15014         * decl.c (build_cp_library_fn): Set DECL_CONTEXT.
15015
15016         * method.c (mangle_expression): Adjust test for legal expression
15017         operators.
15018
15019         * pt.c (instantiate_decl): Save and restore the local
15020         specializations list.
15021
15022 2000-05-30  Jason Merrill  <jason@decepticon.cygnus.com>
15023
15024         * decl.c (grok_reference_init): Pass LOOKUP_ONLYCONVERTING.
15025
15026 2000-05-30  Mark Mitchell  <mark@codesourcery.com>
15027
15028         * call.c (add_template_candidate_real): Handle member template
15029         constructors for classes with virtual bases.
15030         (build_user_type_conversion_1): Use in_charge_arg_for_name.
15031         (build_new_method_call): Use DECL_NONSTATIC_MEMBER_FUNCTION_P.
15032
15033         * ir.texi: Update thunk documentation.
15034
15035         * call.c (joust): Fix handling of overloaded builtin operators.
15036
15037 2000-05-30  Zack Weinberg  <zack@wolery.cumb.org>
15038
15039         * cp-tree.h (DECL_ANTICIPATED): New macro.
15040         Document new use of DECL_LANG_FLAG_7.
15041         * decl.c (builtin_function): Set DECL_ANTICIPATED on builtins
15042         in the user namespace.
15043         * lex.c (do_identifier): If the identifier's declaration has
15044         DECL_ANTICIPATED on, it has not yet been declared.  But do not
15045         replace it with an ordinary implicit declaration.
15046
15047         * tinfo2.cc: Include stdlib.h.
15048
15049 2000-05-29  Mark Mitchell  <mark@codesourcery.com>
15050
15051         * cp-tree.h (CLASSTYPE_ALIGN_UNIT): New macro.
15052         * class.c (layout_empty_base): Use CLASSTYPE_ALIGN_UNIT, not
15053         CLASSTYPE_ALIGN.
15054
15055 2000-05-28  Gabriel Dos Reis  <gdr@codesourcery.com>
15056
15057         * decl2.c (lang_decode_option): Use skip_leading_substring instead
15058         of plain strncmp.
15059
15060 2000-05-28  Alexandre Oliva  <aoliva@cygnus.com>
15061
15062         * operators.def (<?): Duplicated, should have been...
15063         (>?): this.  Fixed.
15064
15065 2000-05-27  Alex Samuel    <samuel@codesourcery.com>
15066             Mark Mitchell  <mark@codesourcery.com>
15067
15068         * cp-tree.h (ansi_opname): Make it a macro.
15069         (ansi_assopname): Likewise.
15070         (struct lang_decl_flags): Add assignment_operator_p.
15071         (struct lang_decl): Add operator_code.
15072         (DECL_VTT_PARM): Adjust.
15073         (DECL_OVERLOADED_OPERATOR_P): Return the operator_code for an
15074         overloaded operator.
15075         (SET_OVERLOADED_OPERATOR_CODE): New macro.
15076         (DECL_ASSIGNMENT_OPERATOR_P): New macro.
15077         (DECL_ARRAY_DELETE_OPERATOR_P): Adjust.
15078         (opname_tab): Remove.
15079         (assignop_tab): Likewise.
15080         (operator_name_info_t): New type.
15081         (operator_name_info): New variable.
15082         (assignment_operator_name_info): Likewise.
15083         (build_cp_library_fn): Remove declaration.
15084         (push_cp_library_fn): Likewise.
15085         (operator_name_string): Likewise.
15086         (build_decl_overload): Likewise.
15087         * call.c (print_z_candidates): Simplify.
15088         (build_object_call): Adjust usage of ansi_opname.  Use
15089         DECL_OVERLOADED_OPERATOR_P.
15090         (op_error): Adjust operator name lookup.
15091         (build_conditional_expr): Adjust usage of ansi_opname.
15092         (build_new_op): Likewise.
15093         (build_op_delete_call): Likewise.
15094         (build_over_call): Likewise.
15095         (joust): Use DECL_OVERLOADED_OPERATOR_P.
15096         * decl.c (duplicate_decls): Copy operator_code.
15097         (init_decl_processing): Adjust parameters to push_cp_library_fn.
15098         (builtin_function): Adjust parameters to build_library_fn_1.
15099         (build_library_fn_1): Accept an overloaded operator code.
15100         (build_library_fn): Pass ERROR_MARK.
15101         (build_cp_library_fn): Accept an overloaded operator code.
15102         (push_cp_library_fn): Likewise.
15103         (grokfndecl): Tweak.
15104         (grokdeclarator): Simplify code to compute names of overloaded
15105         operators.  Adjust use of ansi_opname.
15106         (ambi_op_p): Work on tree_codes, not identifiers.
15107         (unary_op_p): Likewise.
15108         (grok_op_properties): Likewise.
15109         (start_function): Use DECL_OVERLOADED_OPERATOR_P.
15110         (lang_mark_tree): Don't try to mark the operator_code.
15111         * decl2.c (grok_function_init): Use DECL_OVERLOADED_OPERATOR_P.
15112         * error.c (dump_decl): Remove special handling for operator
15113         names.
15114         (dump_function_name): Likewise.
15115         (dump_expr): Adjust name lookup of operators.
15116         (op_to_string): Simplify.
15117         (assop_to_string): Likewise.
15118         * init.c (build_new_1): Adjust use of ansi_opname.
15119         * lex.c (opname_tab): Remove.
15120         (assignop_tab): Likewise.
15121         (ansi_opname): Likewise.
15122         (ansi_assopname): Likewise.
15123         (operator_name_string): Likewise.
15124         (reinit_lang_specific): Likewise.
15125         (operator_name_info): New variable.
15126         (assignment_operator_name_info): Likewise.
15127         (init_operators): New function.
15128         (init_parse): Use it.
15129         (do_identifier): Adjust use of ansi_opname.
15130         * method.c (mangle_expression): Don't use ansi_opname for
15131         mangling.
15132         (build_decl_overload_real): Use DECL_OVERLOADED_OPERATOR_P.
15133         (build_decl_overload): Remove.
15134         (build_typename_overload): Use OPERATOR_TYPENAME_FORMAT directly.
15135         (do_build_assign_ref): Adjust use of ansi_opname.
15136         (synthesize_method): Likewise.
15137         (implicitly_declare_fn): Likewise.
15138         * operators.def: New file.
15139         * parse.y (operator): Adjust use of ansi_opname.
15140         * pt.c (tsubst_decl): Use IDENTIFIER_OPNAME_P.
15141         (set_mangled_name_for_template_decl): Don't play games with
15142         current_namespace.
15143         (special_function_p): Adjust use of ansi_opname.
15144         * typeck.c (check_return_expr): Likewise.
15145         * Make-lang.in (cc1plus): Depend on operators.def.
15146         * Makefile.in (lex.o): Likewise.
15147         (decl.o): Likewise.
15148
15149 2000-05-27  Zack Weinberg  <zack@wolery.cumb.org>
15150
15151         * Make-lang.in (cplib2.ready): Eradicate.
15152
15153 2000-05-27  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
15154
15155         * method.c (mangle_expression): Use TREE_CODE_LENGTH.
15156         * tree.c (break_out_calls, build_min_nt): Use TREE_CODE_LENGTH.
15157         (built_min, cp_tree_equal): Likewise.
15158
15159 2000-05-26  Mark Mitchell  <mark@codesourcery.com>
15160
15161         * class.c (layout_nonempty_base_or_field): Replace
15162         `record_layout_info' with `record_layout_info_s'.
15163
15164 2000-05-26  Jason Merrill  <jason@casey.soma.redhat.com>
15165
15166         Fix goto checking.
15167         * cp-tree.h (struct language_function): x_named_labels is now
15168         a struct named_label_list*.
15169         * decl.c (struct named_label_use_list): Renamed from...
15170         (struct named_label_list): ...this.  New struct.
15171         (push_binding_level): Don't set eh_region.
15172         (note_level_for_eh): New fn.
15173         (pop_label): Take label and old value directly.
15174         (pop_labels): Adjust for new named_labels format.
15175         (lookup_label): Likewise.
15176         (poplevel): Note characteristics of a binding level containing a
15177         named label.  Mess with named label lists earlier.
15178         (mark_named_label_lists): New fn.
15179         (mark_lang_function): Call it.
15180         (use_label): New fn, split out from...
15181         (make_label_decl): ...here.  Don't call it.
15182         (decl_jump_unsafe, check_previous_goto, check_previous_goto_1,
15183         check_previous_gotos): New fns, split out from...
15184         (define_label): ...here.
15185         (check_switch_goto): New fn.
15186         (define_case_label): Call it.
15187         (check_goto): New fn.
15188         * semantics.c (finish_goto_stmt): Call it and use_label.
15189         (begin_compound_stmt): If we're a try block, call note_level_for_eh.
15190         (expand_stmt): Never pass 1 as DONT_JUMP_IN to expand_end_bindings.
15191
15192 2000-05-26  Mark Mitchell  <mark@codesourcery.com>
15193
15194         * class.c (build_vtable_entry_ref): Correct usage of
15195         get_vtbl_decl_for_binfo.
15196
15197         * decl2.c (grokclassfn): Set DECL_LANGUAGE here.
15198         * method.c (implicitly_declare_fn): Not here.
15199
15200 2000-05-26  Nathan Sidwell  <nathan@codesourcery.com>
15201
15202         * cp-tree.h (CPTI_PTMD_DESC_TYPE): Rename to ...
15203         (CPTI_PTMD_DESC_TYPE): ... here.
15204         (ptmd_desc_type_node): Rename to ...
15205         (ptm_desc_type_node): ... here.
15206         * decl.c: Likewise.
15207         * rtti.c (ptmd_initializer): Rename to ...
15208         (ptm_initializer): ... here.
15209         (sythesize_tinfo_var): Adjust. Deal with pointer to member
15210         function.
15211         (create_tinfo_types): Adjust.
15212
15213 2000-05-25  Mark Mitchell  <mark@codesourcery.com>
15214
15215         Finish implementation of VTTs.
15216         * cp-tree.h (cp_tree_index): Add CPTI_VTT_PARM_TYPE and
15217         CPTI_VTT_PARM_IDENTIFIER.
15218         (vtt_parm_identifier): New macro.
15219         (vtt_parm_type): Likewise.
15220         (BINFO_SUBVTT_INDEX): Likewise.
15221         (BINFO_VPTR_INDEX): Likewise.
15222         (struct lang_decl): Add vtt_parm.
15223         (DECL_VTT_PARM): New macro.
15224         (DECL_USE_VTT_PARM): Likewise.
15225         (DECL_NEEDS_VTT_PARM_P): Likewise.
15226         (get_vtt_name): Declare.
15227         (build_artificial_parm): Likewise.
15228         (fixup_all_virtual_upcast_offsets): Likewise.
15229         (expand_indirect_vtbls_init): Remove.
15230         * call.c (build_new_method_call): Pass the vtt to subobject
15231         constructors and destructors.
15232         * class.c (get_vtt_name): Give it external linkage.
15233         (build_clone): Handle the magic VTT parameters for clones.
15234         (clone_function_decl): Fix typo in comment.
15235         (build_vtt): Keep track of the indices in the VTTs where various
15236         entities are stored.
15237         (build_vtt_inits): Likewise.
15238         (dfs_build_vtt_inits): Likewise.
15239         (build_ctor_vtbl_group): Tweak type of construction vtables.
15240         (dfs_accumulate_vtbl_inits): Build vtables for all bases, even
15241         primary bases, when building construction vtables.
15242         * decl.c (duplicate_decls): Handle DECL_VTT_PARM.
15243         (initialize_predefined_identifiers): Add vtt_parm_identifier.
15244         (init_decl_processing): Initialize vtt_parm_type.
15245         (grokfndecl): Use DECL_OVERLOADED_OPERATOR_P.
15246         (lang_mark_tree): Make vtt_parm.
15247         * decl2.c (build_artificial_parm): New function.
15248         (maybe_retrofit_in_chrg): Use it.  Add VTT parameters.
15249         (grokclassfn): Use build_artificial_parm.
15250         * init.c (initialize_vtbl_ptrs): Call
15251         fixup_all_virtual_upcast_offsets directly.
15252         (perform_member_init): Use the complete subobject destructor for
15253         member cleanups.
15254         (build_vtbl_address): New function.
15255         (expand_virtual_init): Handle VTTs.
15256         * optimize (maybe_clone_body): Likewise.
15257         * search.c (fixup_all_virtual_upcast_offsets): Give it external
15258         linkage.
15259         (expand_indirect_vtbls_init): Remove.
15260         * semantics.c (setup_vtbl_ptr): Fix typos in comment.
15261         * tree.c (make_binfo): Make them bigger.
15262
15263 2000-05-25  Nathan Sidwell  <nathan@codesourcery.com>
15264
15265         * inc/cxxabi.h (__pbase_type_info): Define, based on
15266         __pointer_type_info.
15267         (__pointer_type_info): Derive from __pbase_type_info. Adjust.
15268         (__pointer_to_member_type_info): Likewise.
15269         * tinfo2.cc (__pbase_type_info::~__pbase_type_info): Implement.
15270         (__pointer_to_member_type_info::__is_pointer_p): Remove.
15271         (__pointer_type_info::__do_catch): Rename to ...
15272         (__pbase_type_info::__do_catch): ... here. Adjust.
15273         (__pbase_type_info::__pointer_catch): Implement.
15274         (__pointer_type_info::__pointer_catch): Adjust.
15275         (__pointer_to_member_type_info::__pointer_catch): Adjust.
15276
15277 2000-05-25  Nathan Sidwell  <nathan@codesourcery.com>
15278
15279         * tinfo.h (__user_type_info::contained_virtual_p): New
15280         predicate.
15281         * tinfo.cc (__user_type_info::do_upcast): Fix bug with diamond
15282         shaped hierarchy.
15283         (__vmi_class_type_info::__do_upcast): Fix bug with NULL pointer to
15284         diamond shaped hierarchy. Add early out for mixed diamond and
15285         duplicate shaped hierarchy.
15286
15287 2000-05-24  Mark Mitchell  <mark@codesourcery.com>
15288
15289         * cp-tree.h (build_delete): Change prototype.
15290         (build_vec_delete): Likewise.
15291         * call.c (build_scoped_method_call): Use special_function_kind
15292         values to indicate the kind of destruction to be done.
15293         (build_method_call): Likewise.
15294         * decl.c (finish_destructor_body): Likewise.
15295         (maybe_build_cleanup_1): Likewise.  Rename to ...
15296         (maybe_build_cleanup): ... this.
15297         * decl2.c (delete_sanity): Use special_function_kind
15298         values to indicate the kind of destruction to be done.
15299         (build_cleanup): Likewise.
15300         * init.c (perform_member_init): Likewise.
15301         (build_vec_delete_1): Likewise.
15302         (build_dtor_call): Simplify.
15303         (build_delete): Use special_function_kind
15304         values to indicate the kind of destruction to be done.
15305         (build_vbase_delete): Likewise.
15306         (build_vec_delete): Likewise.
15307
15308         * init.c (sort_member_init): Fix typo in error message generation
15309         code.
15310
15311 2000-05-15  Donald Lindsay  <dlindsay@cygnus.com>
15312
15313         * semantics.c (begin_class_definition): make the packed
15314         attribute be sensitive to the "-fpack-struct" command line flag
15315
15316 2000-05-24  Nathan Sidwell  <nathan@codesourcery.com>
15317
15318         Update new-abi upcast algorithm.
15319         * inc/cxxabi.h (__class_type_info::__do_upcast): Change
15320         prototype and meaning of return value.
15321         (__si_class_type_info::__do_upcast): Likewise.
15322         (__vmi_class_type_info::__do_upcast): Likewise.
15323         * tinfo.cc (__class_type_info::__upcast_result): Replace
15324         whole2dst with part2dst. Adjust ctor.
15325         (__class_type_info::__do_upcast): Adjust call of worker function.
15326         (__class_type_info::__do_upcast): Adjust.
15327         (__si_class_type_info::__do_upcast): Adjust. Use parent's
15328         __do_upcast.
15329         (__vmi_class_type_info::__do_upcast): Likewise. Fix private
15330         virtual base in diamond hierarchy bug.
15331
15332 2000-05-23  Mark Mitchell  <mark@codesourcery.com>
15333
15334         * cp-tree.h (lang_decl_flags): Rename mutable_flag to uninlinable
15335         and bitfield to tinfo_fn_p.
15336         (DECL_TINFO_FN_P): Adjust.
15337         (SET_DECL_TINFO_FN_P): Likewise.
15338         (DECL_MUTABLE_P): Likewise.
15339         (DECL_C_BIT_FIELD): Likewise.
15340         (SET_DECL_C_BIT_FIELD): Likewise.
15341         (CLEAR_DECL_C_BIT_FIELD): Likewise.
15342         (DECL_UNINLINABLE): Likewise.
15343         * class.c (alter_access): Call retrofit_lang_decl if ncessary.
15344         (handle_using_decl): Remove assertion.
15345         (build_vtbl_or_vbase_field): Use build_decl, not build_lang_decl,
15346         to build FIELD_DECLs.
15347         (build_base_field): Likewise.
15348         (layout_class_type): Likewise.
15349         * decl.c (init_decl_processing): Likewise.
15350         (build_ptrmemfunc_type): Likewise.
15351         (grokdeclarator): Likewise.
15352         * decl2.c (grok_x_components): Likewise.
15353         * except.c (call_eh_info): Likewise.
15354         * init.c (init_init_processing): Likewise.
15355         * rtti.c (expand_class_desc): Likewise.
15356         (create_pseudo_type_info): Likewise.
15357         (get_vmi_pseudo_type_info): Likewise.
15358         (create_tinfo_types): Likewise.
15359         * ptree.c (print_lang_decl): Adjust.
15360         * typeck.c (build_component_ref): Don't check DECL_LANG_SPECIFIC
15361         before checking DECL_MUTABLE_P.
15362
15363         * decl2.c (maybe_retrofit_in_chrg): Don't create in-charge
15364         parameters for template functions.
15365         * pt.c (tsubst_decl): Make sure we call maybe_retrofit_in_chrg for
15366         destructors as well as constructors.
15367
15368 2000-05-22  Mark Mitchell  <mark@codesourcery.com>
15369
15370         * class.c (build_ctor_vtbl_group): Set inits.
15371         * optimize.c (maybe_clone_body): Set DECL_INLINE and
15372         DECL_THIS_INLINE appropriately for clones.
15373
15374         * cp-tree.h (IDENTIFIER_TYPENAME_P): Use a flag, not strncmp.
15375         (DECL_CONV_FN_P): Simplify.
15376         (DECL_OPERATOR): Remove.
15377         (language_to_string): Declare.
15378         * decl.c (duplicate_decls): Fix typo in comment.
15379         (grokdeclarator): Adjust use of IDENTIFIER_TYPENAME_P.
15380         (grok_op_properties): Use DECL_CONV_FN_P instead of
15381         IDENTIFIER_TYPENAME_P.
15382         * dump.c (dequeue_and_dump): Dump the language linkage of
15383         declarations.
15384         * error.c (language_to_string): Give it external linkage.
15385         * method.c (build_typename_overload): Set IDENTIFIER_TYPENAME_P.
15386         (implicitly_declare_fn): Set DECL_LANGUAGE.
15387         * pt.c (check_explicit_specialization): Use DECL_CONV_FN_P, not
15388         IDENTIFIER_TYPENAME_P.
15389         (tsubst_decl): Likewise.
15390         (tsubst_copy): Adjust use of IDENTIFIER_TYPENAME_P.
15391         * semantics.c (finish_member_declaration): Don't mark members of
15392         classes declared in an extern "C" region as extern "C".
15393
15394 2000-05-22  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
15395
15396         * decl2.c (qualified_lookup_using_namespace): Look through
15397         namespace aliases.
15398
15399         * decl.c (push_using_decl): Return the old decl on namespace level.
15400
15401 2000-05-21  Mark Mitchell  <mark@codesourcery.com>
15402
15403         * cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Add sanity checks.
15404         (VTT_NAME_PREFIX): New macro.
15405         (CTOR_VTBL_NAME_PREFIX): Likewise.
15406         (get_ctor_vtbl_name): New function.
15407         * class.c (get_vtable_name): Simplify.
15408         (get_vtt_name): New function.
15409         (get_vtable_decl): Don't set IDENTIFIER_GLOBAL_VALUE.
15410         (dfs_mark_primary_bases): Update the CLASSTYPE_VBASECLASSES list
15411         when a virtual base becomes primary.
15412         (finish_struct_1): Set CLASSTYPE_VFIELDS a little earlier.  Build
15413         VTTs.
15414         (finish_vtbls): Adjust calls to accumulate_vtbl_inits to pass in
15415         additional parameters.
15416         (dfs_finish_vtbls): Don't clear BINFO_NEW_VTABLE_MARKED.
15417         (initialize_array): New function.
15418         (build_vtt): Likewise.
15419         (build_vtt_inits): Likewise.
15420         (dfs_build_vtt_inits): Likewise.
15421         (dfs_fixup_binfo_vtbls): Likewise.
15422         (build_ctor_vtbl_group): Likewise.
15423         (initialize_vtable): Use initialize_array.
15424         (accumulate_vtbl_inits): Reimplement to handle construction
15425         vtables.
15426         (dfs_accumulate_vtbl_inits): Likewise.
15427         (bulid_vtbl_initializer): Adjust parameter name.
15428         * method.c (build_typename_overload): Remove #if 0'd code.
15429         (get_ctor_vtbl_name): New function.
15430         * search.c (dfs_walk_real): Use BINFO_N_BASETYPES.
15431         (init_vbase_pointers): Don't mess with the TREE_CHAIN of a binfo.
15432
15433         * cp-tree.h (struct lang_type): Remove search_slot.
15434         (CLASSTYPE_SEARCH_SLOT): Remove.
15435         (emit_base_init): Change prototype.
15436         (initialize_vtbl_ptrs): Likewise.
15437         (expand_indirect_vtbls_init): Likewise.
15438         (clear_search_slots): Remove.
15439         * decl.c (lang_mark_tree): Don't mark search_slot.
15440         * init.c (initialize_vtbl_ptrs): Simplify.
15441         (emit_base_init): Likewise.
15442         * search.c (struct vbase_info): Document decl_ptr.
15443         (convert_pointer_to_single_level): Remove.
15444         (dfs_find_vbases): Remove.
15445         (dfs_init_base_pointers): Simplify.
15446         (dfs_clear_vbase_slots): Remove.
15447         (dfs_vtable_path_unmark): New function.
15448         (init_vbase_pointers): Simplify.
15449         (expand_upcast_fixups): Don't rely on CLASSTYPE_SEARCH_SLOT.
15450         (expand_indirect_vtbls_init): Simplify.  Don't call
15451         mark_all_temps_used.
15452         * semantics.c (setup_vtbl_ptr): Adjust calls to emit_base_init and
15453         initialize_vtbl_ptrs.
15454
15455 2000-05-20  Zack Weinberg  <zack@wolery.cumb.org>
15456
15457         * except.c: Add static prototypes.
15458
15459 2000-05-20  H.J. Lu  <hjl@gnu.org>
15460
15461         * Make-lang.in (cplib2.ready): Also depend on cc1plus$(exeext).
15462
15463 2000-05-19  Mark Mitchell  <mark@codesourcery.com>
15464
15465         Don't create a separate copy of virtual bases for the
15466         CLASSTYPE_VBASECLASSES list.
15467         * cp-tree.h (CLASSTYPE_VBASECLASSES): Change documentation.
15468         (BINFO_FOR_VBASE): Remove.
15469         (CANONICAL_BINFO): Adjust.
15470         (binfo_for_vbase): New function.
15471         * class.c (build_vbase_pointer_fields): Use binfo_for_vbase
15472         instead of BINFO_FOR_VBASE.
15473         (build_vbase_pointer): Likewise.
15474         (build_secondary_vtable): Likewise.
15475         (dfs_mark_primary_bases): Likewise.
15476         (mark_primary_bases): Likewise.
15477         (layout_nonempty_base_or_field): Likewise.
15478         (dfs_set_offset_for_shared_vbases): Likewise.
15479         (dfs_set_offset_for_unshared_vbases): Likewise.
15480         (layout_virtual_bases): Likewise.  Adjust for changes to the
15481         CLASSTYPE_VBASECLASSES list.
15482         (dump_class_hierarchy_r): Use binfo_for_vbase
15483         instead of BINFO_FOR_VBASE.
15484         (dump_class_hierarchy): Likewise.
15485         (finish_vtbls): Likewise.
15486         (build_vtbl_initializer): Adjust for changes to the
15487         CLASSTYPE_VBASECLASSES list.
15488         (build_vbase_offset_vtbl_entries): Use binfo_for_vbase.
15489         * decl.c (finish_destructor_body): Adjust for changes to the
15490         CLASSTYPE_VBASECLASSES list.
15491         * init.c (sort_base_init): Use binfo_for_vbase.
15492         (construct_virtual_bases): Adjust for changes to the
15493         CLASSTYPE_VBASECLASSES list.
15494         (expand_member_init): Use binfo_for_vbase.
15495         (build_vbase_delete):  Adjust for changes to the
15496         CLASSTYPE_VBASECLASSES list.
15497         * method.c (do_build_copy_constructor): Likewise.
15498         * rtti.c (get_base_offset): Use binfo_for_vbase.
15499         (expand_class_desc): Remove #if 0'd code.
15500         * search.c (struct vbase_info): Remove vbase_types.
15501         (get_base_distance):  Use binfo_for_vbase.
15502         (lookup_field_queue_p): Use CANONICAL_BINFO.
15503         (get_shared_vbase_if_not_primary): Use binfo_for_vbase.
15504         (get_pure_virtuals): Adjust for changes to the
15505         CLASSTYPE_VBASECLASSES list.
15506         (dfs_find_vbases): Use binfo_for_vbase.
15507         (dfs_init_vbase_pointers): Likewise.
15508         (init_vbase_pointers): Don't initialize vi.vbase_types.
15509         (virtual_context): Use binfo_for_vbase.
15510         (fixup_all_virtual_upcast_offsets): Adjust for changes to the
15511         CLASSTYPE_VBASECLASSES list.
15512         (expand_indirect_vtbls_init): Simplify.
15513         (dfs_get_vbase_types): Don't replicate virtual bases.
15514         (find_vbase_instance): Use binfo_for_vbase.
15515         (binfo_for_vbase): New function.
15516         * typeck.c (get_delta_difference): Use binfo_for_vbase.
15517
15518 2000-05-17  Mark Mitchell  <mark@codesourcery.com>
15519
15520         * decl2.c (finish_anon_union): Generalize error messages to handle
15521         anonymous structures.
15522         * init.c (perform_member_init): Remove `name' parameter.
15523         (build_field_list): New function.
15524         (sort_member_init): Handle anonymous union initialization order
15525         correctly.  Check for multiple initializations of the same union.
15526         (emit_base_init): Don't look up fields by name here.
15527         (expand_member_init): Record the result of name lookup for future
15528         reference.
15529         * typeck.c (build_component_ref): Fix formatting.
15530
15531 2000-05-17  Andrew Cagney  <cagney@b1.cygnus.com>
15532
15533         * decl.c (pop_label): Replace warn_unused with warn_unused_label.
15534         * typeck.c (build_x_compound_expr): Replace warn_unused with
15535         warn_unused_value.
15536
15537         * decl2.c (lang_decode_option): Update -Wall unused flags by
15538         calling set_Wunused.
15539
15540 2000-05-16  Mark Mitchell  <mark@codesourcery.com>
15541
15542         * cp-treeh (BINFO_NEW_VTABLE_MARKED): Update documentation.
15543         * init.c (dfs_vtable_path_unmark): Remove.
15544         * search.c (marked_new_vtable_p): Likewise.
15545         (unmarked_new_vtable_p): Likewise.
15546         (dfs_search_slot_nonempty_p): Likewise.
15547         (dfs_mark): Likewise.
15548         (dfs_vtable_path_unmark): Likewise.
15549         (dfs_find_vbases): Don't set BINFO_NEW_VTABLE_MARKED.
15550         (dfs_int_vbase_pointers): Don't clear BINFO_VTABLE_PATH_MARKED.
15551         (dfs_init_vbase_pointers): Remove special-case new ABI code.
15552         (dfs_clear_vbase_slots): Don't clear BINFO_NEW_VTABLE_MARKED.
15553         (init_vbase_pointers): Simplify.
15554         (expand_indirect_vtbls_init): Likewise.
15555
15556         * class.c (copy_virtuals): New function.
15557         (build_primary_table): Use it.
15558         (build_secondary_vtable): Likewise.
15559         (modify_vtable_entry): Use NULL_TREE, not integer_zero_node, to
15560         indicate that no vcall offset is required.
15561         (add_virtual_function): Likewise.
15562         (modify_all_vtables): Likewise.
15563         (dfs_finish_vtbls): Adjust call to build_vtbl_initializer.
15564         (dfs_accumulate_vtbl_inits): Likewise.
15565         (build_vtbl_initializer): Make changes to handle construction
15566         vtables.
15567         (dfs_build_vcall_offset_vtbl_entries): Likewise.
15568         (build_rtti_vtbl_entries): Likewise.
15569         (build_vtable_entries): Handle a NULL vcall_index.
15570
15571 2000-05-15  Gabriel Dos Reis  <gdr@codesourcery.com>
15572
15573         * decl2.c (lang_decode_option): Fix thinko.
15574
15575 2000-05-14  Jason Merrill  <jason@casey.cygnus.com>
15576
15577         * except.c (check_handlers): New fn.
15578         * cp-tree.h: Declare it.
15579         * semantics.c (finish_handler_sequence): Call it.
15580         (finish_function_handler_sequence): Likewise.
15581         (finish_handler_parms): Set TREE_TYPE on the handler.
15582         * cp-tree.h (PUBLICLY_UNIQUELY_DERIVED_P): New macro.
15583         * search.c (get_base_distance_recursive): If protect>1, ignore
15584         special access.
15585         (get_base_distance): Don't reduce watch_access.
15586
15587 2000-05-13  Gabriel Dos Reis <gdr@codesourcery.com>
15588
15589         * lex.c: #include diagnostic.h.
15590         (lang_init_options): Set default prefixing rules.
15591
15592         * lang-options.h: Add -fdiagnostics-show-location=.
15593
15594         * decl2.c: #include diagnostic.h.
15595         (lang_decode_option): Handle -fdiagnostics-show-location=.
15596
15597 2000-05-12  Nathan Sidwell  <nathan@codesourcery.com>
15598
15599         * tinfo.cc: Revert my 2000-05-08 and 2000-05-07 changes.
15600         * vec.cc: Revert my 2000-05-07 change.
15601
15602 2000-05-11  Jason Merrill  <jason@casey.cygnus.com>
15603
15604         * class.c (check_field_decls): Complain about non-static data
15605         members with same name as class in class with constructor.
15606
15607 2000-05-10  Jason Merrill  <jason@casey.cygnus.com>
15608
15609         * decl.c (grokdeclarator): Allow non-static data members with
15610         same name as class.
15611
15612 2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>
15613
15614         * cp-tree.h: Constify tree_srcloc.filename, tinst_level.file,
15615         and pending_inline.filename.  Update prototypes.
15616         * decl.c (define_label): Constify filename parameter.
15617         * decl2.c (warn_if_unknown_interface): Constify local char *.
15618         * input.c Constify input_source.filename. Don't declare
15619         input_filename or lineno.  Constify filename parameter to feed_input.
15620         * lex.c (init_parse): Constify parameter and return value.
15621         (cp_pragma_interface, cp_pragma_implementation): Constify
15622         filename argument.
15623         (reinit_parse_for_method, reinit_parse_for_block,
15624         reinit_parse_for_expr, feed_defarg, handle_cp_pragma):
15625         Constify local char *.
15626         * pt.c: Don't declare lineno or input_filename.
15627         (print_template_context, tsubst_friend_function, tsubst_decl,
15628         tsubst, instantiate_decl): Constify local char *.
15629         * semantics.c (expand_body): Constify local char *.
15630         * tree.c (build_srcloc): Constify filename parameter.
15631         * typeck.c (c_expand_asm_operands): Constify filename
15632         parameter.
15633
15634 2000-05-08  Nathan Sidwell  <nathan@codesourcery.com>
15635
15636         * tinfo.cc (__dynamic_cast): Use a reinterpret_cast. Fix
15637         offsetof expansion.
15638
15639 2000-05-08  Branko Cibej  <branko.cibej@hermes.si>
15640
15641         * inc/cxxabi.h:  Fix typos in comment.
15642         (__base_class_info::__offset): Use a static_cast.
15643
15644 2000-05-07  Nathan Sidwell  <nathan@codesourcery.com>
15645
15646         * inc/cxxabi.h: Use __SIZE_TYPE_ and __PTRDIFF_TYPE__ in place
15647         of std::size_t and std::ptrdiff_t respectively.
15648         * tinfo.cc: Likewise.
15649         * vec.cc: Likewise.
15650
15651 2000-05-06  Richard Henderson  <rth@cygnus.com>
15652
15653         * typeck.c (build_c_cast): Don't warn integer->pointer size
15654         mismatch for constants.
15655
15656 2000-05-06  Nathan Sidwell  <nathan@codesourcery.com>
15657
15658         * rtti.c (ptmd_initializer): Set non-public, if class is
15659         incomplete.
15660
15661         * inc/cxxabi.h (__dynamic_cast): Explicitly say extern "C++".
15662         (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
15663         __cxa_vec_delete): Likewise.
15664         * tinfo.cc (__dynamic_cast): Likewise.
15665         * vec.cc (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
15666         __cxa_vec_delete): Likewise.
15667
15668 2000-05-04  Mark Mitchell  <mark@codesourcery.com>
15669
15670         * cp-tree.h (DELTA_FROM_VTABLE_ENTRY): Remove.
15671         (SET_FNADDR_FROM_VTABLE_ENTRY): Likewise.
15672         (lang_decl_flags): Add vcall_offset.
15673         (THUNK_VCALL_OFFSET): Use it.
15674         * decl.c (lang_mark_tree): Don't mark DECL_ACCESS for a thunk.
15675         * method.c (make_thunk): Create the lang_decl here, not in
15676         emit_thunk.
15677         (emit_thunk): Make generic thunks into ordinary functions once
15678         they have been fed to expand_body.
15679         * semantics.c (expand_body): Set current_function_is_thunk here.
15680
15681 2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15682
15683         * class.c (update_vtable_entry_for_fn): Prototype.
15684
15685         * pt.c (tsubst_decl): Initialize variables `argvec', `gen_tmpl'
15686         and `tmpl'.
15687
15688         * search.c (dfs_build_inheritance_graph_order): Prototype.
15689
15690 2000-05-04  Mark Mitchell  <mark@codesourcery.com>
15691
15692         * cp-tree.h (special_function_kind): Add various kinds of
15693         destructors.
15694         (special_function_p): New function.
15695         * class.c (overrides): Don't let one kind of destructor override
15696         another.
15697         * decl2.c (mark_used): Use DECL_NON_THUNK_FUNCTION_P when deciding
15698         whether or not to instantiate a template.
15699         * tree.c (special_function_p): Define.
15700
15701 2000-05-03  Mark Mitchell  <mark@codesourcery.com>
15702
15703         * cp-tree.def (THUNK_DECL): Remove.
15704         * cp-tree.h (DECL_THUNK_P): New macro.
15705         (DECL_NON_THUNK_FUNCTION_P): Likewise.
15706         (DECL_EXTERN_C_FUNCTION_P): Likewise.
15707         (SET_DECL_THUNK_P): Likewise.
15708         (DELTA_FROM_VTABLE_ENTRY): Use DECL_THUNK_P.
15709         (FNADDR_FROM_VTABLE_ENTRY): Likewise.
15710         (DECL_MAIN_P): Use DECL_EXTERN_C_FUNCTION_P.
15711         * decl.c (decls_match): Use DECL_EXTERN_C_P.
15712         (duplicate_decls): Likewise.
15713         (pushdecl): Likewise.  Adjust thunk handling.
15714         (grokfndecl): Use DECL_EXTERN_C_P.
15715         * decl2.c (mark_vtable_entries): Use DECL_THUNK_P.
15716         * dump.c (dequeue_and_dump): Remove THUNK_DECL handling.
15717         * except.c (nothrow_libfn_p): Use DECL_EXTERN_C_P.
15718         * expr.c (cplus_expand_expr): Remove THUNK_DECL handling.
15719         * method.c (make_thunk): Use SET_DECL_THUNK_P.  Set
15720         DECL_NO_STATIC_CHAIN.
15721         (emit_thunk): Don't play games with TREE_CODE on thunks.  Don't
15722         set DECL_DESTRUCTOR_P or DECL_CONSTRUCTOR_P on a thunk.
15723         * search.c (covariant_return_p): Remove THUNK_DECL handling.
15724         * ir.texi: Update.
15725
15726 2000-05-01  Jason Merrill  <jason@casey.cygnus.com>
15727
15728         * tree.c (walk_tree): Set lineno.
15729
15730 2000-05-01  Mark Mitchell  <mark@codesourcery.com>
15731
15732         * exception.cc: Update license notice.
15733         * new.cc: Likewise.
15734         * new1.cc: Likewise.
15735         * new2.cc: Likewise.
15736         * tinfo.cc: Likewise.
15737         * tinfo2.cc: Likewise.
15738         * vec.cc: Likewise.
15739         * inc/cxxabi.h: Likewise.
15740         * inc/exception: Likewise.
15741         * inc/new: Likewise.
15742         * inc/new.h: Likewise.
15743         * inc/typeinfo: Likewise.
15744
15745 2000-05-01  Jason Merrill  <jason@casey.cygnus.com>
15746
15747         * tree.c (build_target_expr_with_type): If we already have a
15748         TARGET_EXPR, just return it.
15749
15750         * optimize.c (initialize_inlined_parameters): Don't generate an
15751         EXPR_STMT if we can just use DECL_INITIAL.
15752         * decl.c (emit_local_var): Only make the initialization a
15753         full-expression if stmts_are_full_exprs_p.
15754
15755 2000-05-01  Mark Mitchell  <mark@codesourcery.com>
15756
15757         * cp-tree.h (same_type_ignoring_top_level_qualifiers_p): New
15758         macro.
15759         * call.c (standard_conversion): Use it.
15760         (direct_reference_binding): Likewise.
15761         (build_over_call): Likewise.
15762         (is_properly_derived_from): Likewise.
15763         (compare_ics): Likewise.
15764         * class.c (resolves_to_fixed_type_p): Likewise.
15765         * optimize.c (declare_return_variable): Likewise.
15766         * pt.c (is_specialization_of): Likewise.
15767         (unify): Likewise.
15768         * typeck.c (comp_target_parms): Likeiwse.
15769         (build_static_cast): Likewise.
15770         (build_reinterpret_cast): Likewise.
15771         (build_const_cast): Likewise.
15772         (comp_ptr_ttypes_real): Likewise.
15773         (comp_ptr_ttypes_const): Likewise.
15774         * typeck2.c (process_init_constructor): Likewise.
15775
15776 2000-04-30  Scott Snyder <snyder@fnal.gov>
15777
15778         * decl.c (finish_destructor_body): Use the base destructor when
15779         destroying virtual bases.
15780
15781 2000-04-30  Mark Mitchell  <mark@codesourcery.com>
15782
15783         * expr.c (cplus_expand_expr): Preserve temporaries when expanding
15784         STMT_EXPRs.
15785         * optimize.c (struct inline_data): Add target_exprs field.
15786         (declare_return_variable): When a function returns an aggregate,
15787         use the variable declared in the TARGET_EXPR as the remapped
15788         DECL_RESULT.
15789         (expand_call_inline): Update the pending target_exprs stack.
15790         (optimize_function): Initialize the stack.
15791
15792         * decl2.c (finish_file): Fix typo in comment.
15793
15794         * method.c (emit_thunk): Don't try to return a `void' value.
15795
15796         * optimize.c (initialize_inlined_parameters): If the parameter is
15797         addressable, we need to make a new VAR_DECL, even if the
15798         initializer is constant.
15799
15800 2000-04-28  Cosmin Truta  <cosmint@cs.ubbcluj.ro>
15801
15802         * decl.c (grok_op_properties): Add an extra check of argtypes.
15803
15804 2000-04-27  Mark Mitchell  <mark@codesourcery.com>
15805
15806         * optimize.c (copy_body_r): Use STRIP_TYPE_NOPS when copying
15807         variables.
15808         (initialize_inlined_parameters): Try to avoid creating new
15809         VAR_DECLs.
15810
15811 2000-04-27  Alex Samuel  <samuel@codesourcery.com>
15812
15813         * lex.c (my_get_run_time): Remove.
15814         (init_filename_times): Use get_run_time instead of my_get_run_time.
15815         (check_newline): Likewise.
15816         (dump_time_statistics): Likewise.
15817         * decl2.c (finish_file): Push and pop timevar TV_VARCONST instead
15818         of computing elapsed time explicitly.
15819
15820 2000-04-26  Mark Mitchell  <mark@codesourcery.com>
15821
15822         * cp-tree.h (TREE_READONLY_DECL_P): Use DECL_P.
15823         * init.c (decl_constant_value): Check TREE_READONLY_DECL_P.
15824         * call.c (convert_like_real): Don't test TREE_READONLY_DECL_P
15825         before calling decl_constant_value.
15826         * class.c (check_bitfield_decl): Likewise.
15827         * cvt.c (ocp_convert): Likewise.
15828         (convert): Likewise.
15829         * decl.c (compute_array_index_type): Likewise.
15830         (build_enumerator): Likewise.
15831         * decl2.c (check_cp_case_value): Likewise.
15832         * pt.c (convert_nontype_argument): Likewise.
15833         (tsubst): Likewise.
15834         * typeck.c (decay_conversion): Likewise.
15835         (build_compound_expr): Likewise.
15836         (build_reinterpret_cast): Likewise.
15837         (build_c_cast): Likewise.
15838         (convert_for_assignment): Likewise.
15839
15840 2000-04-26  Jason Merrill  <jason@casey.cygnus.com>
15841
15842         * decl.c (finish_function): Don't play games with DECL_INLINE.
15843
15844 2000-04-25  Gabriel Dos Reis  <dosreis@cmla.ens-cachan.fr>
15845
15846         * ir.texi: Correct typo.
15847
15848 2000-04-25  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
15849
15850         * decl.c (grokdeclarator): Reject VLAs as members.
15851
15852 2000-04-24  Gabriel Dos Reis  <gdr@codesourcery.com>
15853
15854         * call.c (standard_conversion): Accept conversion between
15855         COMPLEX_TYPEs.
15856
15857         * cvt.c (ocp_convert): Handle conversion to COMPLEX_TYPE.
15858
15859 2000-04-24  Zack Weinberg  <zack@wolery.cumb.org>
15860
15861         * decl2.c (finish_file): Remove double setup for accounting
15862         compile time.
15863
15864 2000-04-24  Robert Lipe <robertlipe@usa.net>
15865
15866         * cp-tree.h (lang_type): Member `language' now ENUM_BITFIELD.
15867
15868 2000-04-23  Benjamin Kosnik  <bkoz@cygnus.com>
15869
15870         * new.cc (set_new_handler): Needs to be in std::.
15871
15872 2000-04-23  Mark Mitchell  <mark@codesourcery.com>
15873
15874         * cp-tree.h (lang_decl): Remove pretty_function_p.
15875         (DECL_PRETTY_FUNCTION_P): Use TREE_LANG_FLAG_0, not a bit in the
15876         language-specific node.
15877         * decl.c (cp_make_fname_decl): Use build_decl, not
15878         build_lang_decl, to build the variables.
15879         (grokvardecl): Don't call build_lang_decl for local variables in
15880         templates.
15881         (grokdeclarator): Don't call build_lang_decl for local type
15882         declarations in templates.
15883         * lex.c (retrofit_lang_decl): Use ggc_alloc_obj to allocated
15884         zero'd memory, rather than calling memset.
15885         * pt.c: Include hashtab.h.
15886         (local_specializations): New variable.
15887         (retrieve_local_specialization): Use it.
15888         (register_local_specialization): Likewise.
15889         (tsubst_decl): Don't assume local variables have
15890         DECL_LANG_SPECIFIC.
15891         (instantiate_decl): Set up local_specializations.
15892         * Makefile.in (HTAB_H): New variable.
15893
15894 2000-04-23  Richard Henderson  <rth@cygnus.com>
15895
15896         * typeck.c (c_expand_asm_operands): Restore the original
15897         contents of the output list.
15898
15899 2000-04-22  Gabriel Dos Reis <gdr@codesourcery.com>
15900
15901         * ir.texi:  Document complex number representation.
15902
15903 2000-04-20  Nathan Sidwell  <nathan@codesourcery.com>
15904
15905         * rtti.c (init_rtti_processing): Set tinfo_var_id in new-abi.
15906         (target_incomplete_p): New function.
15907         (tinfo_base_init): Create comdat NTBS name variable.
15908         (ptr_initializer): Add non_public parameter. Calculate it.
15909         (ptmd_initializer): Likewise.
15910         (synthesize_tinfo_var): Adjust. Emit incomplete class tinfo.
15911         (create_real_tinfo_var): Add non_public parameter. Use it.
15912         Push proxy into global namespace.
15913         * inc/cxxabi.h (__pointer_type_info::incomplete_class_mask):
15914         New enumeration.
15915         * inc/typeinfo (type_info::before, type_info::operator==):
15916         Compare __name addresses.
15917
15918         * tinfo2.cc: Remove new-abi builtins comment.
15919
15920 2000-04-20  Jason Merrill  <jason@casey.cygnus.com>
15921
15922         * typeck.c (build_x_function_call): Resolve an OFFSET_REF.
15923
15924         * call.c (joust): Exit early if we get the same function, too.
15925
15926         * decl2.c (key_method): Return NULL_TREE for template classes.
15927         (import_export_class): Don't need to check for template classes.
15928
15929 2000-04-18  Zack Weinberg  <zack@wolery.cumb.org>
15930
15931         * lex.c: Remove references to cccp.c.
15932
15933 2000-04-18  Mark Mitchell  <mark@codesourcery.com>
15934
15935         * cp-tree.h (lang_decl_flags): Remove const_memfunc and
15936         volatile_memfunc.  Add destructor_attr.  Adjust dummy.
15937         (DECL_DESTRUCTOR_P): Use destructor_attr.
15938         (DECL_CONST_MEMFUNC_P): Reimplement.
15939         (DECL_VOLATILE_MEMFUNC_P): Remove.
15940         * class.c (finish_struct_methods): Use CLASSTYPE_DESTRUCTORS.
15941         (overrides): Use DECL_DESTRUCTOR_P.
15942         (check_for_override): Likewise.
15943         * decl.c (start_function): Likewise.
15944         * decl2.c (grokfclassfn): Likewise.
15945         (check_classfn): Likewise.
15946         (grok_function_init): Likewise.
15947
15948 2000-04-17  Mark Mitchell  <mark@codesourcery.com>
15949
15950         * decl2.c (grokfield): Issue error on illegal data member
15951         declaration.
15952
15953 2000-04-17  Mark P Mitchell  <mark@codesourcery.com>
15954
15955         * method.c (make_thunk): Set DECL_CONTEXT for a THUNK_DECL.
15956
15957 2000-04-16  Mark Mitchell  <mark@codesourcery.com>
15958
15959         * class.c (build_vtable_entry): Don't build thunks for type-info
15960         functions.
15961
15962 2000-04-16  Jason Merrill  <jason@casey.cygnus.com>
15963
15964         * decl.c (decls_match): Allow a redeclaration of a builtin to
15965         specify args while the builtin did not.
15966
15967 2000-04-15  Mark Mitchell  <mark@codesourcery.com>
15968
15969         * cp-tree.def (THUNK_DECL): Add to documentation.
15970         * cp-tree.h (flag_huge_objects): Declare.
15971         * class.c (modify_vtable_entry): Tidy.
15972         (update_vtable_entry_for_fn): Split out from dfs_modify_vtables.
15973         Calculate delta appropriately for the new ABI.
15974         (dfs_modify_vtables): Use it.
15975         (modify_all_vtables): Fix thinko in code to add overriding copies
15976         of functions to primary vtables.
15977         (build_clone): Fix typo in comment.
15978         (clone_function_decl): Correct order of destructors in vtable.
15979         (build_vbase_offset_vtbl_entries): Adjust comment.
15980         (dfs_vcall_offset_queue_p): Remove.
15981         (dfs_build_vcall_offset_vtbl_entries): Update BV_VCALL_INDEX.
15982         (build_vcall_offset_vtbl_entries): Juse use dfs_skip_vbases.
15983         (build_vtable_entry): Correct check for pure virtual functions.
15984         Don't declare flag_huge_objects.
15985         * decl.c (flag_huge_objects): Remove declaration.
15986         * method.c (make_thunk): Tweak mangling for vcall offset thunks.
15987         Use int_size_in_bytes.
15988         (emit_thunk): Handle vcall offset thunks.
15989
15990 2000-04-15  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
15991
15992         * decl2.c (parse_time, varconst_time): Delete declarations.
15993         (finish_file): Delete LINENO declaration.
15994         START_TIME and THIS_TIME now long.
15995
15996 2000-04-13  Nathan Sidwell  <nathan@codesourcery.com>
15997
15998         * class.c (build_base_field): Reformat comment.
15999
16000         * inc/cxxabi.h (stddef.h): Comment inclusion.
16001         (__base_class_info::__offset): Comment shift.
16002
16003 2000-04-12  Mark Mitchell  <mark@codesourcery.com>
16004
16005         * cp-tree.h (IDENTIFIER_CTOR_OR_DTOR_P): New macro.
16006         (cp_tree_index): Add CPTI_PUSH_EXCEPTION_IDENTIFIER.
16007         (cp_push_exception_identifier): New macro.
16008         (DECL_COMPLETE_DESTRUCTOR_P): New macro.
16009         (DECL_BASE_DESTRUCTOR_P): Likewise.
16010         (DECL_DELETING_DESTRUCTOR_P): Likewise.
16011         (get_vtbl_decl_for_binfo): Fix formatting.
16012         (in_charge_arg_for_name): New macro.
16013         (maybe_build_cleanup_and_delete): Remove declaration.
16014         * call.c (build_field_call): Use IDENTIFIER_CTOR_OR_DTOR_P.
16015         (in_charge_arg_for_name): New function.
16016         (build_new_method_call): Use it.  Handle cloned destructors.
16017         (build_clone): Don't make the base constructor virtual.
16018         Automatically defer generated functions.
16019         (clone_function_decl): Handle destructors, too.
16020         (clone_constructors_and_destructors): Likewise.
16021         (create_vtable_ptr): Don't create a vtable entry for a cloned
16022         function.
16023         * decl.c (predefined_identifier): Add ctor_or_dtor_p.
16024         (initialize_predefined_identifiers): Update appropriately.
16025         (finish_destructor_body): Simplify.
16026         (maybe_build_cleanup_and_delete): Remove.
16027         * except.c (expand_throw): Handle new-ABI destructors.
16028         * init.c (expand_cleanup_for_base): Use base_dtor_identifier.
16029         (build_dtor_call): New function.
16030         (build_delete): Use it.  Simplify.
16031         * optimize.c (maybe_clone_body): Handle destructors.
16032         * search.c (lookup_field_queue_p): Use IDENTIFIER_CTOR_OR_DTOR_P.
16033
16034         * exception.cc (cleanup_fn): New typedef.
16035         (CALL_CLEANUP): New macro.
16036         (cp_eh_info): Use them.
16037         (__cp_push_exception): Likewise.
16038         (__cp_pop_exception): Likewise.
16039
16040 2000-04-11  Mark Mitchell  <mark@codesourcery.com>
16041
16042         * cp-tree.h (cp_tree_index): Add CPTI_DTOR_IDENTIFIER.
16043         (complete_dtor_identifier): New macro.
16044         (CLASSTYPE_FIRST_CONVERSION): Remove.
16045         (CLASSTYPE_CONSTRUCTOR_SLOT): New macro.
16046         (CLASSTYPE_DESTRUCTOR_SLOT): Likewise.
16047         (CLASSTYPE_FIRST_CONVERSION_SLOT): Likewise.
16048         (CLASSTYPE_CONSTRUCTORS): Likewise.
16049         (CLASSTYPE_DESTRUCTORS): Likewise.
16050         (lang_decl): Add cloned_function.
16051         (DECL_COMPLETE_CONSTRUCTOR_P): New macro.
16052         (DECL_BASE_CONSTRUCTOR_P): Likewise.
16053         (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P): Likewise.
16054         (DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P): Likewise.
16055         (DECL_CLONED_FUNCTION_P): Likewise.
16056         (DECL_CLONED_FUNCTION): Likewise.
16057         (clone_function_decl): Declare.
16058         (maybe_clone_body): Likewise.
16059         * call.c (build_user_type_conversion_1): Call complete object
16060         constructors in the new ABI.
16061         (build_new_method_call): Don't add in-charge parameters under the
16062         new ABI.
16063         * class.c (add_method): Use DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P,
16064         DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P, CLASSTYPE_CONSTRUCTOR_SLOT, and
16065         CLASSTYPE_DESTRUCTOR_SLOT.
16066         (build_clone): New function.
16067         (clone_function_decl): Likewise.
16068         (clone_constructors_and_destructors): Likewise.
16069         (check_bases_and_members): Use it.
16070         * decl.c (iniitialize_predefined_identifiers): Initialize
16071         complete_dtor_identifier.
16072         (finish_function): Don't add extra code to a clone.
16073         (lang_mark_tree): Mark cloned_function.
16074         * decl2.c (mark_used): Don't bother trying to instantiate things
16075         we synthesized.
16076         * dump.c (dequeue_and_dump): Don't dump CP_DECL_CONTEXT twice.
16077         * method.c (set_mangled_name_for_decl): Don't treat clones as
16078         constructors.
16079         (synthesize_method): Sythesize cloned functions, not the clones.
16080         * optimize.c (inline_data): Update comment on ret_label.
16081         (remap_block): Don't assume DECL_INITIAL exists.
16082         (copy_body_r): Allow ret_label to be NULL.
16083         (maybe_clone_body): Define.
16084         * pt.c (tsubst_decl): Handle clones.
16085         (instantiate_clone): New function.
16086         (instantiate_template): Use it.
16087         (set_mangled_name_for_template_decl): Don't treat clones as
16088         constructors.
16089         * search.c (lookup_fnfields_1): Use CLASSTYPE_CONSTRUCTOR_SLOT,
16090         CLASSTYPE_DESTRUCTOR_SLOT, and CLASSTYPE_FIRST_CONVERSION_SLOT.
16091         * semantics.c (expand_body): Clone function bodies as necessary.
16092
16093         * optimize.c (remap_decl): Avoid sharing structure for arrays
16094         whose size is only known at run-time.
16095         * tree.c (copy_tree_r): Don't copy PARM_DECLs.
16096
16097         * cp-tree.h (lang_decl_flags): Rename constructor_for_vbase_attr
16098         to has_in_charge_parm_p.
16099         (DECL_CONSTRUCTOR_FOR_VBASE_P): Rename to ...
16100         (DECL_HAS_IN_CHARGE_PARM_P): ... this.
16101         (DECL_COPY_CONSTRUCTOR_P): New macro.
16102         * call.c (add_function_candidate): Use DECL_HAS_IN_CHARGE_PARM_P.
16103         (build_user_type_conversion_1): Likewise.
16104         (convert_like_real): Likewise.
16105         (build_over_call): Likeiwse.  Use DECL_COPY_CONSTRUCTOR_P.
16106         * decl.c (grokdeclarator): Use DECL_HAS_IN_CHARGE_PARM_P.
16107         (copy_args_p): Likewise.
16108         (grok_ctor_properties): Likewise.
16109         (start_function): Likewise.
16110         * decl2.c (maybe_retrofit_in_charge): Likewise.  Set it.
16111         * error.c (dump_function_decl): Use DECL_HAS_IN_CHARGE_PARM_P.
16112         * init.c (emit_base_init): Use DECL_COPY_CONSTRUCTOR_P.
16113         * method.c (do_build_copy_constructor): Use
16114         DECL_HAS_IN_CHARGE_PARM_P.
16115         (synthesize_method): Likewise.
16116         * pt.c (instantiate_template): Remove goto.
16117         * tree.c (build_cplus_method_type): Remove mention of obstacks in
16118         comment.
16119
16120         * cp-tre.h (finish_function): Change prototype.
16121         * decl.c (end_cleanup_fn): Adjust caller.
16122         (finish_function): Take only one parameter.
16123         * decl2.c (finish_objects): Adjust caller.
16124         (finish_static_storage_duration_function): Likewise.
16125         * method.c (emit_thunk): Likewise.
16126         * parse.y: Likewise.
16127         * parse.c: Regenerated.
16128         * pt.c (instantiate_decl): Likewise.
16129         * rtti.c (synthesize_tinfo_fn): Likewise.
16130         * semantics.c (expand_body): Likewise.
16131
16132         * cp-tree.h (copy_decl): New function.
16133         * class.c (finish_struct_1): Use it.
16134         * lex.c (copy_decl): Define it.
16135         * pt.c (tsubst_decl): Likewise.
16136         * tree.c (copy_template_template_parm): Likewise.
16137
16138         * cp-tree.h (lang_type): Remove has_nonpublic_ctor and
16139         has_nonpublic_assign_ref.
16140         (TYPE_HAS_NONPUBLIC_CTOR): Don't declare.
16141         (TYPE_HAS_NONPUBLIC_ASSIGN_REF): Likewise.
16142         * class.c (finish_struct_methods): Don't set
16143         TYPE_HAS_NONPUBLIC_CTOR or TYPE_HAS_NONPUBLIC_ASSIGN_REF.
16144         (interface_only): Don't declare.
16145         (interface_unknown): Likewise.
16146
16147 2000-04-11  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
16148
16149         * tree.h (HAVE_TEMPLATES): Remove definition.
16150         * lang-options.h (-fthis-is-variable): Remove documentation.
16151
16152 2000-04-10  Jason Merrill  <jason@casey.cygnus.com>
16153
16154         * class.c (instantiate_type): Handle object-relative template-id.
16155
16156         * semantics.c (finish_expr_stmt): Call convert_to_void here.
16157         * decl.c (cplus_expand_expr_stmt): Not here.
16158
16159         * rtti.c (build_dynamic_cast_1): Call non_lvalue.
16160         Initialize exprtype earlier.
16161
16162         * parse.y (fn.def1): Check for defining types in return types.
16163
16164         * decl.c (check_tag_decl): Notice extra fundamental types.
16165         Diagnose empty decls in classes, too.
16166
16167         * decl.c (grokdeclarator): Don't override an anonymous name if no
16168         declarator was given.
16169
16170         * cvt.c (convert_to_void): Call resolve_offset_ref.
16171
16172         * typeck.c (build_x_function_call): Abort if we get an OFFSET_REF.
16173
16174         * decl2.c (decl_namespace): Handle getting a type.
16175
16176         * typeck.c (build_c_cast): Re-enable warning for cast between
16177         pointer and integer of different size.
16178
16179 2000-04-10  Nathan Sidwell  <nathan@codesourcery.com>
16180
16181         * inc/cxxabi.h (__pointer_type_info): Add restrict and
16182         incomplete flags.
16183         (__pointer_type_info::__pointer_catch): New virtual function.
16184         (__pointer_to_member_type_info): Derive from
16185         __pointer_type_info. Adjust.
16186         (__pointer_to_member_type_info::__do_catch): Remove.
16187         (__pointer_to_member_type_info::__is_pointer_p): Declare.
16188         (__pointer_to_member_type_info::__pointer_catch): Declare.
16189         * rtti.c (qualifier_flags): Add restrict flag.
16190         (ptmd_initializer): Reorder members.
16191         (create_tinfo_types): Expand comments. Reorder
16192         ptmd_desc_type_node members.
16193         * tinfo2.cc (__pointer_to_member_type_info::__is_pointer_p):
16194         Implement.
16195         (__pointer_type_info::__do_catch): Move specific code into
16196         __pointer_catch. Call it.
16197         (__pointer_type_info::__pointer_catch): Non-pointer-to-member
16198         specific catch checking. Fix void conversion check.
16199         (__pointer_to_member_type_info::__do_catch): Remove.
16200         (__pointer_to_member_type_info::__pointer_catch): Implement.
16201
16202 2000-04-10  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
16203
16204         * lex.c (init_parse): Remove traces of classof and headof.
16205         * decl2.c (flag_operator_names): Default to 1.
16206         (lang_decode_option): Do not set it for -ansi.
16207
16208 2000-04-09  Mark Mitchell  <mark@codesourcery.com>
16209
16210         * cp-tree.h (struct lang_decl): Remove main_decl_variant.
16211         (DECL_MAIN_VARIANT): Remove.
16212         * decl.c (duplicate_decls): Don't set it.
16213         (start_function): Likewise.
16214         (lang_mark_tree): Don't mark it.
16215         * decl2.c (defer_fn): Don't use it.
16216         * lex.c (retrofit_lang_decl): Don't set it.
16217         * pt.c (tsubst_decl): Likewise.
16218         * ptree.c (print_lang_decl): Don't print it.
16219         * typeck.c (mark_addressable): Don't use it.
16220
16221 2000-04-09  Nathan Sidwell  <nathan@codesourcery.com>
16222
16223         * vec.cc: Include <new> and <exception>.
16224         (__cxa_vec_ctor): Use __cxa_vec_dtor for cleanup.
16225         (__cxa_vec_dtor): Catch dtor exceptions, and rethrow or
16226         terminate.
16227         (__cxa_vec_delete): Catch dtor exceptions.
16228
16229 2000-04-09  Nathan Sidwell  <nathan@codesourcery.com>
16230
16231         Prepend __ to implementation defined names.
16232         * inc/typeinfo (type_info): Rename _name to __name.
16233         (type_info::type_info): Rename parameter.
16234         (type_info::operator==, type_info::operator!=,
16235         type_info::before): Likewise.
16236         (type_info::is_pointer_p, type_info::is_function_p,
16237         type_info::do_catch, type_info::do_upcast): Prepend __. Rename
16238         parameters.
16239         * inc/cxxabi.h
16240         (__fundamental_type_info::__fundamental_type_info) Rename parameters.
16241         (__pointer_type_info::__pointer_type_info): Likewise.
16242         (__pointer_type_info::is_pointer_p,
16243         __pointer_type_info::do_catch): Prepend __. Rename parameters.
16244         (__array_type_info::__array_type_info): Rename parameters.
16245         (__function_type_info::__function_type_info): Likewise.
16246         (__function_type_info::is_function_p): Prepend __.
16247         (__enum_type_info::__enum_type_info): Rename parameters.
16248         (__pointer_to_member_type_info::__pointer_to_member_type_info):
16249         Likewise.
16250         (__pointer_to_member_type_info::do_catch): Prepend __. Rename
16251         parameters.
16252         (__base_class_info::is_virtual_p, is_public_p, offset): Prepend __.
16253         (__class_type_info::__class_type_info): Rename parameters.
16254         (__class_type_info::sub_kind): Prepend __. Adjust member names.
16255         (__class_type_info::upcast_result,
16256         __class_type_info::dyncast_result): Prepend __. Move definition
16257         into tinfo.cc.
16258         (__class_type_info::do_upcast, __class_type_info::do_catch,
16259         __class_type_info::find_public_src,
16260         __class_type_info::do_dyncast,
16261         __class_type_info::do_find_public_src): Prepend __. Rename
16262         parameters.
16263         (__si_class_type_info::__si_class_type_info): Rename parameters.
16264         (__si_class_type_info::do_upcast, __si_class_type_info::do_dyncast,
16265         __si_class_type_info::do_find_public_src): Prepent __. Rename
16266         parameters.
16267         (__vmi_class_type_info::__vmi_class_type_info): Rename parameters.
16268         (__vmi_class_type_info::do_upcast, __vmi_class_type_info::do_dyncast,
16269         __vmi_class_type_info::do_find_public_src): Prepent __. Rename
16270         parameters.
16271         (__dynamic_cast): Rename parameters.
16272         * tinfo.cc (type_info::is_pointer_p, type_info::is_function_p,
16273         type_info::do_catch, type_info::do_upcast): Prepend __.
16274         (contained_p, public_p, virtual_p, contained_public_p,
16275         contained_nonpublic_p, contained_nonvirtual_p): Adjust.
16276         (__class_type_info::do_catch,
16277         __class_type_info::do_upcast): Prepend __. Adjust.
16278         (__class_type_info::__upcast_result,
16279         __class_type_info::__dyncast_result): Move from inc/cxxabi.h.
16280         Adjust.
16281         (__class_type_info::find_public_src): Prepend __. Adjust.
16282         (__class_type_info::do_find_public_src,
16283         __si_class_type_info::do_find_public_src,
16284         __vmi_class_type_info::do_find_public_src): Likewise.
16285         (__class_type_info::do_dyncast,
16286         __si_class_type_info::do_dyncast,
16287         __vmi_class_type_info::do_dyncast): Likewise.
16288         (__class_type_info::do_upcast,
16289         __si_class_type_info::do_upcast,
16290         __vmi_class_type_info::do_upcast): Likewise.
16291         (__dynamic_cast): Adjust.
16292         * tinfo2.cc (__pointer_type_info::is_pointer_p): Prepend __.
16293         (__function_type_info::is_function_p): Likewise.
16294         (__pointer_type_info::do_catch): Likewise. Adjust.
16295         (__pointer_to_member_type_info::do_catch): Likewise. Adjust.
16296         (__throw_type_match_rtti_2): Adjust.
16297         (__is_pointer): Adjust.
16298
16299 2000-04-08  Mark Mitchell  <mark@codesourcery.com>
16300
16301         * cp-tree.h (cp_tree_index): Add CPTI_COMPLETE_CTOR_IDENTIFIER.
16302         (complete_ctor_identifier): New macro.
16303         (special_function_kind): Add sfk_copy_constructor and
16304         sfk_assignment_operator.
16305         (LOOKUP_HAS_IN_CHARGE): Remove.
16306         (cons_up_default_function): Rename to ...
16307         (implicitly_declare_fn): ... this.
16308         * call.c (build_new_method_call): Add in-charge parameters for
16309         constructors here.
16310         * class.c (add_implicitly_declared_members): Change parameter name
16311         from cant_have_assignment to cant_have_const_assignment.
16312         Replace calls to cons_up_default_function to implicitly_declare_fn.
16313         * cvt.c (ocp_convert): Use complete_ctor_identifier.
16314         * decl.c (initialize_predefined_identifiers): Initialize it.
16315         (start_function): Use DECL_CONSTRUCTOR_FOR_VBASE_P instead of
16316         complex expression.
16317         * init.c (expand_default_init): Don't calculate the in-charge
16318         parameter here.
16319         (build_new_1): Likewise.
16320         * lex.c (cons_up_default_function): Move to method.c.
16321         * method.c (synthesize_method): Use DECL_DESTRUCTOR_P.
16322         (implicitly_declare_fn): New function.
16323         * typeck.c (build_static_cast): Use complete_ctor_identifier.
16324         (build_modify_expr): Likewise.
16325         * typeck2.c (build_functional_cast): Likewise.
16326
16327         Under the new ABI, constructors don't return `this'.
16328         * cp-tree.h (warn_reorder): Declare.
16329         (special_function_kind): New enum.
16330         (global_base_init_list): Remove declaration.
16331         (emit_base_init): Don't return a value.
16332         (check_base_init): Don't declare.
16333         (is_aggr_typedef): Likewise.
16334         * decl.c (check_special_function_return_type): New function.
16335         (return_types): Remove.
16336         (grokdeclarator): Use check_special_function_return_type.
16337         (start_function): Don't initialize ctor_label under the new ABI.
16338         (finish_construtor_body): Don't create a corresponding LABEL_STMT.
16339         * init.c (begin_init_stmts): Move to top of file.
16340         (finish_init_stmts): Likewise.
16341         (warn_reorder): Don't declare.
16342         (emit_base_init): Don't create a STMT_EXPR here.  Don't return a
16343         value.
16344         (check_base_init): Remove.
16345         (is_aggr_typedef): Likewise.
16346         (build_new_1): Don't use the return value of a constructor.
16347         * semantics.c (setup_vtbl_ptr): Don't use the return value
16348         of emit_base_init.
16349         * typeck.c (check_return_expr): Don't magically convert return
16350         statements into `return this' in constructors under the new ABI.
16351
16352         * cp-tree.h (cp_tree_index): Add CPTI_BASE_CTOR_IDENTIFIER,
16353         CPTI_BASE_DTOR_IDENTIFIER, and CPTI_DELETING_DTOR_IDENTIFIER.
16354         (base_ctor_identifier): New macro.
16355         (base_dtor_identifier): Likewise.
16356         (deleting_dtor_identifier): Likewise.
16357         * decl.c: Don't include obstack.h.
16358         (obstack_chunk_alloc): Don't define.
16359         (obstack_chunk_free): Likewise.
16360         (struct predefined_identifier): New type.
16361         (initialize_predefined_identifiers): New function.
16362         (init_decl_processing): Use it.
16363         (debug_temp_inits): Remove.
16364         (start_method): Don't call preserve_data.
16365         (hack_incomplete_structures): Update comment.
16366         * init.c (init_init_processing): Don't initialize
16367         nelts_identifier.
16368         (build_offset_rf): Remove dead code.
16369         (build_delete): Use CLASSTYPE_N_BASECLASSES.
16370         * search.c (init_search_processing): Don't initialize
16371         vptr_identifier.
16372
16373 2000-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16374
16375         * typeck.c (build_binary_op): Call `tree_expr_nonnegative_p' to elide
16376         some sign_compare warnings.
16377
16378 2000-04-07  Nathan Sidwell  <nathan@codesourcery.com>
16379
16380         Rename abi::__vmi_class_type_info members.
16381         * inc/cxxabi.h (__vmi_class_type_info): Rename details, n_bases,
16382         base_list, detail_masks members to vmi_flags, vmi_base_count,
16383         vmi_bases and vmi_flags_masks respectively.
16384         (__vmi_class_type_info::vmi_flags_masks): Rename
16385         details_unknown_mask to flags_unknown_mask.
16386         * tinfo.cc (__class_type_info::do_upcast): Adjust.
16387         (__vmi_class_type_info::do_find_public_src): Adjust.
16388         (__vmi_class_type_info::do_dyncast): Adjust.
16389         (__vmi_class_type_info::do_upcast): Adjust.
16390
16391 2000-04-07  Nathan Sidwell  <nathan@codesourcery.com>
16392
16393         * tinfo.cc (convert_to_base): New function.
16394         (get_vbase_offset): Remove. Move into convert_to_base.
16395         (__vmi_class_type_info::do_find_public_src): Adjust.
16396         (__vmi_class_type_info::do_dyncast): Adjust.
16397         (__vmi_class_type_info::do_upcast): Adjust.
16398
16399 2000-04-06  Jason Merrill  <jason@yorick.cygnus.com>
16400
16401         * tinfo.cc (operator=): Use __builtin_strcmp.
16402         * tinfo2.cc (before): Likewise.
16403
16404 2000-04-06  Mark Mitchell  <mark@codesourcery.com>
16405
16406         * cp-tree.h (lang_decl_flags): Rename saved_inline to deferred.
16407         (DECL_SAVED_INLINE): Rename to ...
16408         (DECL_DEFERRED_FN): ... this.
16409         (in_function_p): Remove declaration.
16410         (mark_inline_for_output): Rename to ...
16411         (defer_fn): ... this.
16412         * decl.c (finish_function): Adjust call to mark_inline_for_output.
16413         (in_function_p): Remove definition.
16414         * decl2.c (saved_inlines): Rename to ...
16415         (deferred_fns): ... this.
16416         (saved_inlines_used): Rename to ...
16417         (deferred_fns_used): ... this.
16418         (mark_inline_for_output): Rename to ...
16419         (defer_fn): ... this.
16420         (finish_file): Adjust accordingly.
16421         (init_decl2): Likewise.
16422         * lex.c (cons_up_default_function): Likewise.
16423         * pt.c (mark_decl_instantiated): Likewise.
16424         (instantiate_decl): Don't set DECL_DEFER_OUTPUT under any
16425         circumstances.
16426         * rtti.c (get_tinfo_decl): Adjust call to mark_inline_for_output.
16427         * semantics.c (expand_body): Defer more functions.
16428
16429 2000-04-06  Nathan Sidwell  <nathan@codesourcery.com>
16430
16431         * vec.cc: New file.
16432         * Make-lang.in (CXX_LIB2FUNCS): Add it.
16433         (vec.o): Build it.
16434         * inc/cxxabi.h (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
16435         __cxa_vec_delete): Declare.
16436
16437 2000-04-06  Nathan Sidwell  <nathan@codesourcery.com>
16438
16439         * rtti.c (dfs_class_hint_mark): New static function.
16440         (dfs_class_hint_unmark): New static function.
16441         (class_hint_flags): Use them.
16442
16443 2000-04-05  Benjamin Kosnik  <bkoz@cygnus.com>
16444
16445         * decl2.c: Make flag_honor_std dependent on ENABLE_STD_NAMESPACE.
16446
16447 2000-04-05  Mark Mitchell  <mark@codesourcery.com>
16448
16449         * cp-tree.h (instantiate_decl): Change prototype.
16450         * decl2.c (mark_used): Adjust call.
16451         * optimize.c (inlinable_function_p): Adjust handling of templates.
16452         * pt.c (do_decl_instantiation): Adjust call to instantiate_decl.
16453         (do_type_instantiation): Likewise.
16454         (instantiate_decl): Defer more templates.
16455         (instantiate_pending_templates): Adjust logic to handle inline
16456         friend functions.
16457
16458         * Makefile.in (GGC_H): New variable.  Use it throughout in place
16459         of ggc.h.
16460
16461         * call.c: Don't include obstack.h.  Include ggc.h.
16462         (obstack_chunk_alloc): Don't define.
16463         (obstack_chunk_free): Likewise.
16464         (add_candidate): Allocate the z_candidate with ggc_alloc_obj.
16465         * decl.c (push_switch): Use xmalloc to allocate the cp_switch.
16466         (pop_switch): Free it.
16467
16468         * decl2.c (grokclassfn): Set TREE_READONLY for PARM_DECLs.
16469
16470         * dump.c (dequeue_and_dump): Don't try to print the bit_position
16471         if we don't have a DECL_FIELD_OFFSET.
16472
16473 Wed Apr  5 15:12:18 MET DST 2000  Jan Hubicka  <jh@suse.cz>
16474
16475         * optimize.c (calls_setjmp_r): Use setjmp_call_p instead of
16476         special_function_p.
16477
16478 2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16479
16480         * cfns.gperf (hash, libc_name_p): Prototype.
16481
16482         * rtti.c (build_dynamic_cast_1): Constification.
16483
16484         * search.c (dfs_debug_unmarkedp, dfs_debug_mark): Unhide prototypes.
16485
16486         * semantics.c (deferred_type_access_control): Prototype.
16487
16488 2000-04-04  Mark Mitchell  <mark@codesourcery.com>
16489
16490         Correct many new ABI issues regarding vbase and vcall offset
16491         layout.
16492         * cp-tree.h (BINFO_VTABLE): Document.
16493         (struct lang_type): Tweak formatting.
16494         (BINFO_PRIMARY_BINFO): Add to documentation.
16495         (CLASSTYPE_VSIZE): Fix typo in comment.
16496         (CLASSTYPE_VBASECLASSES): Update documentation.
16497         (BINFO_VBASE_MARKED): Remove.
16498         (SET_BINFO_VBASE_MARKED): Likewise.
16499         (CLEAR_BINFO_VBASE_MARKED): Likewise.
16500         (BINFO_FIELDS_MARKED): Remove.
16501         (SET_BINFO_FIELDS_MARKED): Likewise.
16502         (CLEAR_BINFO_FIELDS_MARKED): Likewise.
16503         (enum access_kind): New enumeration.
16504         (num_extra_vtbl_entries): Remove declaration.
16505         (size_extra_vtbl_entries): Likewise.
16506         (get_vtbl_decl_for_binfo): New function.
16507         (dfs_vbase_unmark): Remove declaration.
16508         (mark_primary_bases): Likewise.
16509         * class.c (SAME_FN): Remove.
16510         (struct vcall_offset_data_s): Move definition.
16511         (build_vbase_pointer): Use `build', not `build_binary_op', to
16512         access the vbase pointer under the new ABI.
16513         (build_vtable_entry_ref): Use get_vtbl_decl_for_binfo.
16514         (build_primary_vtable): Likewise.
16515         (dfs_mark_primary_bases): Move here from search.c.
16516         (mark_primary_bases): Likewise.
16517         (determine_primary_bases): Under the new ABI, don't make a base
16518         class a primary base just because we don't yet have any virtual
16519         functions.
16520         (layout_vtable_decl): Use get_vtbl_decl_for_binfo.
16521         (num_vfun_entries): Remove.
16522         (dfs_count_virtuals): Likewise.
16523         (num_extra_vtbl_entries): Likewise.
16524         (size_extra_vtbl_entries): Likewise.
16525         (layout_virtual_bases): Iterate in inheritance graph order under
16526         the new ABI.
16527         (finish_struct_1): Use TYPE_VFIELD, not CLASSTYPE_VSIZE, to
16528         indicate that a vfield is present.
16529         (init_class_processing): Initialize access_public_node, etc., from
16530         ak_public, etc.
16531         (get_vtbl_decl_for_binfo): New function.
16532         (dump_class_hierarchy_r): Likewise.
16533         (dump_class_hierarchy): Use it.
16534         (finish_vtbls): Build the vtbls in inheritance graph order.
16535         (dfs_finish_vtbls): Adjust call to build_vtbl_initializer.
16536         (initialize_vtable): Use get_vtbl_decl_for_binfo.
16537         (accumulate_vtbl_inits): Add comments explaining why a pre-order
16538         walk is required.
16539         (dfs_accumulate_vtbl_inits): Set BINFO_VTABLE to the location
16540         where the vptr points, even for primary vtables.
16541         (build_vtbl_initializer): Adjust handling of vbase and vcall
16542         offsets.
16543         (build_vcall_and_vbase_vtable_entries): New function.
16544         (dfs_build_vbase_offset_vtbl_entries): Remove.
16545         (build_vbase_offset_vtbl_entries): Reimplement.
16546         (dfs_build_vcall_offset_vtbl_entries): Don't include virtuals that
16547         were already handled in a primary base class vtable.
16548         (build_vcall_offset_vtbl_entries): Adjust.
16549         (build_rtti_vtbl_entries): Adjust.
16550         * decl2.c (output_vtable_inherit): Use get_vtbl_decl_for_binfo.
16551         * init.c (expand_virtual_init): Simplify.
16552         * repo.c (repo_get_id): Use get_vtbl_decl_for_binfo.
16553         * rtti.c (create_pseudo_type_info): Adjust calculation of vptr.
16554         * search.c (BINFO_ACCESS): New macro.
16555         (SET_BINFO_ACCESS): Likewise.
16556         (dfs_access_in_type): Manipulate access_kinds, not access nodes.
16557         (access_in_type): Likewise.
16558         (dfs_accessible_p): Likewise.
16559         (protected_accessible_p): Likewise.
16560         (lookup_fnfields_1): Adjust documentation.
16561         (dfs_mark_primary_bases): Move to class.c
16562         (mark_primary_bases): Likewise.
16563         (dfs_vbase_unmark): Remove.
16564         (virtual_context): Use BINFO_FOR_VBASE.
16565         (dfs_get_vbase_types): Simplify.
16566         (dfs_build_inheritance_graph_order): New function.
16567         (get_vbase_types): Use it.
16568         * tree.c (debug_binfo): Use get_vtbl_decl_for_binfo.
16569
16570         * tinfo.cc (get_vbase_offset): New function.
16571         (__vmi_class_type_info::do_find_public_src): Use it.
16572         (__vmi_class_type_info::do_dyncast): Likewise.
16573         (__vmi_class_type_info::do_upcast): Likewise.
16574
16575 2000-04-03  Zack Weinberg  <zack@wolery.cumb.org>
16576
16577         * lang-specs.h: Pass -fno-show-column to the preprocessor.
16578
16579 2000-03-30  Nathan Sidwell  <nathan@codesourcery.com>
16580
16581         * rtti.c (class_hint_flags): Rename flags.
16582         (class_initializer): Remove flags.
16583         (synthesize_tinfo_var): Combine offset and flags. Add flags
16584         for __vmi_class_type_info.
16585         (create_tinfo_types): Remove flags from __class_type_info and
16586         __si_class_type_info. Merge flags and offset from
16587         base_class_type_info.
16588         * inc/cxxabi.h (__base_class_info): Merge offset and vmi_flags.
16589         (__base_class_info::is_virtual_p): Adjust.
16590         (__base_class_info::is_public_p): Adjust.
16591         (__base_class_info::offset): New accessor.
16592         (__class_type_info::details): Remove member.
16593         (__class_type_info::__class_type_info): Lose details.
16594         (__class_type_info::detail_masks): Remove.
16595         (__si_class_type_info::__si_class_type_info): Lose details.
16596         (__vmi_class_type_info::details): New member.
16597         (__vmi_class_type_info::__vmi_class_type_info): Adjust.
16598         (__vmi_class_type_info::detail_masks): New member.
16599         * tinfo.cc (__class_type_info::do_upcast): Initialize result
16600         with unknown_details_mask.
16601         (__vmi_class_type_info::do_find_public_src): Adjust
16602         (__vmi_class_type_info::do_dyncast): Adjust.
16603         (__vmi_class_type_info::do_upcast): Set result details, if
16604         needed. Adjust.
16605         (__dynamic_cast): Temporarily #if out optimization.
16606
16607 2000-03-29  Nathan Sidwell  <nathan@codesourcery.com>
16608
16609         * rtti.c (get_tinfo_decl): Mark used.
16610         (emit_tinfo_decl): Don't optimize polymorphic type_info. Only
16611         mark as dealt with, if we output it.
16612
16613 2000-03-28  Mark Mitchell  <mark@codesourcery.com>
16614
16615         * class.c: Reorganize to put virtual function table initialization
16616         machinery at the end of the file.
16617
16618 2000-03-28  Jason Merrill  <jason@casey.cygnus.com>
16619
16620         * class.c (finish_struct): Use bitsize_zero_node.
16621         * pt.c (instantiate_class_template): Likewise.
16622
16623 2000-03-28  Mark Mitchell  <mark@codesourcery.com>
16624
16625         Put RTTI entries at negative offsets in new ABI.
16626         * class.c (dfs_build_vbase_offset_vtbl_entries): Put the first
16627         vbase offset at index -3, not -1.
16628         (build_vtabe_offset_vtbl_entries): Use unmarked_vtable_pathp, not
16629         dfs_vtable_path_unmarked_real_bases_queue_p to walk bases.
16630         (dfs_build_vcall_offset_vtbl_entries): Don't use skip_rtti_stuff.
16631         (build_rtti_vtbl_entries): New function.
16632         (set_rtti_entry): Remove.
16633         (build_primary_vtable): Don't use it.
16634         (build_secondary_vtable): Likewise.
16635         (start_vtable): Remove.
16636         (first_vfun_index): New function.
16637         (set_vindex): Likewise.
16638         (add_virtual_function): Don't call start_vtable.  Do call
16639         set_vindex.
16640         (set_primary_base): Rename parameter.
16641         (determine_primary_base): Likewise.
16642         (num_vfun_entries): Don't use skip_rtti_stuff.
16643         (num_extra_vtbl_entries): Include RTTI information.
16644         (build_vtbl_initializer): Use build_rtti_vtbl_entries.
16645         (skip_rtti_stuff): Remove.
16646         (dfs_modify_vtables): Don't use it.
16647         (modify_all_vtables): Don't use start_vtable.  Do use set_vindex.
16648         (layout_nonempty_base_or_field): Update size handling.
16649         (create_vtable_ptr): Tweak.
16650         (layout_class_type): Adjust parameter names.
16651         (finish_struct_1): Simplify.
16652         * cp-tree.h (CLASSTYPE_VSIZE): Tweak documentation.
16653         (skip_rtti_stuff): Remove.
16654         (first_vfun_index): New function.
16655         (dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
16656         (dfs_vtable_path_marked_real_bases_queue_p): Remove.
16657         (marked_vtable_pathp): Declare.
16658         (unmarked_vtable_pathp): Likewise.
16659         * error.c (dump_expr): Use first_vfun_index to calculate vtable
16660         offsets.
16661         * rtti.c (build_headof): Look for RTTI at negative offsets.
16662         (get_tinfo_decl_dynamic): Likewise.
16663         (tinfo_base_init): Don't take the address of the TINFO_VTABLE_DECL
16664         here.
16665         (create_pseudo_type_info): Do it here instead.  Adjust so that
16666         vptr points at first virtual function.
16667         * search.c (marked_vtable_pathp): Make it global.
16668         (unmarked_vtable_pathp): Likewise.
16669         (dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
16670         (dfs_vtable_path_marked_real_bases_queue_p): Likewise.
16671         (dfs_get_pure_virtuals): Don't use skip_rtti_stuff.
16672         (get_pure_virtuals): Likewise.
16673         (expand_upcast_fixups): Likewise.
16674         * tree.c (debug_binfo): Likewise.
16675         * tinfo.cc (__dynamic_cast): Look for vtable_prefix at appropriate
16676         negative offset.
16677
16678 2000-03-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
16679
16680         * class.c (check_field_decl): Fix typo.
16681         (build_vtbl_or_vbase_field): Don't clear DECL_SAVED_INSNS.
16682         (check_methods): Likewise.
16683         (check_field_decls): Likewise.
16684         Use DECL_CONTEXT, not DECL_FIELD_CONTEXT.
16685         * cp-tree.h (DECL_SHADOWED_FOR_VAR, DECL_TEMPLATE_RESULT):
16686         Use DECL_RESULT_FLD, not DECL_RESULT.
16687         * decl.c (xref_tag): Use DECL_TEMPLATE_RESULT.
16688         * lex.c (identifier_type): Likewise.
16689         * pt.c (determine_specialization, lookup_template_class): Likewise.
16690         (tsubst_friend_function, tsubst_decl, instantiate_template): Likewise.
16691         (resolve_overloaded_unification, more_specialized): Likewise.
16692         * semantics.c (finish_member_declaration): Likewise.
16693         * typeck.c (build_x_function_call): Likewise.
16694
16695 2000-03-26  Mark Mitchell  <mark@codesourcery.com>
16696
16697         * class.c (layout_empty_base): Handle empty bases with non-byte
16698         alignment.
16699         (build_base_field): Likewise.
16700         (layout_virtual_bases): Likewise.
16701
16702         * class.c (finish_struct_1): Fix typo in this change:
16703
16704         Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
16705
16706 2000-03-25  Mark Mitchell  <mark@codesourcery.com>
16707
16708         * decl.c (grokdeclarator): Count partial specializations when
16709         keeping track of how many template classes have been seen.
16710
16711         * dump.c (dequeue_and_dump): Dump DECL_TEMPLATE_RESULT.
16712
16713 2000-03-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
16714
16715         * class.c (build_vbase_pointer_fields): layout_field now place_field.
16716         (get_vfield_offset): Use byte_position.
16717         (set_rtti_entry): Set OFFSET to ssizetype zero.
16718         (get_binfo_offset_as_int): Deleted.
16719         (dfs_record_base_offsets): Use tree_low_cst.
16720         (dfs_search_base_offsets): Likewise.
16721         (layout_nonempty_base_or_field): Reflect changes in RLI format
16722         and call byte_position.
16723         (layout_empty_base): Convert offset to ssizetype.
16724         (build_base_field): use rli_size_unit_so_far.
16725         (dfs_propagate_binfo_offsets): Do computation in proper type.
16726         (layout_virtual_bases): Pass ssizetype to propagate_binfo_offsets.
16727         (layout_class_type): Reflect changes in RLI names and fields.
16728         (finish_struct_1): Set DECL_FIELD_OFFSET.
16729         * dump.c (dequeue_and_dump): Call bit_position.
16730         * expr.c (cplus_expand_constant): Use byte_position.
16731         * rtti.c (expand_class_desc): Use bitsize_one_node.
16732         * typeck.c (build_component_addr): Use byte_position and don't
16733         special case for zero offset.
16734
16735 2000-03-24  Nathan Sidwell  <nathan@codesourcery.com>
16736
16737         * decl.c (vtype_decl_p): Use TYPE_POLYMORPHIC_P.
16738
16739         * rtti.c (get_tinfo_decl): Set comdat linkage on new-abi
16740         tinfo object.
16741         (emit_tinfo_decl): Only emit polymorphic tinfo's when emitting
16742         vtable.
16743
16744 2000-03-20 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
16745
16746         * call.c (check_dtor_name, build_new_method_call): Use TYPE_P and
16747         DECL_P macros.
16748         * decl.c (push_class_binding, poplevel, pushtag, lookup_namespace_name,
16749         make_typename_type, check_initializer, cp_finish_decl,
16750         xref_tag): Likewise.
16751         * decl2.c (grokfield, build_expr_from_tree, build_expr_from_tree,
16752         decl_namespace, arg_assoc_template_arg, arg_assoc,
16753         validate_nonmember_using_decl, do_class_using_decl): Likewise.
16754         * error.c (dump_template_argument, dump_expr, cp_file_of, cp_line_of,
16755         args_to_string): Likewise.
16756         * friend.c (is_friend): Likewise.
16757         * lex.c (note_got_semicolon, note_list_got_semicolon,
16758         is_global): Likewise.
16759         * method.c (build_overload_nested_name, build_overload_value,
16760         build_qualified_name, build_qualified_name, hack_identifier): Likewise.
16761         * parse.y (typename_sub, typename_sub1): Likewise.
16762         * pt.c (push_inline_template_parms_recursive, check_template_shadow,
16763         process_partial_specialization, convert_template_argument,
16764         template_args_equal, add_pending_template, lookup_template_class,
16765         for_each_template_parm_r, maybe_fold_nontype_arg,
16766         tsubst, instantiate_template, type_unification_real, unify,
16767         instantiate_pending_templates, set_mangled_name_for_template_decl):
16768         Likewise.
16769         * repo.c (repo_get_id, repo_template_used): Likewise.
16770         * search.c (lookup_field_1): Likewise.
16771         * tree.c (walk_tree, get_type_decl, cp_tree_equal, member_p): Likewise.
16772         * xref.c (classname): Likewise.
16773
16774 2000-03-22  Mark Mitchell  <mark@codesourcery.com>
16775
16776         * cp-tree.h (BINFO_FOR_VBASE): Adjust documentation.
16777         (CANONICAL_BINFO): New macro.
16778         (BINFO_NEW_VTABLE_MARKED): Use it.
16779         (SET_BINFO_NEW_VTABLE_MARKED): Likewise.
16780         (CLEAR_BINFO_NEW_VTABLE_MARKED): Likewise.
16781         * class.c (dfs_build_vbase_offset_vtbl_entries): Use BINFO_TYPE,
16782         not TREE_TYPE.
16783         (build_primary_vtable): Adjust usage of BINFO_NEW_VTABLE_MARKED.
16784         (build_secondary_vtable): Likewise.
16785         (dfs_finish_vtbls): Likewise.
16786         (dfs_accumulate_vtbl_inits): Likewise.
16787         (accumulate_vtbl_inits): New function.
16788         (finish_vtbls): Make sure that virtual bases come after
16789         non-virtual bases in the vtable group.
16790         (record_base_offsets): Don't save and restore TREE_VIA_VIRTUAL.
16791         (finish_struct_1): Adjust usage of BINFO_NEW_VTABLE_MARKED.
16792         * search.c (struct vbase_info): Move definition.
16793         (marked_new_vtable_p): Adjust usage of BINFO_NEW_VTABLE_MARKED.
16794         (unmarked_new_vtable_p): Likewise.
16795         (dfs_mark_vtable_path): Remove.
16796         (dfs_mark_new_vtable): Remove.
16797         (dfs_unmark_new_vtable): Likewise.
16798         (dfs_clear_search_slot): Likewise.
16799         (dfs_find_vbases):  Adjust usage of BINFO_NEW_VTABLE_MARKED.
16800         (dfs_clear_vbase_slots): Likewise.
16801         (init_vbase_pointers): LIkewise.
16802
16803 2000-03-22  Jason Merrill  <jason@casey.cygnus.com>
16804
16805         * typeck.c (type_after_usual_arithmetic_conversions): Prefer a
16806         SIZETYPE to a non-SIZETYPE.
16807
16808 2000-03-21  Mark Mitchell  <mark@codesourcery.com>
16809
16810         * class.c (layout_virtual_bases): Adjust names in conditionally
16811         compiled code.
16812
16813         * class.c (record_base_offsets): New function.
16814         (layout_conflict_p): Likewise.
16815         (layout_nonempty_base_or_field): Use it.
16816         (layout_empty_base): New function.
16817         (build_base_field): Use it.
16818         (build_base_fields): Update comment.
16819         (layout_virtual_bases): Fold in a little code form
16820         layout_basetypes.  Use layout_empty_base.
16821         (layout_basetypes): Remove.
16822         (end_of_class): New function.
16823         (layout_class_type): Use it.  Adjust.
16824
16825         * cp-tree.h (CLASSTYPE_VBASECLASSES): Fix typo in comment.
16826         (fntype_p): Remove.
16827         * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Fix typo in
16828         comment.
16829         (dfs_skip_nonprimary_vbases_markedp): Likewise.
16830         * typeck.c (fntype_p): Remove.
16831
16832         * cp-tree.h (TI_SPEC_INFO): Remove.
16833         (CLASSTYPE_TI_SPEC_INFO): Likewise.
16834         * pt.c (process_partial_specialization): Likewise.
16835
16836         * class.c (build_base_field): Fix thinko in computation of binfo
16837         offsets.
16838
16839         * tree.c (mark_local_for_remap_p): Mark variables declared in
16840         TARGET_EXPRs as well.
16841
16842 2000-03-21  Nathan Sidwell  <nathan@codesourcery.com>
16843
16844         * typeck.c (require_complete_type, complete_type,
16845         complete_type_or_else, c_sizeof, c_sizeof_nowarn,
16846         build_array_ref, convert_arguments, pointer_diff,
16847         build_x_unary_op, build_unary_op, build_c_cast,
16848         build_modify_expr): Use COMPLETE_TYPE_P etc.
16849         * call.c (is_complete, convert_like_real,
16850         build_new_method_call): Likewise.
16851         * class.c (build_vbase_pointer_fields, check_bases,
16852         build_base_field, finish_struct_1, pushclass): Likewise.
16853         * cvt.c (cp_convert_to_pointer, convert_to_void): Likewise.
16854         * decl.c (maybe_process_template_type_declaration, pushtag,
16855         pushdecl, redeclaration_error_message, start_decl, start_decl_1,
16856         layout_var_decl, check_initializer, cp_finish_decl,
16857         grokdeclarator, require_complete_types_for_parms,
16858         grok_op_properties, xref_tag, xref_basetypes,
16859         check_function_type): Likewise.
16860         * decl2.c (check_classfn, reparse_absdcl_as_casts): Likewise.
16861         * friend.c (do_friend): Likewise.
16862         * init.c (build_offset_ref): Likewise.
16863         * parse.y (structsp): Likewise.
16864         * pt.c (maybe_process_partial_specialization,
16865         tsubst_friend_function, instantiate_class_template, tsubst,
16866         do_type_instantiation, instantiate_pending_templates): Likewise.
16867         * repo.c (repo_get_id): Likewise.
16868         * rtti.c (build_typeid, get_typeid, build_dynamic_cast_1,
16869         synthesize_tinfo_var, emit_support_tinfos): Likewise.
16870         * search.c (lookup_fnfields_1, lookup_conversions): Likewise.
16871         * semantics.c (begin_class_definition): Likewise.
16872         * tree.c (build_cplus_method_type): Likewise.
16873         * typeck2.c (digest_init, build_functional_cast,
16874         add_exception_specifier): Likewise.
16875         * parse.h, parse.c: Regenerated.
16876
16877 2000-03-21  Nathan Sidwell  <nathan@codesourcery.com>
16878
16879         * inc/cxxabi.h: New header file. Define new-abi entry points.
16880         (__pointer_type_info::target): Rename member to ...
16881         (__pointer_type_info::type): ... here.
16882         (__base_class_info::type): Rename member to ...
16883         (__base_class_info::base): ... here.
16884         * Make-lang.in (CXX_EXTRA_HEADERS): Add cxxabi.h
16885         * cp-tree.h (CPTI_ABI): New global tree enumeration.
16886         (abi_node): New global tree node.
16887         * decl.c (abi_node): Document.
16888         (init_decl_processing): Initialize abi_node.
16889         * rtti.c (build_dynamic_cast_1): Use abi_node for new-abi.
16890         (get_vmi_pseudo_type_info): Likewise.
16891         (create_tinfo_types): Likewise.
16892         (emit_support_tinfos): Likewise.
16893         * tinfo.h (cxxabi.h): Include for new-abi.
16894         Move rtti class definitions to new header file.
16895         * tinfo.cc (abi): Use the namespace.
16896         (std): Move new abi rtti classes from here ...
16897         (__cxxabiv1): ... to here.
16898         * tinfo2.cc (cxxabi.h): Include for new-abi.
16899         Move rtti class definitions to new header file.
16900         (std): Move new abi rtti classes from here ...
16901         (__cxxabiv1): ... to here.
16902         * inc/typeinfo (__class_type_info): Move into __cxxabiv1
16903         namespace.
16904
16905 2000-03-20  Jed Wing <jedwin@zloty.ugcs.caltech.edu>
16906             Jason Merrill  <jason@casey.cygnus.com>
16907
16908         * method.c (build_overload_int): Use host_integerp.
16909
16910 2000-03-20 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
16911
16912         * init.c (build_offset_ref): Handle the case of a templated member
16913         function.
16914
16915 2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
16916
16917         * except.c (expand_exception_blocks): Clear catch_clauses_last.
16918
16919 2000-03-18  Mark Mitchell  <mark@codesourcery.com>
16920
16921         * cp-tree.h (CLEAR_DECL_C_BIT_FIELD): New macro.
16922         * class.c (check_bitfield_decl): Turn illegal bitfields into
16923         non-bitfields.
16924         (dfs_propagate_binfo_offsets): Adjust for new size_binop
16925         semantics.
16926         (dfs_offset_for_unshared_vbases): Likewise.
16927         * cvt.c (cp_convert_to_pointer): Convert NULL to a
16928         pointer-to-member correctly under the new ABI.
16929         * expr.c (cplus_expand_constant): Don't use cp_convert when
16930         turning an offset into a pointer-to-member.
16931         * init.c (resolve_offset_ref): Don't adjust pointers-to-members
16932         when dereferencing them under the new ABI.
16933         * typeck.c (get_member_function_from_ptrfunc): Tweak calculation
16934         of pointers-to-members under the new ABI.
16935
16936         * class.c (check_bitfield_decl): Remove restriction on really long
16937         bitfields.
16938         (layout_class_type): Implement new ABI handling of bitfields
16939         longer than their types.
16940
16941 2000-03-18  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
16942
16943         * parse.y (extdefs): Call ggc_collect.
16944         * parse.c: Regenerated.
16945
16946 2000-03-18  Nathan Sidwell  <nathan@codesourcery.com>
16947
16948         * class.c (build_base_field): Use TYPE_ALIGN to examine a type.
16949         (note_name_declared_in_class): Use OVL_CURRENT to get at a
16950         potential overload.
16951
16952 2000-03-17  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
16953
16954         * class.c (build_vbase_path): Use integer_zerop.
16955         (build_vtable_entry): Use tree_low_cst.
16956         (get_vfield_offset): Use bit_position.
16957         (dfs_modify_vtables): New variable vindex_val; `i' is HOST_WIDE_INT.
16958         Use tree_low_cst.
16959         (check_bitfield_decl): Set DECL_SIZE using convert.
16960         (build_base_field): Set DECL_SIZE and DECL_SIZE_UNIT using size_binop.
16961         (layout_virtual_bases): DSIZE is unsigned HOST_WIDE_INT.
16962         Use tree_low_cst.
16963         (finish_struct_1): Use bit_position.
16964         (dump_class_hierarchy): Use tree_low_cst.
16965         * cp-tree.h (min_precision): Add declaration.
16966         * decl.c (xref_tag, xref_basetypes): Use tree_low_cst.
16967         * error.c (dump_type_suffix): Use host_integerp and tree_low_cst.
16968         (dump_expr): Use integer_zerop, host_integerp, and tree_low_cst.
16969         * expr.c (cplus_expand_constant): Use bit_position.
16970         * init.c (build_vec_init): Use host_integerp and tree_low_cst.
16971         * rtti.c (get_base_offset): Use bit_position.
16972         * typeck.c (build_binary_op): Use integer_zerop, compare_tree_int,
16973         host_integerp, and tree_low_cst.
16974         (pointer_int_sum): Use integer_zerop.
16975         (build_component_addr): Use bit_position.
16976
16977 2000-03-17  Nathan Sidwell  <nathan@codesourcery.com>
16978
16979         * typeck.c (require_complete_type): Don't assume size_zero_node.
16980         (complete_type_or_else): Likewise.
16981
16982 2000-03-16  Steven Grady <grady@digitaldeck.com>
16983             Jason Merrill  <jason@casey.cygnus.com>
16984
16985         * rtti.c (build_dynamic_cast_1): Improve diagnostics.
16986
16987 2000-03-16  Nathan Sidwell  <nathan@codesourcery.com>
16988
16989         * decl2.c (grokfield): Bail out if type is error_mark_node.
16990
16991 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
16992
16993         * tinfo2.cc (__ptr_to_member_data): Rename to ...
16994         (__pointer_to_member_data): ... here. Adjust.
16995         * rtti.c (create_tinfo_types): Adjust.
16996
16997 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
16998
16999         * cp-tree.h (CPTI_REF_DESC_TYPE, ref_desc_type_node): Remove.
17000         * decl.c (ref_desc_type_node): Undocument.
17001         * rtti.c (ptr_ref_initializer): Rename to ...
17002         (ptr_initializer): ... here. Adjust comments.
17003         (ptmd_initializer): Fix comment thinko.
17004         (synthesize_tinfo_var): Remove REFERENCE_TYPE case.
17005         (create_tinfo_types): Remove ref_desc_type_node init.
17006         * tinfo2.cc (__reference_type_info): Remove.
17007
17008 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
17009
17010         * decl.c (cp_finish_decl): Remove obsolete comment.
17011
17012         * typeck.c (build_ptrmemfunc1): Kill uninitialized warning.
17013
17014 2000-03-14  Mark Mitchell  <mark@codesourcery.com>
17015
17016         * cp-tree.h: Tweak documentation.
17017         * class.c (build_vbase_pointer_fields): Layout the fields, too.
17018         (avoid_overlap): Remove.
17019         (get_binfo_offset_as_int): New function.
17020         (dfs_serach_base_offsets): Likewise.
17021         (layout_nonempty_base_or_field): Likewise.
17022         (build_base_field): Layout fields here.  Avoid placing two objects
17023         of the same type at the same address, under the new ABI.
17024         (build_base_fields): Adjust accordingly.
17025         (create_vtable_ptr): Return the new field, but don't attach it to
17026         TYPE_FIELDS.
17027         (remove_base_field): Remove.
17028         (remove_base_fields): Remove.
17029         (layout_basetypes): Adjust accordingly.
17030         (layout_class_type): Call layout_field for each field, rather than
17031         just making a wholesale call to layout_type.
17032
17033 2000-03-14  Jeff Sturm  <jsturm@sigma6.com>
17034
17035         * except.c (expand_throw): Fix typo in _Jv_Sjlj_Throw.
17036
17037 2000-03-13  Jason Merrill  <jason@casey.cygnus.com>
17038
17039         * decl.c (grokfndecl): Set TREE_NOTHROW if TYPE_NOTHROW_P.
17040
17041         * except.c (dtor_nothrow): New fn.
17042         (do_pop_exception): Use it.  Take type parm.
17043         (push_eh_cleanup): Take type parm.
17044         (expand_start_catch_block): Pass it.
17045         (build_eh_type_type_ref): Accept null type.
17046
17047 2000-03-12  Mark Mitchell  <mark@codesourcery.com>
17048
17049         * cp-tree.h (revert_static_member_fn): Change prototype.
17050         * decl.c (grokfndecl): Adjust call to revert_static_member_fn.
17051         (grok_op_properties): Likewise.
17052         (start_function): Likewise.
17053         (revert_static_member_fn): Simplify.
17054         * pt.c (check_explicit_specialization): Adjust call to
17055         revert_static_member_fn.
17056
17057 2000-03-11  Mark Mitchell  <mark@codesourcery.com>
17058
17059         * cp-tree.h (scope_kind): New type.
17060         (tmpl_spec_kind): Likewise.
17061         (declare_pseudo_global_level): Remove.
17062         (pseudo_global_level_p): Rename to template_parm_scope_p.
17063         (pushlevel): Remove declaration.
17064         (begin_scope): New function.
17065         (finish_scope): Likewise.
17066         (current_tmpl_spec_kind): Likewise.
17067         * decl.c (struct binding_level): Shorten parm_flag to 2 bits.
17068         Shorten keep to 2 bits.  Rename pseudo_global to template_parms_p.
17069         Add template_spec_p.
17070         (toplevel_bindings_p): Adjust.
17071         (declare_pseudo_global_level): Remove.
17072         (pseudo_global_level_p): Rename to template_parm_scope_p.
17073         (current_tmpl_spec_kind): New function.
17074         (begin_scope): Likewise.
17075         (finish_scope): Likewise.
17076         (maybe_push_to_top_level): Adjust.
17077         (maybe_process_template_type_declaration): Likewise.
17078         (pushtag): Likewise.
17079         (pushdecl_nonclass_level): Likewise.
17080         (lookup_tag): Likewise.
17081         (grokfndecl): Handle member template specializations.  Share
17082         constructor and non-constructor code.
17083         * decl2.c (check_classfn): Handle member template specializations.
17084         * pt.c (begin_template_parm_list): Use begin_scope.
17085         (begin_specialization): Likewise.
17086         (end_specialization): Likewise.
17087         (check_explicit_specialization): Use current_tmpl_spec_kind.
17088         Handle member template specializations.
17089         (end_template_decl): Use finish_scope.  Remove call to
17090         get_pending_sizes.
17091         (push_template_decl_real): Remove bogus error message.
17092         (tsubst_decl): Fix typo in code contained in comment.
17093         (instantiate_template): Handle member template specializations.
17094         (most_general_template): Likewise.
17095
17096 2000-03-11  Gabriel Dos Reis  <gdr@codesourcery.com>
17097
17098         * lex.c (whitespace_cr): Compress consecutive calls to warning().
17099         (do_identifier): Ditto for error().
17100
17101         * pt.c (convert_nontype_argument): Ditto for cp_error().
17102         (convert_template_argument): Ditto for cp_pedwarn().
17103
17104 2000-03-11  Jason Merrill  <jason@casey.cygnus.com>
17105
17106         * exception.cc (__check_null_eh_spec): New fn.
17107         * except.c (expand_end_eh_spec): Call it if the spec is throw().
17108
17109 2000-03-10  Jason Merrill  <jason@casey.cygnus.com>
17110
17111         * decl.c (push_throw_library_fn): Take the FUNCTION_TYPE.
17112         * except.c (expand_end_eh_spec): Add the return type.
17113         * rtti.c (throw_bad_cast): Add the parmtypes.
17114         (throw_bad_typeid): Likewise.
17115
17116         * semantics.c (expand_stmt): Only leave out rtl for unused
17117         artificials, and set DECL_IGNORED_P on them as well.
17118         * decl.c (wrapup_globals_for_namespace): Likewise.
17119
17120 2000-03-09  Nathan Sidwell  <nathan@codesourcery.com>
17121
17122         * decl.c (maybe_commonize_var): Skip all artificial decls.
17123         * pt.c (tsubst_decl): Don't copy TREE_ASM_WRITTEN.
17124
17125 2000-03-10  Jason Merrill  <jason@casey.cygnus.com>
17126
17127         * lang-options.h, decl2.c: Add -fno-enforce-eh-specs.
17128         * cp-tree.h: Declare flag_enforce_eh_specs.
17129         * decl.c (store_parm_decls, finish_function): Check it.
17130
17131         C library functions don't throw.
17132         * Makefile.in (cfns.h): New target.
17133         (except.o): Depend on it.
17134         * Make-lang.in (cc1plus): Depend on cfns.gperf.
17135         * cfns.gperf: New file.
17136         * cfns.h: Generated.
17137         * except.c: Include it.
17138         (nothrow_libfn_p): New fn.
17139         * decl.c (grokfndecl): Use it.
17140         * cp-tree.h: Declare it.
17141
17142         * decl.c (push_overloaded_decl_1, auto_function,
17143         define_function): Lose.
17144         (build_library_fn_1): New static fn.
17145         (builtin_function): Use it.
17146         (get_atexit_node): Use build_library_fn_ptr.
17147         (build_library_fn, build_cp_library_fn, build_library_fn_ptr,
17148         build_cp_library_fn_ptr, push_library_fn, push_cp_library_fn,
17149         push_void_library_fn, push_throw_library_fn): New fns.
17150         * cp-tree.h: Declare them.
17151         (cp_tree_index): Remove CPTI_BAD_CAST, CPTI_BAD_TYPEID.
17152         (throw_bad_cast_node, throw_bad_typeid_node): Lose.
17153         * except.c (init_exception_processing, call_eh_info, do_pop_exception,
17154         (expand_end_eh_spec, alloc_eh_object, expand_throw): Use above fns.
17155         * rtti.c (build_runtime_decl): Lose.
17156         (throw_bad_cast, throw_bad_typeid, get_tinfo_decl,
17157         build_dynamic_cast_1, expand_si_desc, expand_class_desc,
17158         expand_ptr_desc, expand_attr_desc, expand_generic_desc): Use above fns.
17159
17160         * call.c (build_call): Remove result_type parm.
17161         Call mark_used on unused artificial fns.
17162         * init.c, method.c, typeck.c, except.c, rtti.c: Adjust.
17163
17164 2000-03-09  Jason Merrill  <jason@casey.cygnus.com>
17165
17166         * call.c (build_call): Set TREE_NOTHROW on the CALL_EXPR as
17167         appropriate.
17168         * decl.c (define_function): Set TREE_NOTHROW on the FUNCTION_DECL.
17169         * except.c (call_eh_info, alloc_eh_object, expand_throw): Set
17170         TREE_NOTHROW or TREE_THIS_VOLATILE on the function as appropriate.
17171         * rtti.c (build_runtime_decl, get_tinfo_decl, build_dynamic_cast_1,
17172         expand_si_desc, expand_class_desc, expand_ptr_desc, expand_attr_desc,
17173         expand_generic_desc): Likewise.
17174
17175 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
17176
17177         * exception.cc (__cp_pop_exception): Cleanup the original object.
17178
17179 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
17180
17181         * decl.c (grok_op_properties): Merge conversion to void warning
17182         with other silly op warnings.
17183
17184 2000-03-08  Jason Merrill  <jason@casey.cygnus.com>
17185
17186         * typeck2.c (process_init_constructor): Set TREE_PURPOSE of
17187         array CONSTRUCTOR elements.  Don't use expr_tree_cons.
17188
17189 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
17190
17191         * decl.c (cp_make_fname_decl): New function.
17192         (wrapup_globals_for_namespace): Don't emit unused static vars.
17193         (init_decl_processing): Remove comment about use of
17194         array_domain_type. Set make_fname_decl.
17195         (cp_finish_decl): Remove __FUNCTION__ nadgering.
17196         * semantics.c (begin_compound_stmt): Remove
17197         current_function_name_declared flagging.
17198         (expand_stmt): Don't emit unused local statics.
17199         * typeck.c (decay_conversion): Don't treat __FUNCTION__ decls
17200         specially.
17201
17202 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
17203
17204         * typeck.c (convert_for_assignment): Don't look at array
17205         initializer.
17206         * call.c (convert_like_real): Likewise.
17207
17208 2000-03-07  Jason Merrill  <jason@casey.cygnus.com>
17209
17210         Add initial support for '\uNNNN' specifier.
17211         * lex.c (read_ucs): New fn.
17212         (readescape, skip_white_space): Call it.
17213         (is_extended_char, is_extended_char_1): New fns.
17214         (utf8_extend_token): New fn, #if 0'd out.
17215         (real_yylex): Treat extended chars like letters.
17216
17217         * search.c (note_debug_info_needed): Walk the bases even if we
17218         weren't deferring the type itself.
17219
17220 2000-03-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17221
17222         * decl2.c (finish_objects): Constify a char*.
17223
17224         * method.c (emit_thunk): Likewise.
17225
17226 2000-03-06  Nathan Sidwell  <nathan@codesourcery.com>
17227
17228         * typeck.c (dubious_conversion_warnings): Look through
17229         REFERENCE_TYPE.
17230
17231 2000-03-06  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
17232
17233         * class.c (dfs_modify_vtables): I is now unsigned.
17234         (check_bitfield_decl): Use tree_int_cst_sgn and compare_tree_int.
17235         (build_base_field): Add casts of TREE_INT_CST_LOW to HOST_WIDE_INT.
17236         * error.c (dump_expr): Cast TREE_INT_CST_HIGH to unsigned.
17237         * init.c (build_vec_init): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
17238         * method.c (build_overload_int): Cast TREE_INT_CST_HIGH to unsigned.
17239         * typeck.c (build_binary_op, case TRUNC_DIV_EXPR):
17240         Call integer_all_onesp.
17241         * typeck2.c (process_init_constructor): Use compare_tree_int.
17242
17243         * lang-specs.h (as): Don't call if -syntax-only.
17244
17245 2000-03-06  Mark Mitchell  <mark@codesourcery.com>
17246
17247         * expr.c (cplus_expand_expr, case STMT_EXPR): Don't set
17248         RTL_EXPR_HAS_NO_SCOPE after all.
17249
17250 2000-03-05  Mark Mitchell  <mark@codesourcery.com>
17251
17252         * expr.c (cplus_expand_expr, case STMT_EXPR): Use
17253         expand_start_stmt_expr and expand_end_stmt_expr directly.  Set
17254         RTL_EXPR_HAS_NO_SCOPE.
17255
17256         * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG a little
17257         later.
17258
17259         * dump.c (dequeue_and_dump): Dump SCOPE_NO_CLEANUPS_P.
17260
17261 2000-03-05  Nathan Sidwell  <nathan@codesourcery.com>
17262
17263         * call.c (convert_like): Macrofy.
17264         (convert_like_with_context): New macro.
17265         (convert_like_real): Renamed from convert_like.  Add calling
17266         context parameters, for diagnostics. Add recursive flag.  Call
17267         dubious_conversion_warnings for outer conversion.
17268         (build_user_type_conversion): Use convert_like_with_context.
17269         (build_over_call): Likewise. Don't warn about dubious
17270         conversions here. Adjust convert_default_arg calls.
17271         (convert_default_arg): Add context parameters for diagnostics.
17272         Pass through to convert_like_with_context.
17273         * cp-tree.h (convert_default_arg): Add context parameters.
17274         (dubious_conversion_warnings): Prototype new function.
17275         * typeck.c (convert_arguments): Adjust convert_default_arg call.
17276         (dubious_conversion_warnings): New function, broken
17277         out of convert_for_assignment.
17278         (convert_for_assignment): Adjust.
17279
17280 2000-03-03  Jason Merrill  <jason@casey.cygnus.com>
17281
17282         * decl2.c (key_method): Break out from...
17283         (import_export_vtable, import_export_class): ...here.
17284
17285         * decl.c (finish_function): Don't mess with flag_keep_inline_functions.
17286         * decl2.c (finish_vtable_vardecl): Don't check decl_function_context.
17287
17288         * search.c (note_debug_info_needed, dfs_debug_mark,
17289         dfs_debug_unmarkedp): Uncomment.  Adjust for new scheme.
17290         * decl2.c (finish_vtable_vardecl): Call note_debug_info_needed.
17291
17292 2000-03-03  Nathan Sidwell  <nathan@codesourcery.com>
17293
17294         * decl.c (cp_finish_decl): Remove obsolete obstack comments, fix
17295         typos.
17296
17297 2000-03-02  Mark Mitchell  <mark@codesourcery.com>
17298
17299         * cp-tree.h (TYPE_NEEDS_DESTRUCTOR): Rename to ...
17300         (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): ... this.
17301         (TYPE_HAS_TRIVIAL_DESTRUCTOR): New macro.
17302         (lang_type): Split gets_new into has_new and has_array_new.
17303         (TYPE_VEC_NEW_USES_COOKIE): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
17304         (TYPE_GETS_NEW): Split into ...
17305         (TYPE_HAS_NEW_OPERATOR): ... this, and ...
17306         (TYPE_HAS_ARRAY_NEW_OPERATOR): ... this.
17307         (DECL_ARRAY_DELETE_OPERATOR_P): New macro
17308         (build_op_new_call): Don't declare.
17309         (build_new_1): Likewise.
17310         * call.c (build_op_new_call): Remove.
17311         * class.c (check_bases): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR
17312         instead of TYPE_NEEDS_DESTRUCTOR.
17313         (finish_struct_bits): Likewise.
17314         (add_implicitly_declared_members): Likewise.
17315         (check_field_decl): Likewise.
17316         (check_methods): Set TYPE_VEC_DELETE_TAKES_SIZE here, and set it
17317         correctly under the new ABI.
17318         * decl.c (start_decl_1): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR
17319         instead of TYPE_NEEDS_DESTRUCTOR.
17320         (initialize_local_var): Likewise.
17321         (destroy_local_var): Likewise.
17322         (cp_finish_decl): Likewise.
17323         (register_dtor_fn): Likewise.
17324         (grok_op_properties): Set TYPE_HAS_NEW_OPERATOR and
17325         TYPE_HAS_ARRAY_NEW_OPERATOR, not TYPE_HAS_NEW.  Don't set
17326         TYPE_VEC_DELETE_TAKES_SIZE here.
17327         (xref_basetypes): Set TYPE_HAS_NEW_OPERATOR and
17328         TYPE_HAS_ARRAY_NEW_OPERATOR, not TYPE_HAS_NEW.
17329         (store_parm_decls):  Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
17330         (finish_destructor_body): Likewise.
17331         (maybe_build_cleanup_1): Likewise.
17332         * decl2.c (do_static_destruction): Likewise.
17333         * init.c (build_new_1): Make it static.
17334         (perform_member_init): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
17335         (expand_cleanup_for_base): Likewise.
17336         (get_cookie_size): New function.
17337         (build_new_1): Handle array-new cookies correctly under the new
17338         ABI.
17339         (build_vec_delete_1): Likewise.
17340         (build_vec_init):  Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
17341         (build_delete): Likewise.
17342         (build_vec_delete): Handle array-new cookies correctly under the new
17343         ABI.
17344         * lex.c (do_identifier): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
17345         * pt.c (instantiate_class_template): Set TYPE_HAS_NEW_OPERATOR and
17346         TYPE_HAS_ARRAY_NEW_OPERATOR.
17347         * ptree.c (print_lang_type): Check them.
17348         * search.c (context_for_name_lookup): Fix typo in comment.
17349         (tree_has_any_destructor_p): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
17350         * tree.c (break_out_cleanups): Likewise.
17351         (build_cplus_array_test_1): Likewise.
17352         (cp_build_qualified_type_real): Likewise.
17353         * typeck.c (complete_type): Likewise.
17354
17355         * g++spec.c (lang_specific_driver): Add -fnew-abi at the start of
17356         the command-line, not the end.
17357
17358 2000-03-01  Jason Merrill  <jason@casey.cygnus.com>
17359
17360         * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG.
17361
17362 2000-03-02  Tom Tromey  <tromey@cygnus.com>
17363
17364         * cp-tree.h (build_java_class_ref): Declare.
17365         * init.c (build_java_class_ref): No longer static.
17366         * except.c (expand_throw): Generate a Java-style `throw' if the
17367         thrown object is a "Java" object.
17368         (initialize_handler_parm): Generate a Java-style lookup of
17369         exception info if the caught object is a "Java" object.
17370         (catch_language, catch_language_init): New globals.
17371         (decl_is_java_type): New function.
17372         (expand_start_catch_block): Don't call push_eh_info() or
17373         push_eh_cleanup() when handling a Java-style "catch".  Pass Java
17374         class reference to build_catch_block.
17375
17376 2000-03-02  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
17377
17378         * typeck.c (comptypes): Treat sizetype like its language equivalent.
17379
17380 2000-03-01  Bernd Schmidt  <bernds@cygnus.co.uk>
17381
17382         * typeck.c (maybe_warn_about_returning_address_of_local): Reorganize
17383         to merge reference/pointer code and fix incorrect warnings.
17384
17385 2000-02-29  Jason Merrill  <jason@casey.cygnus.com>
17386
17387         * search.c (protected_accessible_p): Use context_for_name_lookup.
17388
17389         * init.c (construct_virtual_bases): Fix thinko.
17390         * typeck.c (expand_ptrmemfunc_cst): Fix thinko.
17391
17392 2000-03-01  Martin von Loewis  <loewis@informatik.hu-berlin.de>
17393
17394         * decl.c (current_function_decl): Move to toplev.c.
17395
17396 2000-02-29  Nathan Sidwell  <nathan@codesourcery.com>
17397
17398         * pt.c (fn_type_unification): Unify return type, whenever
17399         provided.
17400         (get_bindings_real): Only pass return type when necessary.
17401         Remove explicit return type check.
17402         * class.c (resolve_address_of_overloaded_function): Pass desired
17403         return type to fn_type_unification.
17404
17405 2000-02-28  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
17406
17407         * class.c (build_vtbl_or_vbase_field, check_methods): Don't clear
17408         DECL_FIELD_SIZE.
17409         (check_bitfield_decl, check_field_decls): Set DECL_SIZE, not
17410         DECL_FIELD_SIZE.
17411         * rtti.c (expand_class_desc): Likewise.
17412         * cp-tree.h (DECL_INIT_PRIORITY): Use underlying union name.
17413         (THUNK_VCALL_OFFSET): Likewise.
17414         (THUNK_DELTA): Reflect changes in ../tree.h.
17415
17416 2000-02-28  Jason Merrill  <jason@casey.cygnus.com>
17417
17418         * search.c (protected_accessible_p): Also allow the access if
17419         the member is public in DERIVED.  Lose TYPE parm.
17420         (friend_accessible_p): Lose TYPE parm.
17421         (accessible_p): Adjust.
17422
17423 2000-02-27  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
17424
17425         * class.c (dfs_build_vtable_offset_vtbl_entries): Don't use size_binop
17426         on things that are not sizes; ssize_binop deleted.
17427         Call size_diffop when appropriate.
17428         (dfs_build_vcall_offset_vtbl_entries): Likewise.
17429         (build_primary_vtable, build_secondary_vtable): Likewise.
17430         (dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise.
17431         Variable I is HOST_WIDE_INT.
17432         (get_vfield_offset): Pass proper types to size_binop.
17433         (size_extra_vtbl_entries, layout_virtual_bases): Likewise.
17434         (finish_struct_1): Likewise.
17435         (skip_rtti_stuff): Arg N is now pointer to signed.
17436         (layout_class_type): Use size_zero_node.
17437         * cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed.
17438         * cvt.c (cp_convert_to_pointer): Pass proper types to size_binop.
17439         * decl.c (complete_arry_type): Pass proper types to size_binop.
17440         (xref_basetypes): BINFO_OFFSET is sizetype.
17441         * error.c (dump_expr): Don't use size_binop non-sizes.
17442         * expr.c (cplus_expand_constant): Pass proper types to size_binop.
17443         * init.c (construct_virtual_bases): Fix type error.
17444         (build_vec_delete_1): Pass proper type to size_binop and don't
17445         fold result.
17446         * lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype.
17447         * rtti.c (get_base_offset): Pass proper type to size_binop.
17448         * search.c (dfs_find_vbases): Fix type error.
17449         (expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed.
17450         (dfs_get_vbase_types): BINFO_OFFSET is sizetype.
17451         * tree.c (debug_binfo): Variable N is signed.
17452         Use HOST_WIDE_INT_PRINT_DEC.
17453         * typeck.c (comptypes): sizetype is same as equivalent integer type.
17454         (c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT,
17455         size_one_node and size_zero_node.
17456         (c_alignof): Use size_one_node.
17457         (build_component_addr): Pass proper types to size_binop.
17458         (expand_ptrmemfunc_cst): Don't use size_binop on non-sizes.
17459
17460 2000-02-26  Jason Merrill  <jason@casey.cygnus.com>
17461
17462         Implement class scope using-declarations for functions.
17463         * class.c (handle_using_decl): Call add_method for used functions.
17464         Use IDENTIFIER_CLASS_VALUE to check for conflicts.
17465         (add_method): Used functions are hidden by local functions.
17466         (check_bases_and_members): Handle using-decls before finalizing
17467         CLASSTYPE_METHOD_VEC.
17468         * call.c (add_function_candidate): Add ctype parm; if nonzero,
17469         override the type of 'this' accordingly.
17470         (add_template_candidate, add_template_candidate_real): Add ctype parm.
17471         (convert_class_to_reference, build_user_type_conversion_1,
17472         build_new_function_call, build_object_call, build_new_op,
17473         build_new_method_call): Pass ctype parm.
17474
17475         * search.c (lookup_member): Put rval_binfo, not basetype_path, in
17476         the baselink.
17477         * call.c (convert_class_to_reference, build_user_type_conversion_1,
17478         build_new_function_call, build_object_call, build_new_op,
17479         build_new_method_call, build_op_delete_call): Don't get basetype_path
17480         from a baselink.
17481         * typeck.c (build_component_ref): Likewise.
17482         * init.c (build_offset_ref): Likewise.
17483         (resolve_offset_ref): Don't call enforce_access.
17484         Call build_scoped_ref.
17485         * typeck2.c (build_scoped_ref): Simplify.  Do nothing if it
17486         would cause an error or if -pedantic.
17487         * class.c (alter_access): Lose binfo parm.
17488
17489 2000-02-26  Mark Mitchell  <mark@codesourcery.com>
17490
17491         * semantics.c (simplify_aggr_init_exprs_p): Don't walk into
17492         types.
17493
17494 2000-02-25  Alfred Minarik <a8601248@unet.univie.ac.at>
17495
17496         * rtti.c (get_vmi_pseudo_type_info): Move __vmi_class_type_info
17497         pseudo_type_info creation into the std namespace
17498
17499 2000-02-26  Mark Mitchell  <mark@codesourcery.com>
17500
17501         * cp-tree.h (DECL_NEEDED_P): Tweak to correct usage before EOF.
17502         (import_export_class): Remove declaration.
17503         * decl2.c (import_export_class): Make it static.
17504         * dump.c (dequeue_and_dump): Handle PREDECREMENT_EXPR,
17505         PREINCREMENT_EXPR, POSTDECREMENT_EXPR, POSTINCREMENT_EXPR,
17506         EXPR_WITH_FILE_LOCATION.
17507         * lex.c (check_newline): Tweak filename/lineno setting.
17508         * semantics.c (begin_while_stmt): Fix typo in comment.
17509
17510 2000-02-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
17511
17512         * lang-options.h (-fmessage-length=): Add missing option.
17513
17514         * Make-lang.in (CXX_SRCS): Add .h files and sort list.
17515
17516 2000-02-26  Zack Weinberg  <zack@wolery.cumb.org>
17517
17518         * Make-lang.in: Delete refs to LIBGCC2_DEPS.
17519
17520 2000-02-25  Jim Wilson  <wilson@cygnus.com>
17521
17522         * optimize.c (expand_call_inline): Emit the return label before
17523         evaluating the return value.
17524
17525 2000-02-24  Mark Mitchell  <mark@codesourcery.com>
17526
17527         * lex.c (check_newline): Use push_srcloc and pop_srcloc, rather
17528         than duplicating functionality here.
17529         * optimize.c: Include input.h.
17530         (expand_call_inline): Use push_srcloc and pop_srcloc.
17531         * parse.y (maybe_cv_qualifier): Remove calls to emit_line_note.
17532         * parse.c: Regenerated.
17533         * Makefile.in (lex.o): Depend on input.h.
17534         (optimize.o): Likewise.
17535
17536 2000-02-24  Nathan Sidwell  <nathan@codesourcery.com>
17537
17538         * decl.c (grokdeclarator): Diagnose qualifiers on non-member
17539         function type, rather than ICE.
17540
17541 2000-02-23  Jason Merrill  <jason@casey.cygnus.com>
17542
17543         * decl.c (grokdeclarator): Call decl_type_access_control.
17544         * parse.y (parse_end_decl): Don't call decl_type_access_control if
17545         decl is null.
17546
17547 2000-02-23  Nathan Sidwell  <nathan@codesourcery.com>
17548
17549         * decl.c (decls_match): Remove obsolete static member nadgering.
17550
17551 2000-02-21  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
17552
17553         * decl.c (grokdeclarator): Change ANSI to ISO.
17554         * lex.c (consume_string, readescape, do_identifier): Likewise.
17555         (parse_float, real_yylex): Likewise.
17556         * parse.y (paren_expr_or_null, paren_cond_or_null): Likewise.
17557         (unary_expr, new_initializer, cast_expr, primary, primary_no_id,
17558         new_type_id, maybe_label_decls, simple_stmt,
17559         for.init.statement): Likewise.
17560         * pt.c (do_decl_instantiation, do_type_instantiation): Likewise.
17561         * semantics.c (finish_named_return_value): Likewise.
17562         * parse.c: Regenerate.
17563
17564 2000-02-21  Mark Mitchell  <mark@codesourcery.com>
17565
17566         * cp-tree.h (CPTI_VTABLE_INDEX_TYPE): New macro.
17567         (CPTI_CLASS_STAR_TYPE): Remove.
17568         (vtable_index_type): Likewise.
17569         (class_star_type_node): Remove.
17570         (TYPE_PTRMEMFUNC_FN_TYPE): Adjust for the new ABI.
17571         (build_binary_op_nodefault): Remove.
17572         * call.c (build_new_op): Use build_binary_op instead of
17573         build_binary_op_nodefault.
17574         * decl.c (init_decl_processing): Remove class_star_type_node
17575         initialization.  Make delta_type_node ptrdiff_type_node under the
17576         new ABI.  Initialize vtable_index_type.
17577         (build_ptrmemfunc_type): Build different structures for the new
17578         ABI.
17579         (build_enumerator): Use build_binary_op instead of
17580         build_binary_op_nodefault.
17581         * method.c (build_overload_value): Mangle pointers-to-members
17582         appropriately under the new ABI.
17583         * typeck.c (build_array_ref): Use build_binary_op instead of
17584         build_binary_op_nodefault.
17585         (get_member_function_from_ptrfunc): Adjust for the new ABI.
17586         (build_binary_op_nodefault): Rename to ...
17587         (build_binary_op): ... this.  Remove old version.  Adjust for
17588         pointer-to-member comparisons under the new ABI.
17589         (build_ptrmemfunc1): Remove dead code.  Adjust for the new ABI.
17590         (build_ptrmemfunc): Adjust for the new ABI.
17591         (expand_ptrmemfunc_cst): Likewise.
17592         (delta2_from_ptrmemfunc): Assert that we're not using the new ABI.
17593         (pfn_from_ptrmemfunc): Adjust for the new ABI.
17594
17595 2000-02-21  Gabriel Dos Reis  <gdr@codesourcery.com>
17596
17597         * call.c (build_object_call): Compress consecutive calls to
17598         cp_error.
17599         (build_conditional_expr): Say 'ISO C++' not 'ANSI C++'.
17600         (build_op_delete_call): Adjust message formatting.
17601
17602         * class.c (check_bases): Compress consecutive calls to
17603         cp_pedwarn.
17604         (finish_struct_anon): Say 'ISO C++'.
17605
17606         * decl.c (start_decl): Same here.
17607         (grok_reference_init): Likewise.
17608         (grokfndecl): Correct message formatting.
17609         (grokfndecl): Improve diagnostic.
17610         (check_static_variable_definition): Likewise. Say 'ISO C++'
17611         (compute_array_index_type): Say 'ISO C++'
17612         (create_array_type_for_decl): Compress consecutive calls to
17613         cp_error.
17614         (grokdeclarator): Say 'ISO C++'
17615         (grok_op_properties): Likewise.
17616
17617         * decl2.c (delete_sanity): Clairify diagnostic.
17618         (check_member_template): Same here.
17619         (grok_function_init): Use consistent terminology.
17620
17621         * expr.c (do_case): Say 'ISO C++'
17622
17623         * friend.c (do_friend): Compress consecutive calls to warning.
17624
17625 2000-02-20  Mark Mitchell  <mark@codesourcery.com>
17626
17627         * cp-tree.h (merge_primary_and_secondary_vtables_p): New macro.
17628         * class.c (build_secondary_vtable): Reorganize.  Don't create a
17629         new vtable under the new ABI.
17630         (layout_vtable_decl): Don't add num_extra_vtbl_entries when
17631         computing the size.
17632         (build_vtbl_initializer): Don't return a CONSTRUCTOR; just return
17633         the initializing elements.
17634         (initialize_vtable): New function.
17635         (dfs_finish_vtbls): Use it.
17636         (dfs_accumulate_vtbl_inits): New function.
17637         (finish_vtbls): Merge primary and secondary vtables under the new
17638         ABI.
17639         (finish_struct_1): Remove redundant call to layout_vtable_decl.
17640         * init.c (expand_virtual_init): Deal with BINFO_VTABLEs that
17641         aren't VAR_DECLs.
17642
17643         * class.c (build_vtable): New function, split out from ...
17644         (get_vtable_decl): ... here, and ...
17645         (build_secondary_vtable): ... here.
17646
17647         * pt.c (tsubst_decl): Fix formatting.
17648
17649 2000-02-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
17650
17651         * class.c (build_primary_vtable, layout_vtable_decl): Likewise.
17652         (avoid_overlap, build_base_field): Likewise.
17653         (build_base_field, build_base_fields, is_empty_class):
17654         Test DECL_SIZE with integer_zero.
17655         (layout_class_type): Set CLASSTYPE_SIZE_UNIT.
17656         * cp-tree.h (struct lang_type): New field size_unit.
17657         (CLASSTYPE_SIZE_UNIT): New macro.
17658         * decl.c (init_decl_processing): Set DECL_SIZE_UNIT.
17659         (cp_finish_decl): Delete -Wlarger-than processing.
17660         * optimize.c (remap_decl): Walk DECL_SIZE_UNIT.
17661         * pt.c (tsubst_decl): Set DECL_SIZE_UNIT.
17662         * tree.c (make_binfo): binfo vector is one entry longer.
17663         (walk_tree): Walk DECL_SIZE_UNIT.
17664
17665 2000-02-19  Mark Mitchell  <mark@codesourcery.com>
17666
17667         * class.c (dfs_build_vcall_offset_vtbl_entries): Fix typo in
17668         comment.
17669         (build_vtable_entry): Don't assume all vtable entries are
17670         functions.
17671         (build_vtbl_initializer): Adjust accordingly.
17672         (get_vtable_decl): Fix formatting.
17673
17674 2000-02-18  Jason Merrill  <jason@casey.cygnus.com>
17675
17676         * semantics.c (deferred_type_access_control): Walk the entire
17677         type_lookups list.
17678         (save_type_access_control): Rename from
17679         initial_deferred_type_access_control.  Just remember the value.
17680         (decl_type_access_control): New fn.
17681         (begin_function_definition): Use deferred_type_access_control, after
17682         we've started the function.  Set type_lookups to error_mark_node.
17683         * parse.y (frob_specs, fn.def1): Adjust.
17684         (parse_decl0, parse_field, parse_field0, parse_bitfield): New fns.
17685         (parse_end_decl, parse_bitfield0, parse_method): New fns.
17686         (fn.def2, initdcl, initdcl0_innards, nomods_initdcl0): Use them.
17687         (after_type_component_declarator0): Likewise.
17688         (after_type_component_declarator): Likewise.
17689         (notype_component_declarator): Likewise.
17690         * cp-tree.h: Adjust.
17691
17692         * decl.c (redeclaration_error_message): Allow redeclaration of
17693         namespace-scope decls.
17694
17695 2000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
17696
17697         * typeck2.c (my_friendly_abort): Use GCCBUGURL.
17698
17699 2000-02-17  Mark Mitchell  <mark@codesourcery.com>
17700
17701         * class.c (add_method): Don't set DECL_VIRTUAL_CONTEXT.
17702         * decl2.c (grokclassfn): Likewise.
17703
17704         * ir.texi: Document DECL_TEMPLATE_INSTANTIATIONS.
17705
17706         * decl2.c (lang_decode_option): Don't set default message length
17707         here.
17708         * lex.c (lang_init_options): Set it here.
17709
17710 2000-02-16  Mark Mitchell  <mark@codesourcery.com>
17711
17712         Make DECL_CONTEXT mean the class in which a member function was
17713         declared, even for a virtual function.
17714         * cp-tree.h (DECL_CLASS_CONTEXT): Adjust.
17715         (DECL_FRIEND_CONTEXT): New macro.
17716         (DECL_REAL_CONTEXT): Remove.
17717         (SET_DECL_FRIEND_CONTEXT): Likewise.
17718         (DECL_VIRTUAL_CONTEXT): Adjust.
17719         (DECL_CLASS_SCOPE_P): Use TYPE_P.
17720         (add_friends): Remove.
17721         (hack_decl_function_context): Likewise.
17722         * call.c (build_new_function_call): Replace DECL_REAL_CONTEXT with
17723         CP_DECL_CONTEXT.
17724         (build_over_call): Fix indentation.  Use DECL_CONTEXT
17725         instead of DECL_CLASS_CONTEXT.
17726         * class.c (dfs_build_vcall_offset_vtbl_entries): Likewise.
17727         (add_method): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT.
17728         (strictly_overrides): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
17729         (build_vtbl_or_vbase_field): Don't set DECL_CLASS_CONTEXT.
17730         (build_base_field): Likewise.
17731         (finish_struct_1): Likewise.
17732         (build_self_reference): Likewise.
17733         * decl.c (push_class_binding): Use CP_DECL_CONTEXT, not
17734         DECL_REAL_CONTEXT.
17735         (pushtag): Use decl_function_context, not
17736         hack_decl_function_context.
17737         (decls_match): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
17738         (duplicate_decls): Use DECL_VIRTUAL_CONTEXT.
17739         (pushdecl): Remove bogus code.
17740         (start_decl): Use DECL_CONTEXT rather than DECL_CLASS_CONTEXT.
17741         (cp_finish_decl): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
17742         (grokfndecl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
17743         Use decl_function_context, nothack_decl_function_context.
17744         (grokvardecl): Don't set DECL_CLASS_CONTEXT.
17745         (grokdeclarator): Likewise.  Use decl_function_context, not
17746         hack_decl_function_context.
17747         (copy_args_p): Document.  Don't use DECL_CLASS_CONTEXT.
17748         (start_function): Use DECL_FRIEND_CONTEXT, not
17749         DECL_CLASS_CONTEXT.  Use decl_function_context, not
17750         hack_decl_function_context.
17751         (finish_function): Use decl_function_context, not
17752         hack_decl_function_context.
17753         (maybe_retrofit_in_chrg): Use DECL_CONTEXT, not
17754         DECL_CLASS_CONTEXT.
17755         (grokclassfn): Set DECL_VIRTUAL_CONTEXT, not DECL_CONTEXT.
17756         (finish_static_data_member_decl): Don't set DECL_CLASS_CONTEXT.
17757         (grokfield): Likewise.
17758         (finish_builtin_type): Likewise.
17759         (finish_vtable_vardec): Use decl_function_context, not
17760         hack_decl_function_context.
17761         (import_export_decl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
17762         (start_static_initialization_or_destruction): Likewise.
17763         (finish_static_initialization_or_destruction): Likewise.
17764         (mark_used): Adjust logic for deciding when to synthesize methods.
17765         * dump.c (dequeue_and_dump): Use CP_DECL_CONTEXT, not
17766         DECL_REAL_CONTEXT.
17767         * error.c (dump_function_decl): Use DECL_CONTEXT, not
17768         DECL_CLASS_CONTEXT.
17769         * friend.c (is_friend): Likewise.
17770         (add_friends): Remove.
17771         (do_friend): Use SET_DECL_FRIEND_CONTEXT.
17772         * lex.c (begin_definition_of_inclass_inline): Use
17773         decl_function_context, not hack_decl_function_context.
17774         (process_next_inline): Likewise.
17775         (do_identifier): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
17776         * method.c (set_mangled_name_for_decl): Use DECL_CONTEXT, not
17777         DECL_CLASSS_CONTEXT.
17778         (hack_identifier): Likewise.
17779         (synthesize_method):  Use decl_function_context, not
17780         hack_decl_function_context.
17781         * pt.c (template_class_depth_real): Use CP_DECL_CONTEXT, not
17782         DECL_REAL_CONTEXT.
17783         (is_member_template): Use decl_function_context, not
17784         hack_decl_function_context.  Use DECL_CONTEXT, not
17785         DECL_CLASS_CONTEXT.
17786         (build_template_decl): Set DECL_VIRTUAL_CONTEXT, not
17787         DECL_CLASS_CONTEXT.
17788         (check_default_tmpl_args): Use CP_DECL_CONTEXT, not
17789         DECL_REAL_CONTEXT.
17790         (push_template_decl_real): Likewise.
17791         (instantiate_class_template): Don't call add_friends.
17792         (tsubst_default_argument): Use DECL_CONTEXT, not
17793         DECL_REAL_CONTEXT.
17794         (tsubst_decl): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT.
17795         Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
17796         (set_meangled_name_for_template_decl): Use DECL_CONTEXT, not
17797         DECL_CLASS_CONTEXT.
17798         * repo.c (repo_inline_used): Likewise.
17799         * search.c (current_scope): Adjust for new _CONTEXT macros.
17800         (context_for_name_lookup): Use CP_DECL_CONTEXT, not
17801         DECL_REAL_CONTEXT.
17802         (friend_accessible_p): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
17803         (lookup_fnfields_here):Likewise.
17804         (check_final_overrider): Likewise.
17805         (init_vbase_pointers): Likewise.
17806         (virtual_context): Likewise.
17807         * semantics.c (finish_member_declaration): Just set DECL_CONTEXT.
17808         (expand_body): Use decl_function_context, not
17809         hack_decl_function_context.
17810         * tree.c (hack_decl_function_context): Remove.
17811         * typeck.c (build_x_function_call): Use DECL_CONTEXT, not
17812         DECL_CLASS_CONTEXT.
17813         * typeck2.c (error_not_base_type): Likewise.
17814
17815 2000-02-15  Jason Merrill  <jason@casey.cygnus.com>
17816
17817         * decl.c (xref_tag): Don't SET_IDENTIFIER_NAMESPACE_VALUE.
17818
17819 2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17820
17821         * Make-lang.in (g++spec.o): Depend on $(GCC_H), not gcc.h.
17822
17823 2000-02-15  Jonathan Larmour  <jlarmour@redhat.co.uk>
17824
17825         * lang-specs.h: Add new __GNUC_PATCHLEVEL__ define to default spec.
17826
17827 2000-01-16  Gabriel Dos Reis  <gdr@codesourcery.com>
17828
17829         * decl2.c (lang_decode_option): Enable automatic line wrapping.
17830
17831 2000-02-13  Jason Merrill  <jason@casey.cygnus.com>
17832
17833         * parse.y (frob_specs): Split out...
17834         (parse_decl): From here.
17835         (fn.def2): Call initial_deferred_type_access_control.
17836         (after_type_component_declarator0): Call frob_specs.
17837         (notype_component_declarator0): Likewise.
17838         * search.c (friend_accessible_p): Nested classes are friends of their
17839         enclosing classes.
17840
17841 2000-02-10  Mark Mitchell  <mark@codesourcery.com>
17842
17843         * ir.texi (ADDR_EXPR): Document the fact that an ADDR_EXPR can be
17844         used to create an implicit temporary.
17845
17846         * class.c (dfs_modify_vtables): Tweak calculation of functions to
17847         override.
17848
17849 2000-02-08  Nathan Sidwell  <nathan@acm.org>
17850
17851         * typeck.c (strip_all_pointer_quals): Use TYPE_MAIN_VARIANT, to
17852         strip array element qualifiers too.
17853
17854 2000-02-07  Mark Mitchell  <mark@codesourcery.com>
17855
17856         * decl.c (store_parm_decls): Don't build cleanups for parameters
17857         while processing_template_decl.
17858
17859 2000-02-07  Jason Merrill  <jason@casey.cygnus.com>
17860
17861         * cp-tree.h (struct saved_scope): Add incomplete field.
17862         (namespace_scope_incomplete): New macro.
17863         * decl.c (pushdecl): Use it.
17864         (hack_incomplete_structures): Use it.  See through artificial
17865         binding levels.
17866         (mark_saved_scope): Mark it.
17867
17868         Implement access control for nested types.
17869         * search.c (type_access_control): New fn.
17870         (accessible_p): Now we do perform access control for types.
17871         * semantics.c (deferred_type_access_control): New fn.
17872         (initial_deferred_type_access_control): New fn.
17873         (begin_function_definition): Call it.  Add lookups parm.
17874         * decl.c (struct binding_level): Add this_class field.
17875         (pushlevel_class): Set it.
17876         (mark_binding_level): Mark it.
17877         (lookup_name_real): Use it.  Call type_access_control.
17878         (mark_saved_scope): Mark lookups field.
17879         * cp-tree.h (flagged_type_tree): Add lookups field.
17880         (struct saved_scope): Add lookups field.
17881         (type_lookups): New macro.
17882         * parse.y (declmods): Now <ftype>.
17883         (parse_decl): Add lookups parm.  Call
17884         initial_deferred_type_access_control.
17885         (lang_extdef): Clear type_lookups.
17886         (typed_declspecs, declmods, typespec): Set lookups field.
17887         (initdcl): Call deferred_type_access_control.
17888         (fn.def1, fn.def2, typed_declspecs1, initdcl0_innards, nomods_initdcl0,
17889         component_decl_1, named_parm): Adjust.
17890         * friend.c (is_friend): Nested classes are friends of their
17891         enclosing classes.
17892
17893         * class.c (currently_open_derived_class): New fn.
17894         * method.c (hack_identifier): Use it.
17895
17896         * lex.c (do_identifier): Remove obsolete code.
17897
17898         * parse.y (typed_typespecs): Propagate new_type_flag properly.
17899
17900 2000-02-05  Zack Weinberg  <zack@wolery.cumb.org>
17901
17902         * tinfo.h: Remove apostrophes from C++ comment (xgettext
17903         thinks this file is plain C).
17904
17905 2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17906
17907         * Makefile.in (call.o): Depend on $(EXPR_H).
17908
17909         * call.c: Include "expr.h".
17910
17911         * class.c (dump_class_hierarchy): Add prototype.
17912
17913         * search.c (dfs_get_pure_virtuals): Likewise.
17914
17915 2000-02-1  Ulrich Drepper  <drepper@redhat.com>
17916
17917         * parse.y (simple_stmt): Allow :: token in asm parameter list.
17918         * parse.c: Rebuilt.
17919
17920 2000-01-31  Jim Wilson  <wilson@cygnus.com>
17921
17922         * class.c (build_vtbl_or_vbase_field): New parameter fcontext.
17923         Store it in DECL_FCONTEXT.
17924         (build_vbase_pointer_fields, create_vtable_ptr): Fix callers.
17925
17926 2000-01-31  Jason Merrill  <jason@casey.cygnus.com>
17927
17928         * tinfo.h (old abi): #include "tconfig.h".
17929         * tinfo.cc (convert_to_base): Move into old abi section.
17930
17931 2000-01-31  Mark Mitchell  <mark@codesourcery.com>
17932
17933         * cp-tree.h (BINFO_VIRTUALS): Tweak documentation.
17934         (CLASSTYPE_PRIMARY_BINFO): Use BINFO_PRIMARY_BINFO.
17935         (BINFO_PRIMARY_BINFO): New macro.
17936         (BF_DELTA): Rename to ...
17937         (BV_DELTA): ... this.
17938         (BF_VCALL_INDEX): Rename to ...
17939         (BV_VCALL_INDEX): ... this.
17940         (BF_FN): Rename to ...
17941         (BV_FN): ... this.
17942         * class.c (build_vbase_path): Adjust for changes to reverse_path.
17943         (set_rtti_entry): Rename BF_ macros to BV_ variants.
17944         (modify_vtable_entry): Simplify.
17945         (add_virtual_function): Rename BF_ macros to BV_ variants.
17946         (build_vtable_initializer): Likewise.
17947         (get_class_offset_1): Remove.
17948         (dfs_get_class_offset): Likewise.
17949         (get_class_offset): Likewise.
17950         (dfs_find_final_overrider): New function.
17951         (find_final_overrider): Likewise.
17952         (modify_one_vtable): Remove.
17953         (dfs_find_base): New function.
17954         (dfs_modify_vtables): Fold modify_one_vtable in here.  Use
17955         find_final_overrider.
17956         (modify_all_vtables): Adjust.  Set BV_VCALL_INDEX on new
17957         virtuals.
17958         (dfs_fixup_vtable_deltas): Remove.
17959         (override_one_vtable): Remove.
17960         (merge_overrides): Likewise.
17961         (layout_virtual_bases): Make sure BINFO_OFFSET is set right for
17962         unreal chilren of virtual bases.
17963         (finish_struct_1): Don't use merge_overrides.  Don't use
17964         dfs_fixup_vtable_deltas.
17965         * tree.c (reverse_path): Return a TREE_LIST, not a chain of
17966         BINFOs.
17967
17968 2000-01-31  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
17969             Jason Merrill  <jason@yorick.cygnus.com>
17970
17971         * tinfo.h: Rename USItype to myint32, depend on BITS_PER_UNIT.
17972
17973 2000-01-31  Alfred Minarik <a8601248@unet.univie.ac.at>
17974
17975         * exception.cc (__throw_bad_typeid): Add missing std::.
17976
17977 2000-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17978
17979         * cp-tree.h (make_thunk): PROTO -> PARAMS.
17980
17981 2000-01-31  Nathan Sidwell  <sidwell@codesourcery.com>
17982
17983         * cp-tree.h (new_abi_rtti_p): Use flag_new_abi.
17984
17985         Runtime support for new-abi rtti.
17986         * inc/typeinfo (type_info::operator!=): Define in class.
17987         (type_info::before, type_info::name, type_info::operator==,
17988         type_info::operator!=): Define new ABI implementations.
17989         (type_info::is_pointer_p, type_info::is_function_p): Declare
17990         new virtual functions.
17991         (type_info::do_catch, type_info::do_upcast): Likewise.
17992
17993         * tinfo.h (__base_class_info): Define new class.
17994         (__class_type_info): Likewise.
17995         (__si_class_type_info): Likewise.
17996         (__vmi_class_type_info): Likewise.
17997         (__dynamic_cast): Prototype.
17998
17999         * tinfo.cc: Conditionalize old and new rtti mechanisms.
18000         (type_info::is_pointer_p): Define new function.
18001         (type_info::is_function_p): Likewise.
18002         (type_info::do_catch): Likewise.
18003         (type_info::do_upcast): Likewise.
18004         (vtable_prefix): New structure for vtable access.
18005         (adjust_pointer): Define new template function.
18006         (contained_p, public_p, virtual_p, contained_public_p,
18007         contained_nonpublic_p, contained_nonvirtual_p): Define new
18008         functions.
18009         (nonvirtual_base_type): New local variable.
18010         (__class_type_info::~__class_type_info): Define.
18011         (__si_class_type_info::~__si_class_type_info): Likewise.
18012         (__vmi_class_type_info::~__vmi_class_type_info): Likewise.
18013         (__class_type_info::do_catch): Define new function.
18014         (__class_type_info::do_upcast): Likewise.
18015         (__class_type_info::find_public_src): Likewise.
18016         (__class_type_info::do_find_public_src): Likewise.
18017         (__si_class_type_info::do_find_public_src): Likewise.
18018         (__vmi_class_type_info::do_find_public_src): Likewise.
18019         (__class_type_info::do_dyncast): Likewise.
18020         (__si_class_type_info::do_dyncast): Likewise.
18021         (__vmi_class_type_info::do_dyncast): Likewise.
18022         (__class_type_info::do_upcast): Likewise.
18023         (__si_class_type_info::do_upcast): Likewise.
18024         (__vmi_class_type_info::do_upcast): Likewise.
18025         (__dynamic_cast): Likewise.
18026
18027         * tinfo2.cc (__fundamental_type_info): Define new class.
18028         (__pointer_type_info): Likewise.
18029         (__reference_type_info): Likewise.
18030         (__array_type_info): Likewise.
18031         (__function_type_info): Likewise.
18032         (__enum_type_info): Likewise.
18033         (__ptr_to_member_type_info): Likewise.
18034         (__fundamental_type_info::~__fundamental_type_info): Define.
18035         (__pointer_type_info::~__pointer_type_info): Likewise.
18036         (__reference_type_info::~__reference_type_info): Likewise.
18037         (__array_type_info::~__array_type_info): Likewise.
18038         (__function_type_info::~__function_type_info): Likewise.
18039         (__enum_type_info::~__enum_type_info): Likewise.
18040         (__ptr_to_member_type_info::~__ptr_to_member_type_info): Likewise.
18041         (__pointer_type_info::do_catch): Define new function.
18042         (__ptr_to_member_type_info::do_catch): Define new function.
18043
18044         (__throw_type_match_rtti_2): Use new ABI interface, if enabled.
18045         (__is_pointer): Likewise.
18046
18047         * exception.cc (__cplus_type_matcher): Deal with new-abi rtti.
18048
18049 2000-01-30  Mark Mitchell  <mark@codesourcery.com>
18050
18051         * cp/class.c (build_vtable): Rename to build_primary_vtable.
18052         (prepare_fresh_vtable): Rename to build_secondary_vtable.
18053         (make_new_vtable): New function.
18054         (modify_vtable_entry): Handle generation of new vtables correctly.
18055         (modify_one_vtable): Remove unused parameter.
18056         (dfs_fixup_vtable_deltas): Likewise.
18057         (override_one_vtable): Use build_secondary_vtable.
18058         (finish_struct_1): Use build_primary_vtable and
18059         build_secondary_vtable.
18060
18061 2000-01-28  Ulrich Drepper  <drepper@redhat.com>
18062
18063         * cp/decl.c: Adjust variable names, comments, help strings.
18064
18065 2000-01-29  Nathan Sidwell  <nathan@acm.org>
18066
18067         * new2.cc (operator delete[]): Use operator delete, don't assume
18068         implementation.
18069
18070 2000-01-29  Nathan Sidwell  <sidwell@codesourcery.com>
18071
18072         * class.c (build_vtbl_initializer): Add argument to
18073         build_vtable_entry call.
18074
18075 2000-01-27  Mark Mitchell  <mark@codesourcery.com>
18076
18077         * cp-tree.def (THUNK_DECL): Discuss vcall indices.
18078         * cp-tree.h (BINFO_VIRTUALS): Update documentation.
18079         (BF_DELTA): New macro.
18080         (BF_VCALL_INDEX): Likewise.
18081         (BF_FN): Likewise.
18082         (THUNK_VCALL_OFFSET): Likewise.
18083         (make_thunk): Change prototype.
18084         * class.c (build_vtable_entry): Integrate
18085         build_vtable_entry_for_fn.  Handle vcall indices.
18086         (build_vtable_entry_for_fn): Remove.
18087         (set_rtti_entry): Handle vcall indices.  Use BF_DELTA,
18088         BF_VCALL_INDEX, BF_FN.
18089         (modify_vtable_entry): Integrate common code from
18090         modify_one_vtable and dfs_fixup_vtable_deltas.
18091         (add_virtual_function): Set BF_VCALL_INDEX.
18092         (build_vtbl_initializer): Simplify.  Use BF_DELTA, BF_VCALL_INDEX,
18093         and BF_FN.
18094         (modify_one_vtable): Simplify.
18095         (dfs_fixup_vtable_deltas): Likewise.
18096         (override_one_vtable): Use BF_DELTA, BF_VCALL_INDEX, BF_FN.
18097         * method.c (make_thunk): Handle vcall indices.
18098
18099 2000-01-28  Nathan Sidwell  <sidwell@codesourcery.com>
18100
18101         Compiler side new abi rtti (not enabled).
18102         * cp-tree.h (new_abi_rtti_p): New macro.
18103         (emit_support_tinfos): Prototype new function.
18104         (tinfo_decl_p): Likewise.
18105         (emit_tinfo_decl): Likwise.
18106         * rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL): New accessor
18107         macros.
18108         (doing_runtime): New local static.
18109         (init_rtti_processing): Add new-abi initializer.
18110         (get_tinfo_decl): Add new-abi logic.
18111         (tinfo_from_decl): Likewise.
18112         (build_dynamic_cast_1): Likewise.
18113         (qualifier_flags): New static function.
18114         (tinfo_base_init): Likewise.
18115         (generic_initializer): Likewise.
18116         (ptr_ref_initializer): Likewise.
18117         (ptmd_initializer): Likewise.
18118         (class_hint_flags): Likewise.
18119         (class_initializer): Likewise.
18120         (synthesize_tinfo_var): Likewise.
18121         (create_real_tinfo_var): Likewise.
18122         (create_pseudo_type_info): Likewise.
18123         (get_vmi_pseudo_type_info): Likewise.
18124         (create_tinfo_types): Likewise.
18125         (emit_support_tinfos): New global function.
18126         (tinfo_decl_p): New global predicate.
18127         (emit_tinfo_decl): New global function.
18128         * class.c (set_rtti_entry): Generalize for old and new rtti.
18129         (build_vtbl_initializer): Likewise.
18130         * decl2.c (finish_file): Likewise.
18131
18132 2000-01-27  Jim Wilson  <wilson@cygnus.com>
18133
18134         * optimize.c (remap_decl): Add walk_tree calls for DECL_SIZE (t)
18135         and TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (t))).
18136
18137 2000-01-27  Mike Stump  <mrs@wrs.com>
18138
18139         * decl.c (pushdecl): Fix up shadow warnings with respect to implicit
18140         for scopes.
18141
18142 2000-01-26  Jason Merrill  <jason@casey.cygnus.com>
18143
18144         * pt.c (unify): Use fold, not maybe_fold_nontype_arg.
18145
18146 2000-01-26  J"orn Rennecke <amylaar@cygnus.co.uk>
18147
18148         * optimize.c (calls_setjmp_r): Supply new argument
18149         to special_function_p.
18150
18151 2000-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18152
18153         * call.c: PROTO -> PARAMS.
18154         * class.c: Likewise.
18155         * cp-tree.h: Likewise.
18156         * cvt.c: Likewise.
18157         * decl.c: Likewise.
18158         * decl.h: Likewise.
18159         * decl2.c: Likewise.
18160         * dump.c: Likewise.
18161         * errfn.c: Likewise.
18162         * error.c: Likewise.
18163         * except.c: Likewise.
18164         * expr.c: Likewise.
18165         * init.c: Likewise.
18166         * input.c: Likewise.
18167         * lex.c: Likewise.
18168         * lex.h: Likewise.
18169         * method.c: Likewise.
18170         * optimize.c: Likewise.
18171         * parse.y: Likewise.
18172         * pt.c: Likewise.
18173         * repo.c: Likewise.
18174         * rtti.c: Likewise.
18175         * search.c: Likewise.
18176         * semantics.c: Likewise.
18177         * spew.c: Likewise.
18178         * tree.c: Likewise.
18179         * typeck.c: Likewise.
18180         * typeck2.c: Likewise.
18181         * xref.c: Likewise.
18182
18183 2000-01-25  Richard Henderson  <rth@cygnus.com>
18184
18185         * typeck.c (build_binary_op_nodefault): Remove UNNE_EXPR.
18186
18187 2000-01-25  Mark Mitchell  <mark@codesourcery.com>
18188
18189         * cp-tree.h (vcall_offset_in_vtable_p): New macro.
18190         * class.c (build_vbase_offset_vtbl_entries): Fix typo in commment.
18191         (struct vcall_offset_data_s): New type.
18192         (dfs_vcall_offset_queue_p): New function.
18193         (dfs_build_vcall_offset_vtbl_entries): Likewise.
18194         (build_vcall_offset_vtbl_entries): Likewise.
18195         (layout_vtable_decl): Likewise.
18196         (num_vfun_entries): Likewise.
18197         (num_extra_vtbl_entries): Add the entries for vcall offsets.
18198         (build_vtbl_initializer): Likewise.
18199         (dfs_finish_vtabls): Use layout_vtable_decl.
18200         (modify_one_vtables): Always duplicate vtables under the new ABI.
18201         (finish_struct_1): Use layout_vtable_decl.
18202
18203 2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18204
18205         * decl.c (member_function_or_else): Change third arg from a format
18206         specifier to an `enum overload_flags'.  Callers changed.
18207
18208 2000-01-25  Gabriel Dos Reis  <gdr@codesourcery.com>
18209
18210         * typeck.c (composite_pointer_type, c_sizeof, expr_sizeof,
18211         build_binary_op_nodefault, build_unary_op, build_reinterpret_cast,
18212         build_const_cast, get_delta_difference, check_return_expr): Avoid
18213         ANSI string concatenation usage.
18214
18215 2000-01-24  Mark Mitchell  <mark@codesourcery.com>
18216
18217         * class.c (layout_class_type): Put the fields required to make a
18218         class non-empty at the end, not the beginning, of the TYPE_FIELDs
18219         list.
18220
18221 2000-01-24  Jason Merrill  <jason@casey.cygnus.com>
18222
18223         * pt.c (maybe_fold_nontype_arg): Do nothing if we're not in a
18224         template.
18225
18226         * decl2.c (mark_used): Do instantiate inlines that have been
18227         explicitly instantiated.
18228
18229 2000-01-24  Richard Henderson  <rth@cygnus.com>
18230
18231         * call.c (build_over_call): Use expand_tree_builtin.
18232         * typeck.c (build_function_call_real): Likewise.
18233         (build_binary_op_nodefault): Handle unordered compares.
18234
18235 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
18236
18237         * cp-tree.h (CPTI_BAD_CAST, CPTI_BAD_TYPEID, CPTI_DCAST): New
18238         cp_tree_index values.
18239         (throw_bad_cast_node, throw_bad_typeid_node, dynamic_cast_node):
18240         New global node #defines for them.
18241         * rtti.c (call_void_fn): Replace with ...
18242         (build_runtime_decl): ... new static function.
18243         (throw_bad_cast): Use throw_bad_cast_node and build_runtime_decl.
18244         (throw_bad_typeid): Use throw_bad_typeid_node and build_runtime_decl.
18245         (build_dynamic_cast_1): Always produce correctly typed result.
18246         Explicitly produce type_info addresses. Use dynamic_cast_node.
18247         * exception.cc (__throw_bad_cast): Return `void *'.
18248         (__throw_bad_typeid): Return `const type_info &'.
18249
18250 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
18251
18252         * cp-tree.h (get_vtable_decl): Prototype new function.
18253         * class.c (get_vtable_decl): New function. Broken out from ...
18254         (build_vtable): ... here. Use it.
18255         * decl2.c (finish_vtable_vardecl): Ignore dummy vtables created
18256         by get_vtable_decl.
18257
18258 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
18259
18260         * cp-tree.h (CPTI_TP_DESC_TYPE, CPTI_ACCESS_MODE_TYPE,
18261         CPTI_USER_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_ATTR_DESC_TYPE,
18262         CPTI_PTMF_DESC_TYPE): Remove cp_tree_index enumerations.
18263         (CPTI_TI_DESC_TYPE, CPTI_REF_DESC_TYPE, CPTI_ARY_DESC_TYPE,
18264         CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_SI_CLASS_DESC_TYPE,
18265         CPTI_VMI_CLASS_DESC_TYPE, CPTI_BASE_DESC_TYPE): New enumerations.
18266         (CPTI_TINFO_FN_ID, CPTI_TINFO_FN_TYPE): Rename to ...
18267         (CPTI_TINFO_DECL_ID, CPTI_TINFO_DECL_TYPE): ... here.
18268         (CPTI_TINFO_VAR_ID): New enumeration.
18269         (__tp_desc_type_node, __access_mode_type_node,
18270         __bltn_desc_type_node, __user_desc_type_node,
18271         __class_desc_type_node, __ptr_desc_type_node,
18272         __attr_desc_type_node, __func_desc_type_node,
18273         __ptmf_desc_type_node, __ptmd_desc_type_node): Remove #defines.
18274         (ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
18275         ref_desc_type_node, ary_desc_type_node, func_desc_type_node,
18276         enum_desc_type_node, class_desc_type_node,
18277         si_class_desc_type_node, vmi_class_desc_type_node,
18278         ptmd_desc_type_node, base_desc_type_node): New #defines.
18279         (tinfo_fn_id, tinfo_fn_type): Rename to ...
18280         (tinfo_decl_id, tinfo_decl_type): ... here. Adjust.
18281         (tinfo_var_id): New enumeration.
18282         (DECL_TINFO_FN_P): Augment comment.
18283         * decl.c (cp_global_trees): Adjust documentation.
18284         * rtti.c (init_rtti_processing): Adjust for tinfo_decl_id,
18285         tinfo_decl_type and tinfo_var_id.
18286         (get_tinfo_decl_dynamic): Adjust for tinfo_decl_type.
18287         (build_typeid): Remove unused variable.
18288         (get_tinfo_var): Use tinfo_var_id.
18289         (tinfo_name): New static function.
18290         (get_tinfo_decl): Adjust for tinfo_decl_id and tinfo_decl_type.
18291         (tinfo_from_decl): Likewise.
18292         (get_base_offset): New static function, broken out of
18293         expand_class_desc.
18294         (expand_si_desc): Use tinfo_name.
18295         (expand_class_desc): Likewise. Lose local static variable.
18296         Use base_desc_type_node. Use get_base_offset.
18297         (expand_ptr_desc): Use tinfo_name.
18298         (expand_attr_desc): Likewise.
18299         (expand_generic_desc): Likewise.
18300
18301         * tinfo.cc (__GXX_ABI_VERSION): Test value and existence.
18302         * tinfo.h (__GXX_ABI_VERSION): Test value and existence.
18303
18304 2000-01-23  Mark Mitchell  <mark@codesourcery.com>
18305
18306         * cp-tree.h (__eprintf): Remove declaration.
18307         * tree.c (__eprintf): Remove definition.
18308
18309 2000-01-23  Zack Weinberg  <zack@rabi.columbia.edu>
18310             Mark Mitchell  <mark@codesourcery.com>
18311
18312         * cp-tree.h (CLASSTYPE_MARKED_N, SET_CLASSTYPE_MARKED_N,
18313         CLEAR_CLASSTYPE_MARKED_N): Avoid signed vs. unsigned warnings.
18314
18315 2000-01-23  Brad Lucier  <lucier@math.purdue.edu>
18316
18317         * class.c (dump_class_hierarchy): Print HOST_WIDE_INT properly.
18318
18319 2000-01-23  Mark Mitchell  <mark@codesourcery.com>
18320
18321         * cp-tree.h (register_dtor_fn): New function.
18322         * decl.c (destroy_local_static): Rename to ...
18323         (register_dtor_fn): ... this.  Give it external linkage.
18324         (expand_static_init): Use it.
18325         * decl2.c (do_static_initialization): Likewise, if using
18326         __cxa_atexit.
18327         (do_static_destruction): Check that __cxa_atexit is not in use.
18328         (finish_file): Don't call do_static_destruction if using
18329         __cxa_atexit.
18330
18331         * typeck.c (convert_arguments): Restore two-message error
18332         reporting.
18333
18334 2000-01-20  Nathan Sidwell  <sidwell@codesourcery.com>
18335
18336         Remap dynamic cast hint values to be consistent across ABIs.
18337         * search.c (dynamic_cast_base_recurse): Remap generated value.
18338         (get_dynamic_cast_base_type): Adjust documentation.
18339         * tinfo.h (__user_type_info::dyncast): Likewise.
18340         (__user_type_info::find_public_subobj): Remap BOFF meaning.
18341         * tinfo.cc (__si_type_info::do_dyncast): Remap BOFF meaning.
18342         (__class_type_info::do_dyncast): Likewise.
18343         (__class_type_info::do_find_public_subobj): Likewise.
18344         * tinfo2.cc (__dynamic_cast): Remap BOFF parameter.
18345
18346 2000-01-19  Gabriel Dos Reis  <gdr@codesourcery.com>
18347
18348         * typeck.c (build_unary_op): Use cp_pedwarn, not pedwarn.
18349
18350         * typeck2.c (incomplete_type_error): Restore previous
18351         cp_error and cp_error_at call sequence.
18352
18353 2000-01-20  Brad Lucier  <lucier@math.purdue.edu>
18354
18355         * class.c (dump_class_hierarchy): Make format agree with argument;
18356         cast pointer to unsigned long and print with %lx.
18357
18358 2000-01-19  Gabriel Dos Reis  <gdr@codesourcery.com>
18359
18360         * decl2.c (lang_decode_option): Set default line-wrap length to 72.
18361
18362         * typeck.c (composite_pointer_type, common_type,
18363         comp_target_parms, c_sizeof, expr_sizeof, build_array_ref,
18364         build_function_call_real, convert_arguments,
18365         build_binary_op_nodefault, pointer_int_sum, pointer_diff,
18366         build_unary_op, mark_addressable, build_compound_expr,
18367         build_static_cast, build_reinterpret_cast, build_const_cast,
18368         build_c_cast, build_modify_expr, get_delta_difference,
18369         build_ptrmemfunc, check_return_expr): Replace 'ANSI C++' with
18370         'ISO C++'.  Fusion consecutive calls to diagnostic message routines
18371         into a single one.
18372         * typeck2.c (readonly_error, abstract_virtuals_error,
18373         process_init_constructor, check_for_new_type): Likewise.
18374
18375 2000-01-19  Mark Mitchell  <mark@codesourcery.com>
18376
18377         * tree.c (bot_manip): Set DECL_CONTEXT for newly created
18378         VAR_DECLs.
18379
18380 2000-01-18  Nathan Sidwell  <sidwell@codesourcery.com>
18381
18382         * cp-tree.h (get_tinfo_fn_dynamic): Remove prototype.
18383         (build_x_typeid): Likewise.
18384         (get_tinfo_fn): Likewise.
18385         (get_tinfo_fn_unused): Rename to ...
18386         (get_tinfo_decl): ... here.
18387         * rtti.c (build_headof): Replace logic error with assertion.
18388         (get_tinfo_fn_dynamic): Rename to ...
18389         (get_tinfo_decl_dynamic): ... here. Make static. Use
18390         complete_type_or_else.
18391         (build_x_typeid): Move into ...
18392         (build_typeid): ... here. Adjust call to
18393         get_tinfo_decl_dynamic. Use tinfo_from_decl. Simplify
18394         throw_bad_typeid expression.
18395         (get_tinfo_fn_unused): Rename to ...
18396         (get_tinfo_decl): ... here. Adjust comment.
18397         (get_tinfo_fn): Delete.
18398         (tinfo_from_decl): New static function.
18399         (get_typeid_1): Call get_tinfo_decl and tinfo_from_decl.
18400         (get_typeid): Use complete_type_or_else.
18401         (build_dynamic_cast_1): Adjust calls to
18402         get_tinfo_decl_dynamic. Simplify throw_bad_cast expression.
18403         * parse.y (primary): Adjust call to build_typeid.
18404         * except.c (build_eh_type_type_ref): Adjust call to
18405         get_tinfo_decl. Mark as used.
18406         * class.c (set_rtti_entry): Adjust call to get_tinfo_decl.
18407         * decl2.c (build_expr_from_tree): Adjust call to build_typeid.
18408         * parse.c: Regenerated.
18409
18410 2000-01-17  Mark Mitchell  <mark@codesourcery.com>
18411
18412         * class.c (fixed_type_or_null): Don't clear NONNULL.  Document
18413         calling convention.
18414         (resolves_to_fixed_type_p): Document calling convention.
18415         * rtti.c (build_x_typeid): Initialize NONNULL.
18416
18417         * cp-tree.h (build_shared_int_cst): New function.
18418         * call.c (build_over_call): Use DECL_VIRTUAL_CONTEXT, for clarity.
18419         * class.c (modify_vtable_entry): Likewise.
18420         (add_virtual_function): Split out code to generated shared
18421         INTEGER_CSTs to build_share_int_cst.
18422         (modify_all_vtables): Handle all the overridden functions here.
18423         Add overridden functions from non-primary virtual bases to the
18424         primary vtable.
18425         (finish_struct_1): Adjust call to modify_all_vtables.  Add
18426         overridden functions from non-primary bases to the vtable.
18427         * tree.c (build_shared_int_cst): New function.
18428
18429         * cp-tree.h (scratchalloc): Remove.
18430         (build_scratch_list): Likewise.
18431         * call.c (convert_class_to_reference): Replace build_scratch_list
18432         and build_expr_list with build_tree_list.
18433         (add_candidate): Replace scratchalloc with expralloc.  Note memory
18434         leak.
18435         (build_user_type_conversion_1):  Replace build_scratch_list
18436         and build_expr_list with build_tree_list.
18437         (build_new_op): Likewise.
18438         (build_op_delete_call): Likewise.
18439         (convert_like): Likewise.
18440         * cvt.c (ocp_convert): Likewise.
18441         * decl.c (start_decl): Likewise.
18442         (start_function): Likewise.
18443         (finish_destructor_body): Likewise.
18444         (maybe_build_cleanup_1): Likewise.
18445         * decl2.c (reparse_decl_as_expr): Likewise.
18446         * init.c (perform_member_init): Likewise.
18447         (expand_cleanup_for_base): Likewise.
18448         (build_builtin_delete_call): Likewise.
18449         (build_new_1): Likewise.
18450         (build_delete): Likewise.
18451         * method.c (do_build_assign_ref): Likewise.
18452         * parse.y (already_scoped_stmt): Likewise.
18453         (nontrivial_exprlist): Likewise.
18454         (net_initializer): Likewise.
18455         (initlist): Likewise.
18456         * parse.c: Regenerated.
18457         * rtti.c (build_x_typeid): Likewise.
18458         (build_dynamic_cast_1): Likewise.
18459         * typeck.c (build_x_compound_expr): Likewise.
18460         (build_static_cast): Likewise.
18461         (build_modify_expr): Likewise.
18462
18463         * cp-tree.h (DECL_VINDEX): Add documentation.
18464         * class.c (build_vtable_entry): Likewise.
18465         (start_vtable): Add comment.
18466         (add_virtual_function): Replace pending_hard_virtuals with
18467         overridden_virtuals and pending_virtuals with new_virtuals.
18468         Replace redundant assignments with assertions.
18469         (check_for_override): Add comment.
18470         (check_bases_and_members): Replace pending_hard_virtuals with
18471         overridden_virtuals and pending_virtuals with new_virtuals.
18472         (create_vtbl_ptr): Likewise.
18473         (layout_class_type): Likewise.
18474         (finish_struct_1): Likewise.  Add comments.
18475
18476 2000-01-16  Mark Mitchell  <mark@codesourcery.com>
18477
18478         * class.c (finish_struct_1): Replace redundant code with
18479         assertions.
18480
18481         * cp-tree.h (flag_new_abi): Move.
18482         (flag_use_cxa_atexit): Likewise.
18483         (flag_honor_std): Likewise.
18484         (flag_rtti): Likewise.
18485         (vbase_offsets_in_vtable_p): Define.
18486         (vptrs_present_everywhere_p): Likewise.
18487         (TYPE_CONTAINS_VPTR_P): Likewise.
18488         (dfs_walk_real): Declare.
18489         * class.c (build_vbase_pointer_fields): Check
18490         vbase_offsets_in_vtable_p.
18491         (dfs_build_vbase_offset_vtbl_entries): Record the vbase indices in
18492         BINFO_VPTR_FIELD.
18493         (build_vbase_offset_vtbl_entries): Simplify.
18494         (build_vbase_offset_vtbl_entries): Adjust.
18495         (build_vbase_pointer): Add ability to look up vbase offsets in
18496         vtable.
18497         (start_vtable): New function.
18498         (add_virtual_function): Use it.
18499         (determine_primary_base): Use TYPE_CONTAINS_VPTR_P.
18500         (num_extra_vtbl_entries): Use vbase_offsets_in_vtable_p.
18501         (build_vtbl_initializer): Take the type of the complete object as
18502         input.  Use it to correctly calculate vbase offsets.
18503         (dfs_finish_vtbls): Pass the complete type to
18504         build_vtbl_initializer.
18505         (check_bases_and_members): Use TYPE_CONTAINS_VPTR_P.
18506         (create_vtable_ptr): Create a vtable even if there are no
18507         new virtual functions, under the new ABI.
18508         (finish_struct_1): Likewise.
18509         (get_vfield_name): Use TYPE_CONTAINS_VPTR_P.
18510         * decl.c (exapnd_static_init): Remove call to
18511         preserve_initializer.
18512         * decl2.c (mark_vtable_entries): Tweak to handle vbase offsets in
18513         vtables.
18514         * init.c (initialize_vtbl_ptrs): Initialize them in pre-order.
18515         (expand_virtual_init): Use vbase_offsets_in_vtable_p.
18516         (construct_virtual_bases): Don't initialize virtual base pointers
18517         under the new ABI.
18518         (build_aggr_init): Clean up comment.
18519         (expand_aggr_init_1): Likewise.
18520         * rtti.c (expand_class_desc): Store the virtual function table
18521         index where the vbase offset lives in the offset field.
18522         * search.c (dfs_walk_real): Make it global.
18523         (dfs_debug_mark): Use TYPE_CONTAINS_VPTR_P.
18524         * tree.c (make_binfo): Don't clear BINFO_VPTR_FIELD.
18525
18526         * tinfo.h (USItype): Make it signed under the new ABI.
18527         * tinfo.cc (convert_to_base): New function.  Encapsulate base
18528         conversion logic here.
18529         (__class_type_info::do_upcast): Use it.
18530         (__class_type_info::do_dyncast): Likewise.
18531         (__class_type_info::do_find_public_subobj): Likewise.
18532
18533         * init.c (construct_virtual_bases): Don't look up the addresses of
18534         virtual bases at run-time.
18535
18536         * class.c (build_vbase_pointer): Relocate.
18537         (build_vbase_pointer_fields): Likewise.
18538         (dfs_build_vbase_offset_vtbl_entries): Likewise.
18539         (build_vbase_offset_vtbl_entries): Likewise.
18540
18541         * decl.c (init_decl_processing): Complain if -fnew-abi
18542         -fno-vtable-thunks is used.
18543
18544         * decl2.c (lang_decode_option): Don't couple flag_honor_std to
18545         flag_new_abi.
18546
18547 2000-01-15  Mark Mitchell  <mark@codesourcery.com>
18548
18549         * cp-tree.h (num_extra_vtbl_entries): New function.
18550         (size_extra_vtbl_entries): Likewise.
18551         (dfs_vtable_path_unmark): Likewise.
18552         (dfs_vtable_path_unmarked_real_bases_queue_p): Likewise.
18553         (dfs_vtable_path_marked_real_bases_queue_p): Likewise.
18554         * class.c (num_extra_vtbl_entries): New function.
18555         (size_extra_vtbl_entries): Likewise.
18556         (dfs_build_vbase_offset_vtbl_entries): New function.
18557         (build_vbase_offset_vtbl_entries): Likewise.
18558         (build_vtbl_initializer): Use it.
18559         (finish_struct_1): Adjust vtable sizes (using
18560         num_extra_vtbl_entries).
18561         * expr.c (cplus_expand_expr): Assert that the DECL_RTL for a
18562         THUNK_DECL is non-NULL before expanding it.
18563         * init.c (expand_virtual_init): Adjust the vtable pointer by
18564         size_extra_vtbl_entries before storing it.
18565         * search.c (get_shared_vase_if_not_primary): Adjust prototype.
18566         Handle TREE_LIST parameters here, not in the dfs_* functions.
18567         (dfs_unmarked_real_bases_queue_p): Adjust.
18568         (dfs_marked_real_bases_queue_p): Likewise.
18569         (dfs_vtable_path_unmarked_real_bases_queue_p): New function.
18570         (dfs_vtable_path_marked_real_bases_queue_p): New function.
18571         (dfs_vtable_path_unmark): Likewise.
18572
18573 2000-01-14  Mark Mitchell  <mark@codesourcery.com>
18574
18575         * optimize.c (copy_body_r): Clear the operand three of a
18576         TARGET_EXPR when copying it.
18577
18578 2000-01-14  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
18579
18580         * method.c (build_decl_overload_real): Check whether we are in ::
18581         before returning __builtin_new/delete.
18582
18583 2000-01-13  Mark Mitchell  <mark@codesourcery.com>
18584
18585         * pt.c (tsubst_friend_function): Improve comment.
18586         (instantiate_decl): Avoid crashing when a "nested" function is
18587         instantiated from the top level.
18588
18589         * dump.c (dqeueue_and_dump): Dump
18590         DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION.
18591
18592 2000-01-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18593
18594         * call.c: If GATHER_STATISTICS, declare `n_build_method_call'.
18595
18596 2000-01-13  Nathan Sidwell  <sidwell@codesourcery.com>
18597
18598         * g++spec.c (lang_specific_driver): Add -fnew-abi if
18599         ENABLE_NEW_GXX_ABI defined.
18600         * Make-lang.in (tinfo.o, tinfo2.o, exception.o, new.o,
18601         opnew.o, opnewnt.o, opvnew.o, opvnewnt.o, opdel.o, opdelnt.o,
18602         opvdel.o, opvdelnt.o): Use GXX_ABI_FLAG switch.
18603
18604 2000-01-12  Mark Mitchell  <mark@codesourcery.com>
18605
18606         * decl.c (start_cleanup_fn): Call pushdecl.
18607
18608         * call.c (convert_class_to_reference): Fix typos.
18609         (build_conditional_expr): Handle errors gracefully.
18610         * class.c (push_nested_class): Likewise.
18611         * cp-tree.h (VAR_FUNCTION_OR_PARM_DECL_CHECK): New macro.
18612         (DECL_THIS_EXTERN): Use it.
18613         (DECL_THIS_STATIC): Likewise.
18614         * cvt.c (convert_to_void): Handle errors gracefully.
18615         (build_expr_type_conversion): Likewise.
18616         * decl.c (maybe_push_decl): Likewise.
18617         (start_decl_1): Likewise.
18618         (require_complete_types_for_parms): Likewise.
18619         * parse.y (structsp): Likewise.
18620         (base_class): Likewise.
18621         * parse.c: Regenerated.
18622         * pt.c (finish_member_template_decl): Likewise.
18623         * typeck.c (decay_conversion): Likewise.
18624
18625         * cp-tree.h (dfs_skip_vbases): New function.
18626         (find_vbase_instance): Likewise.
18627         * class.c (determine_primary_base): Allow a nearly empty base to
18628         serve as a primary base class under the new ABI.
18629         (get_class_offset_1): Rename to ...
18630         (dfs_get_class_offset): ... this.  Simplify.  Don't issue error
18631         messages here.
18632         (get_class_offset): Use it.  Issue error messages here.
18633         (dfs_modify_vtables): Rely on dfs_unmarked_real_bases_queue_p to
18634         find the right copies of virtual bases.
18635         (fixup_vtable_deltas1): Rename to ...
18636         (dfs_fixup_vtable_deltas): ... this.  Adjust to handle virtual
18637         bases as primary bases.
18638         (fixup_vtable_deltas): Remove.
18639         (override_one_vtable): Handle virtual bases as primary bases.
18640         (merge_overrides): Likewise.
18641         (finish_struct_1): Likewise.
18642         (dump_class_hierarchy): Dump primary-ness of bases as well.
18643         * search.c (mark_primary_bases): Use a pre-order traversal to
18644         handle primary virtual bases.
18645         (dfs_skip_vbases): New fiunction.
18646         (expand_upcast_fixups): Adjust to handle primary virtual bases.
18647         (fixup_virtual_upcast_offsets): Likewise.
18648         (fixup_all_virtual_upcast_offsets): Likewise.
18649         (dfs_find_vbase_instances): New function.
18650         (find_vbase_instance): Likewise.
18651
18652 2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>
18653
18654         * lex.c (DIR_SEPARATOR): Delete macro.
18655
18656 2000-01-12  Gabriel Dos Reis  <gdr@codesourcery.com>
18657
18658        * decl2.c (lang_decode_option): Handle automatic line wrapping
18659        option.
18660
18661 2000-01-11  Mark Mitchell  <mark@codesourcery.com>
18662
18663         * friend.c (do_friend): Don't resolve scopes when processing
18664         template declarations, even if the qualifying scope doesn't
18665         involve template parameters.
18666
18667 2000-01-10  Mark Mitchell  <mitchell@dumbledore.codesourcery.com>
18668
18669         * class.c (dfs_modify_vtables_queue_p): Remove.
18670         (modify_all_vtables): Use dfs_unmarked_real_bases_queue_p
18671         and dfs_marked_real_bases_queue_p instead of
18672         dfs_modify_vtables_queue_p.
18673
18674         * class.c (build_vbase_path): Simplify.
18675         (dfs_propagate_binfo_offsets): New function.
18676         (propagate_binfo_offsets): Use it.
18677         (remove_base_field): Simplify.
18678         (dfs_set_offset_for_vbases): Remove.
18679         (dfs_set_offset_for_shared_vbases): New function.
18680         (dfs_set_offset_for_unshared_vbases): Likewise.
18681         (layout_virtual_bases): Use them.
18682         (layout_basetypes): Don't call propagate_binfo_offsets.
18683         * search.c (dfs_get_vbase_types): Clone completely fresh binfos
18684         for the vbases.
18685
18686         * class.c (build_base_field): New function, split out from ...
18687         (build_base_fields): ... here.  Use it.  Allocate primary bases
18688         first, under the new ABI.
18689         (get_vtable_entry): Remove.
18690         (remove_base_field): New function, split out from ...
18691         (remove_base_fields): ... here.  Adjust since primary bases come
18692         first under the new ABI.
18693
18694         * cp-tree.h (expand_direct_vtbls_init): Remove declaration.
18695         (initialize_vtbl_ptrs): New function.
18696         (expand_indirect_vtbls_init): Change prototype.
18697         (convert_pointer_to_vbase): Declare.
18698         * init.c (expand_direct_vtbls_init): Remove.
18699         (dfs_initialize_vtbl_ptrs): New function.
18700         (initialize_vtbl_ptrs): Likewise.
18701         (emit_base_init): Use initialize_vtbl_ptrs.
18702         * search.c (convert_pointer_to_vbase): Make it global.
18703         (expand_indirect_vtbls_init): Remove vtable initialization code.
18704         * semantics.c (setup_vtbl_ptr): Use initialize_vtbl_ptrs.
18705
18706         * class.c (dfs_finish_vtbls): New function.
18707         (finish_vtbls): Use it.
18708         (dump_class_hierarchy): New function.
18709
18710         * cp-tree.h (BINFO_PRIMARY_MARKED_P): Change definition.
18711         (BINFO_VBASE_PRIMARY_P): New macro.
18712         (BINFO_VIRTUALS): Add to documentation.
18713         (SET_BINFO_PRIMARY_MARKED_P): Remove.
18714         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
18715         (dfs_mark_primary_bases_queue_p): Likewise.
18716         (dfs_unmarked_real_bases_queue_p): New function.
18717         (dfs_marked_real_bases_queue_p): Likewise.
18718         * search.c (dfs_mark_primary_bases): Adjust.
18719         (mark_primary_bases): Likewise.
18720         (get_shared_vbase_if_not_primary): New function.
18721         (dfs_unmarked_real_bases_queue_p): Likewise.
18722         (dfs_marked_real_bases_queue_p): Likewise.
18723         (dfs_get_pure_virtuals): Simplify.
18724         (get_pure_virtuals): Likewise.
18725
18726 2000-01-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18727
18728         * lex.c: Include tm_p.h.
18729
18730 2000-01-07  Nathan Sidwell  <sidwell@codesourcery.com>
18731
18732         * lang-specs.h (__GXX_ABI_VERSION): New preprocessor macro.
18733
18734 2000-01-06  Jason Merrill  <jason@casey.cygnus.com>
18735
18736         * decl2.c (comdat_linkage): Don't set DECL_DEFER_OUTPUT.
18737         * pt.c (instantiate_decl): Defer comdat templates that might not be
18738         needed.
18739
18740         * cp-tree.h (DECL_NEEDED_P): Also true if !DECL_COMDAT.
18741         * decl2.c (finish_vtable_vardecl): Don't check !DECL_COMDAT.
18742         (finish_file): Likewise.
18743
18744         * decl2.c (import_export_class): Undo 12/14 change.
18745
18746         * error.c (dump_decl): operator new, not operatornew.
18747
18748         * class.c (field_decl_cmp): A nontype is "greater" than a type.
18749         * search.c (lookup_field_1): Look for the last field with the
18750         desired name.
18751
18752 2000-01-05  Nathan Sidwell  <nathan@acm.org>
18753
18754         * decl2.c (lookup_arg_dependent): Deal with FNS not being a
18755         FUNCTION_DECL.
18756
18757 2000-01-05  Nathan Sidwell  <nathan@acm.org>
18758
18759         * typeck.c (build_static_cast): Don't strip target qualifiers
18760         when casting from a class.
18761
18762 2000-01-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18763
18764         * class.c (warn_hidden): Initialize variable `fndecl'.
18765
18766 2000-01-03  Ulrich Drepper  <drepper@cygnus.com>
18767
18768         * decl.c (flag_isoc9x): New variable to be able to use code in
18769         c-common.c.  For now always zero.
18770
18771 2000-01-03  Mark Mitchell  <mark@codesourcery.com>
18772
18773         * cp-tree.h (CLASSTYPE_VBASECLASSES): Improve documentation.
18774         * class.c (layout_basetypes): Don't set BINFO_INHERITANCE_CHAIN
18775         or unshare_base_binfos for virtual bases here.
18776         * search.c (dfs_get_vbase_types): Do it here.
18777         (get_vbase_types): Adjust.
18778
18779 2000-01-02  Mark Mitchell  <mark@codesourcery.com>
18780
18781         * cp-tree.h (CLASSTYPE_VFIELDS): Move definition.
18782         (BINFO_PRIMARY_MARKED_P): Use flag 5.
18783         (SET_BINFO_PRIMARY_MARKED_P): Likewise.
18784         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
18785         (unmark_primary_bases): Remove declaration.
18786         (unmarkedp): Declare.
18787         (dfs_vbase_unmark): Likewise.
18788         * class.c (determine_primary_base): Return immediately if there
18789         are no base classes.  Call mark_primary_bases here.
18790         (modify_all_direct_vtables): Remove.
18791         (modify_all_indirect_vtables): Remove.
18792         (dfs_modify_vtables_queue_p): New function.
18793         (dfs_modify_vtables): New function.
18794         (modify_all_vtables): Use them.
18795         (build_base_fields): Build FIELD_DECLs for primary virtual base
18796         classes.
18797         (create_vtable_ptr): Don't call determine_primary_base here.
18798         (dfs_mark_primary_bases_and_set_vbase_offsets): Rename to ...
18799         (dfs_set_offset_for_vbases): ... this.
18800         (layout_virtual_bases): Use it.
18801         (layout_class_type): Call determine_primary_base here.
18802         * search.c (unmarkedp): Make it global.
18803         (shared_marked_p): Simplify.
18804         (shared_unmarked_p): Likewise.
18805         (dfs_primary_bases_queue_p): Remove.
18806         (dfs_unmark_primary_bases): Likewise.
18807         (unmark_primary_bases): Likewise.
18808         (mark_primary_bases): Simplify.
18809         (get_pure_virtuals): Don't call mark_primary_bases here.
18810         (dfs_vbase_unmark): New function.
18811         (get_vbase_types): Simplify.
18812
18813         * class.c (struct base_info): Remove.
18814         (determine_primary_base): Take has_virtual_p rather than a
18815         base_info as input.  Don't calculate max_has_virtual.
18816         (finish_struct_bits): Remove max_has_virtual argument.
18817         (create_vtable_ptr): Remove max_has_virtual_p argument.
18818         (layout_virtual_bases): Remove max argument.
18819         (layout_basetypes): Likewise.
18820         (layout_class_type): Remove max_has_virtual_p argument.
18821         (finish_struct_1): Remove max_has_virtual.
18822
18823         * cp-tree.h (dfs_mark_primary_bases_queue_p): New function.
18824         (layout_basetypes): Remove.
18825         * class.c (propagate_binfo_offsets): Moved here from tree.c.
18826         Update to handle primary virtual bases.
18827         (remove_base_fields): New function, split out from
18828         layout_basetypes.
18829         (dfs_mark_primary_bases_and_set_vbase_offsets): New function.
18830         (layout_virtual_bases): New function, split out from
18831         layout_basetypes.  Update to handle primary virtual bases.
18832         (layout_basetypes): Moved here from tree.c.  Use
18833         remove_base_fields and layout_virtual_bases.
18834         * search.c (dfs_mark_primary_bases_queue_p): New function.
18835         (mark_primary_bases): Use it.
18836         * tree.c (CEIL): Remove.
18837         (propagate_binfo_offsets): Remove.
18838         (layout_basetypes): Remove.
18839
18840 2000-01-01  Mark Mitchell  <mark@codesourcery.com>
18841
18842         * cp-tree.h (CLASSTYPE_N_BASECLASSES): Use BINFO_N_BASETYPES.
18843         (BINFO_PRIMARY_MARKED_P): New macro.
18844         (SET_BINFO_PRIMARY_MARKED_P): Likewise.
18845         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
18846         (mark_primary_bases): New function.
18847         (unmark_primary_bases): Likewise.
18848         * search.c (get_abstract_virtuals_1): Remove.
18849         (dfs_mark_primary_bases): New function.
18850         (mark_primary_bases): Likewise.
18851         (dfs_unmark_primary_bases): Likewise.
18852         (unmark_primary_bases): Likewise.
18853         (dfs_get_pure_virtuals): Likewise.
18854
18855 2000-01-01  Mark Mitchell  <mark@codesourcery.com>
18856
18857         * cp-tree.h (skip_rtti_stuff): Adjust prototype.
18858         * class.c (skip_rtti_stuff): Reorganize parameters and return value.
18859         (modify_one_vtable): Adjust.
18860         (fixup_vtable_deltas1): Likewise.
18861         (override_one_vtable): Likewise.
18862         * search.c (get_abstract_virtuals_1): Likewise.
18863         (get_pure_virtuals): Likewise.
18864         (expand_upcast_fixups): Likewise.
18865         * tree.c (debug_binfo): Likewise.
18866
18867         * class.c (build_vtable): Don't return a value.  Don't rebuild
18868         vtables for bases that have already been handled.
18869         (prepare_fresh_vtable): Don't rebuild vtables for bases that have
18870         already been handled.
18871         (modify_one_vtable): Adjust accordingly.
18872         (fixup_vtable_deltas1): Likewise.
18873         (finish_struct_1): Likewise.
18874
18875 2000-01-01  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
18876
18877         * call.c (build_new_method_call): Also check destructors.