OSDN Git Service

PR c++/21495
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2005-05-19  Jakub Jelinek  <jakub@redhat.com>
2
3         PR c++/21495
4         * decl.c (grokdeclarator): Fix "storage class specified for"
5         error reporting.
6
7 2005-05-19  Kazu Hirata  <kazu@cs.umass.edu>
8
9         * parser.c: Fix comment typos.
10
11 2005-05-18  Geoffrey Keating  <geoffk@apple.com>
12
13         * Make-lang.in (cc1plus-dummy): New.
14         (cc1plus-checksum.c): New.
15         (cc1plus-checksum.o): New.
16         (cc1plus): Add cc1plus-checksum.o.
17
18 2005-05-17  H.J. Lu  <hongjiu.lu@intel.com>
19
20         PR C++/19664
21         * decl2.c (determine_visibility): Don't set visibility to
22         hidden if it has been set explicitly by user.
23
24 2005-05-17  Mike Stump  <mrs@apple.com>
25
26         Yet more Objective-C++...
27         
28         * cp-objcp-common.h (cxx_get_alias_set): Move from
29         here...
30         (cxx_warn_unused_global_decl): Likewise.
31         (cp_expr_size): Likewise.
32         (cp_tree_size): Likewise.
33         (cp_var_mod_type_p): Likewise.
34         (cxx_initialize_diagnostics): Likewise.
35         (cxx_types_compatible_p): Likewise.
36         * cp-tree.h: to here.
37         (do_poplevel): Add.
38         * lex.c (D_OBJC): Add.
39         (init_reswords): Add.
40         * Make-lang.in (cp/pt.o): Add cp/cp-objcp-common.h.
41         * parser.c: Add c-common.h include.
42         * pt.c: Add c-common.h and cp-objcp-common.h includes.
43         (template_args_equal): Use objc_comptypes as well.
44         (tsubst_copy_and_build): Use objcp_tsubst_copy_and_build as well.
45         * semantics.c (do_poplevel): Remove static.
46
47         * decl.c (objc_mark_locals_volatile): Don't change decls that are
48         already ok.
49         * decl2.c (generate_ctor_or_dtor_function): Add code to initialize
50         Objective C++ early enough.
51         * lex.c (struct resword reswords): Add Objective-C++ support.
52         * parser.c (cp_lexer_get_preprocessor_token): Add Objective-C++.
53         (cp_parser_objc_message_receiver): Add.
54         (cp_parser_objc_message_args): Likewise.
55         (cp_parser_objc_message_expression): Likewise.
56         (cp_parser_objc_encode_expression): Likewise.
57         (cp_parser_objc_defs_expression): Likewise.
58         (cp_parser_objc_protocol_expression): Likewise.
59         (cp_parser_objc_selector_expression): Likewise.
60         (cp_parser_objc_expression): Likewise.
61         (cp_parser_objc_visibility_spec): Likewise.
62         (cp_parser_objc_method_type): Likewise.
63         (cp_parser_objc_protocol_qualifiers): Likewise.
64         (cp_parser_objc_typename): Likewise.
65         (cp_parser_objc_selector_p): Likewise.
66         (cp_parser_objc_selector): Likewise.
67         (cp_parser_objc_method_keyword_params): Likewise.
68         (cp_parser_objc_method_tail_params_opt): Likewise.
69         (cp_parser_objc_interstitial_code): Likewise.
70         (cp_parser_objc_method_signature): Likewise.
71         (cp_parser_objc_method_prototype_list): Likewise.
72         (cp_parser_objc_method_definition_list): Likewise.
73         (cp_parser_objc_class_ivars): Likewise.
74         (cp_parser_objc_identifier_list): Likewise.
75         (cp_parser_objc_alias_declaration): Likewise.
76         (cp_parser_objc_class_declaration): Likewise.
77         (cp_parser_objc_protocol_declaration): Likewise.
78         (cp_parser_objc_protocol_refs_opt): Likewise.
79         (cp_parser_objc_superclass_or_category): Likewise.
80         (cp_parser_objc_class_interface): Likewise.
81         (cp_parser_objc_class_implementation): Likewise.
82         (cp_parser_objc_end_implementation): Likewise.
83         (cp_parser_objc_declaration): Likewise.
84         (cp_parser_objc_try_catch_finally_statement): Likewise.
85         (cp_parser_objc_synchronized_statement): Likewise.
86         (cp_parser_objc_throw_statement): Likewise.
87         (cp_parser_objc_statement): Likewise.
88         (cp_parser_primary_expression): Add Objective-C++.
89         (cp_parser_statement): Likewise.
90         (cp_parser_declaration): Likewise.
91         (cp_parser_simple_type_specifier): Likewise.
92         (cp_parser_type_name): Likewise.
93         (cp_parser_parameter_declaration_list): Likewise.
94         (cp_parser_member_declaration) Likewise.
95         * tree.c: Include debug.h.
96         * typeck.c (composite_pointer_type): Add Objective-C++ support.
97         (finish_class_member_access_expr): Likewise.
98         (build_function_call): Allow objc to rewrite FUNCTION_DECLs.
99         (build_modify_expr): Allow objc to generate write barriers.
100
101         * Make-lang.in (cp/tree.o): Add debug.h.
102         * tree.c (lvalue_p_1, case CONST_DECL): Add.
103
104 2005-05-18  Jan Hubicka  <jh@suse.cz>
105
106         * method.c: Include tree-pass.h
107         (use_thunk): Lower body before expanding.
108
109 2005-05-17  Jakub Jelinek  <jakub@redhat.com>
110
111         PR c++/21454
112         * decl.c (maybe_deduce_size_from_array_init): Call
113         cp_apply_type_quals_to_decl after completing array type.
114
115 2005-05-16  Richard Henderson  <rth@redhat.com>
116
117         * decl.c (build_library_fn_1): Move setting TREE_NOTHROW ...
118         (build_library_fn): ... here.
119
120 2005-05-12  Ian Lance Taylor  <ian@airs.com>
121
122         * cp-tree.h (cp_stmt_codes): Don't define.
123         (statement_code_p): Declare.
124         (STATEMENT_CODE_P): Define.
125         * lex.c (statement_code_p): Define.
126         (cxx_init): Use actual codes in stmt_codes initializer, not
127         cp_stmt_codes macro.  Initialize statement_code_p directly, rather
128         than using INIT_STATEMENT_CODES.
129
130 2005-05-09  Mark Mitchell  <mark@codesourcery.com>
131
132         * typeck.c (build_unary_op): Do not resort to address arithmetic
133         when taking the address of a COMPONENT_REF.
134         
135 2005-05-08  Kazu Hirata  <kazu@cs.umass.edu>
136
137         * class.c (vtbl_init_data_s): Change the type of fns to
138         VEC(tree,gc)*.
139         (build_vtbl_initializer, add_vcall_offset, add_vcall_offset):
140         Use VEC instead of VARRAY.
141
142 2005-05-07  Richard Sandiford  <rsandifo@redhat.com>
143
144         * mangle.c: Remove a reference to the MIPS -mint64 option.
145
146 2005-05-07  Kazu Hirata  <kazu@cs.umass.edu>
147
148         * decl.c (wrapup_globals_for_namespace): Use VEC instead of
149         VARRAY.
150         * name-lookup.c (add_decl_to_level, begin_scope): Likewise.
151         * name-lookup.h (cp_binding_level): Change the type of
152         static_decls to VEC(tree,gc)*.
153
154         * mangle.c (globals): Change the type of substitutions to
155         VEC(tree,gc)*.
156         (dump_substitution_candidates, add_substitution,
157         find_substitution, finish_mangling, init_mangle): Use VEC
158         instead of VARRAY.
159
160 2005-05-06  Kazu Hirata  <kazu@cs.umass.edu>
161
162         * decl2.c (spew_debug): Remove.
163
164         * decl2.c (ssdf_decls, start_static_storage_duration_function,
165         generate_ctor_or_dtor_function): Use VEC instead of VARRAY.
166
167         * decl2.c (pending_statics, note_vague_linkage_var,
168         cp_finish_file): Use VEC instead of VARRAY.
169         (pending_statics_used): Remove.
170
171 2005-05-05  Kazu Hirata  <kazu@cs.umass.edu>
172
173         * decl2.c (deferred_fns, note_vague_linkage_fn,
174         cp_finish_file): Use VEC instead of VARRAY.
175
176 2005-05-05  Mark Mitchell  <mark@codesourcery.com>
177
178         PR c++/21352
179         * pt.c (build_non_dependent_expr): Use is_overloaded_fn.
180
181 2005-05-05  Kazu Hirata  <kazu@cs.umass.edu>
182
183         * pt.c: Fix a comment typo.
184
185 2005-05-04  Kazu Hirata  <kazu@cs.umass.edu>
186
187         * cp-tree.h (language_function): Change the type of
188         x_local_names to VEC.
189         * decl.c (push_local_name): Adjust uses of local_names.
190
191 2005-05-03  Kazu Hirata  <kazu@cs.umass.edu>
192
193         * friend.c, lex.c, mangle.c, repo.c: Update copyright.
194
195 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
196
197         * class.c (local_classes, init_class_processing): Use VEC
198         instead of VARRAY.
199         * cp-tree.h (local_classes): Likewise.
200         * mangle.c (discriminator_for_local_entity): Likewise.
201         * name-lookup.c (pushtag): Likewise.
202
203         * class.c (current_lang_depth, push_lang_context,
204         pop_lang_context): Use VEC instead of VARRAY.
205         * cp-tree.h (saved_scope): Use VEC for lang_base instead of
206         VARRAY.
207         * name-lookup.c (push_to_top_level): Use VEC instead of
208         VARRAY.
209
210 2005-05-02  Paolo Bonzini  <bonzini@gnu.org>
211
212         * semantics.c (finish_call_expr): Call resolve_overloaded_builtin
213         for BUILT_IN_MD built-ins.
214
215 2005-05-02  Michael Matz  <matz@suse.de>
216
217         PR c++/19542
218         * cp-tree.h (cp_tree_index): Remove CPTI_NULL, to be defined in C
219         common frontend.
220         (null_node): Remove.
221         * lex.c (cxx_init): Move null_node initialisation to C common frontend.
222
223 2005-04-25  Ian Lance Taylor  <ian@airs.com>
224
225         * cp-tree.def: Add EXPR_STMT.
226         * cp-tree.h (cp_stmt_codes): Add EXPR_STMT.
227         (EXPR_STMT_EXPR): Define.
228         * cp-gimplify.c: Include "flags.h".
229         (gimplify_expr_stmt): New static function.
230         (cp_gimplify_expr): Handle EXPR_STMT.
231         * cxx-pretty-print.c (pp_cxx_statement): Use pp_cxx_expression
232         rather than pp_expression.
233         (pp_cxx_statement): Handle EXPR_STMT.
234         * dump.c (cp_dump_tree): Handle EXPR_STMT.
235         * lex.c (cxx_init): Don't use c_common_stmt_codes in stmt_codes
236         initializer.
237
238 2005-04-25  Andrew Pinski  <pinskia@physics.uc.edu>
239
240         PR C++/21188
241         * rtti.c (ifnonnull): Cast the zero comparison operand
242         to the correct type.
243
244 2005-04-24  Jakub Jelinek  <jakub@redhat.com>
245
246         PR middle-end/20991
247         * class.c: Include cgraph.h.
248         (cp_fold_obj_type_ref): Set node->local.vtable_method.
249         * Make-lang.in (cgraph.o): Depend on $(CGRAPH_H).
250
251 2005-04-12  Markus F.X.J. Oberhumer  <markus@oberhumer.com>
252
253         * mangle.c (write_builtin_type): Handle integer types which are
254         not one of the shared integer type nodes and emit a "vendor
255         extended builtin type" with an encoding in the form of "u5int96".
256
257 2005-04-24  Ian Lance Taylor  <ian@airs.com>
258
259         * cp-tree.def (USING_STMT): Change class to tcc_statement.
260         (TRY_BLOCK, EH_SPEC_BLOCK, HANDLER, CLEANUP_STMT): Likewise.
261         (IF_STMT, FOR_STMT, WHILE_STMT, DO_STMT): Likewise.
262         (BREAK_STMT, CONTINUE_STMT, SWITCH_STMT): Likewise.
263
264 2005-04-23  DJ Delorie  <dj@redhat.com>
265
266         * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, friend.c,
267         init.c, lex.c, mangle.c, method.c, name-lookup.c, parser.c,
268         repo.c, rtti.c, tree.c, typeck.c, typeck2.c: Adjust warning()
269         callers.
270
271 2005-04-22  Per Bothner  <per@bothner.com>
272
273         * decl.c (make_rtl_for_nonlocal_decl): Don't try get_fileinfo if
274         input_filename is NULL, as it is for (say) __PRETTY_FUNCTION__.
275
276 2005-04-22  Alexandre Oliva  <aoliva@redhat.com>
277
278         PR c++/21087
279         * name-lookup.c (push_overloaded_decl): Do not overload with
280         non-duplicate anticipated built-in.
281
282 2005-04-21  Kazu Hirata  <kazu@cs.umass.edu>
283
284         * cp-tree.h (THROW_NAME, AUTO_VTABLE_NAME, AUTO_TEMP_FORMAT,
285         VTABLE_BASE, VTABLE_NAME_PREFIX, STATIC_NAME_FORMAT): Remove.
286
287 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
288
289         * cp-tree.h: Adjust for new VEC API.
290         Define VEC(tree_pair_s,gc).
291         (struct save_scope): Adjust.
292         (struct lang_type_class): Adjust.
293         (unemitted_tinfo_decls): Adjust.
294         * class.c (add_method, resort_type_method_vec,
295         finish_struct_methods, struct find_final_overrider_data,
296         dfs_find_final_overrider_pre, find_final_overrider,
297         get_vcall_index, warn_hidden, walk_subobject_offsets,
298         check_methods, fixup_inline_methods, end_of_class,
299         warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer,
300         add_vcall_offset): Adjust.
301         * decl.c (xref_basetypes, finish_method): Adjust.
302         * decl2.c (check_classfn): Adjust.
303         * init.c (sort_mem_initializers, push_base_cleanups): Adjust.
304         * method.c (do_build_copy_constructor): Adjust.
305         * name-lookup.c (new_class_binding, store_binding, 
306         store_bindings, store_class_bindings): Adjust.
307         * name-lookup.h: Define VEC(cxx_saved_binding,gc),
308         VEC(cp_class_binding,gc).
309         (struct cp_binding_level): Adjust.
310         * parser.c: Define VEC(cp_token_position,heap).
311         (struct cp_lexer): Adjust.
312         (cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy,
313         cp_lexer_save_tokens): Adjust.
314         * pt.c (retrieve_specialization,
315         check_explicit_specialization): Adjust.
316         * rtti.c (unemitted_tinfo_decls): Adjust.
317         (init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init,
318         get_pseudo_ti_desc): Adjust.
319         * search.c (dfs_access_in_type, lookup_conversion_operator,
320         lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible,
321         dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust.
322         * semantics.c: Define VEC(deferred_access,gc).
323         (push_deferring_access_checks): Adjust.
324         * typeck2.c (abstract_virtuals_error): Adjust.
325
326 2005-04-20  Ian Lance Taylor  <ian@airs.com>
327
328         * cp-tree.def: Add STMT_EXPR.
329         * cp-tree.h (STMT_EXPR_NO_SCOPE): Define.
330         (STMT_EXPR_STMT): Define.
331         * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
332         STMT_EXPR.
333         (pp_cxx_expression): Likewise.
334         (pp_cxx_statement): Call pp_cxx_statement, not pp_statement.
335         * dump.c (cp_dump_tree): Handle STMT_EXPR.
336
337 2005-04-18  Kazu Hirata  <kazu@cs.umass.edu>
338
339         * decl.c (expand_static_init): Call build2 and build3 instead
340         of build.
341
342         * cp-tree.h (VPTR_NAME, VPTR_NAME_P): Remove.
343
344 2005-04-17  Ian Lance Taylor  <ian@airs.com>
345
346         * cp-tree.def: Add SIZEOF_EXPR, ARROW_EXPR and ALIGNOF_EXPR.
347         * cxx-pretty-print.c (pp_cxx_postfix_expression): Handle
348         ARROW_EXPR.
349         (pp_cxx_unary_expression): Handle SIZEOF_EXPR and ALIGNOF_EXPR.
350         (pp_cxx_expression): Handle ARROW_EXPR, SIZEOF_EXPR, and
351         ALIGNOF_EXPR.
352         * typeck.c (cxx_sizeof_or_alignof_type): Update call to
353         c_sizeof_or_alignof_type for change in parameter type.
354
355 2005-04-16  Mark Mitchell  <mark@codesourcery.com>
356
357         PR c++/21025
358         * typeck.c (cxx_sizeof_or_alignof_type): Check whether the type to
359         which sizeof/alignof is dependent, rather than just whether we are
360         processing_template_decl.
361         
362 2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>
363
364         * cp-tree.h (LOOKUP_GLOBAL): Remove.
365         (LOOKUP_ONLYCONVERTING, DIRECT_BIND, LOOKUP_NO_CONVERSION,
366         LOOKUP_DESTRUCTOR, LOOKUP_NO_TEMP_BIND, LOOKUP_PREFER_TYPES,
367         LOOKUP_PREFER_NAMESPACES, LOOKUP_CONSTRUCTOR_CALLABLE): Adjust
368         their values.
369
370 2005-04-15  Richard Henderson  <rth@redhat.com>
371
372         PR middle-end/14311
373         * semantics.c (finish_call_expr): Call resolve_overloaded_builtin.
374
375 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
376
377         * cp-tree.h (lang_type_class): Remove redefined.  Move
378         java_interface into where redefined was.  Increment the width
379         of dummy.
380         (TYPE_REDEFINED): Remove.
381
382 2005-04-14  Kazu Hirata  <kazu@cs.umass.edu>
383
384         * cp-tree.h (SET_TMPL_ARG, ENUM_TI_TEMPLATE, ENUM_TI_ARGS,
385         CLASSTYPE_TEMPLATE_LEVEL): Remove.
386
387 2005-04-11  Mark Mitchell  <mark@codesourcery.com>
388
389         * decl2.c (determine_visibility): Don't use export_class_data.
390         (import_export_decl): Honor TARGET_CXX_CLASS_DATA_ALWAYS_WEAK and
391         TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY. 
392
393 2005-04-09  Kazu Hirata  <kazu@cs.umass.edu>
394
395         * cp-tree.h (cxx_alignof): Remove.
396
397         * cp-tree.h (DECL_ARRAY_DELETE_OPERATOR_P): Remove.
398
399         * cp-tree.h (EXCEPTION_CLEANUP_NAME, B_SET, B_CLR, B_TST,
400         CONV_STATIC_CAST): Remove.
401
402         * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Remove.
403
404         * cp-tree.h (VF_BINFO_VALUE, VF_BASETYPE_VALUE): Remove.
405
406         * cp-tree.h (cp_deprecated): Remove.
407
408 2005-04-08  Ian Lance Taylor  <ian@airs.com>
409
410         * cp-tree.def: Define FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT,
411         CONTINUE_STMT, SWITCH_STMT.
412         * cp-tree.h (cp_stmt_codes): Add FOR_STMT, WHILE_STMT, DO_STMT,
413         BREAK_STMT, CONTINUE_STMT, SWITCH_STMT.
414         (WHILE_COND, WHILE_BODY): Define.
415         (DO_COND, DO_BODY): Define.
416         (FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY): Define.
417         (SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE): Define.
418         * cp-gimplify.c (enum bc_t): Define.
419         (struct cp_gimplify_ctx, ctxp): Define.
420         (push_context, pop_context): New static functions.
421         (begin_bc_block, finish_bc_block): New static functions.
422         (build_bc_goto): New static function.
423         (gimplify_cp_loop, gimplify_for_stmt): New static functions.
424         (gimplify_while_stmt, gimplify_do_stmt): Likewise.
425         (gimplify_switch_stmt): Likewise.
426         (cp_gimplify_expr): Handle FOR_STMT, WHILE_STMT, DO_STMT,
427         SWITCH_STMT, CONTINUE_STMT, BREAK_STMT.
428         (cp_genericize): Call push_context and pop_context.
429         * semantics.c (finish_break_stmt): Just call build_stmt
430         (BREAK_STMT) rather than build_break_stmt.
431         (finish_continue_stmt): Corresponding change.
432         * decl.c (pop_switch): Update call to c_do_switch_warnings for new
433         parameters.
434         * cxx-pretty-print.c (pp_cxx_statement): Handle SWITCH_STMT,
435         WHILE_STMT, DO_STMT, FOR_STMT, BREAK_STMT, CONTINUE_STMT.
436         * dump.c (cp_dump_tree): Likewise.
437
438 2005-04-08  Mark Mitchell  <mark@codesourcery.com>
439
440         PR c++/20905
441         * parser.c (cp_parser_type_specifier_seq): Add is_condition
442         parameter.
443         (cp_parser_new_type_id): Pass it.
444         (cp_parser_condition): Likewise.
445         (cp_parser_conversion_type_id): Likewise.
446         (cp_parser_type_id): Likewise.
447         (cp_parser_type_specifier_seq): In a condition, do not allow
448         invalid type-specifier combinations.
449         (cp_parser_exception_declaration): Adjust call to
450         cp_parser_type_specifier_seq. 
451
452         * cp-tree.def (TINST_LEVEL): Document TINST_IN_SYSTEM_HEADER_P.
453         * cp-tree.h (struct tinst_level): Add in_system_header_p.
454         (TINST_IN_SYSTEM_HEADER_P): New macro.
455         (make_tinst_level): Remove.
456         * pt.c (lookup_template_class): Preserve DECL_IN_SYSTEM_HEADER on
457         the instantiated class.
458         (push_tinst_level): Do not use make_tinst_level.  Set
459         TINST_IN_SYSTEM_HEADER_P.
460         (pop_tinst_level): Likewise.
461         (instantiate_class_template): Set in_system_header.
462         (instantiate_pending_templates): Likewise.
463         * tree.c (make_tinst_level): Remove.
464
465 2005-04-06  Joseph S. Myers  <joseph@codesourcery.com>
466
467         * decl.c (start_decl): Apply pending #pragma weak regardless of
468         scope.
469
470 2005-04-06  Mark Mitchell  <mark@codesourcery.com>
471
472         PR c++/20212
473         * pt.c (regenerate_decl_from_template): Copy attributes for
474         parameters from the pattern to the instantiation.
475
476 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
477
478         PR c++/20734
479         * cp-tree.def (OFFSET_REF): Correct comments.
480         * init.c (build_offset_ref): Remove misleading comment.
481         * typeck.c (build_unary_op): Handle pointer-to-member creation
482         here, rather than ...
483         (unary_complex_lvalue): ... here.
484
485 2005-04-06  Jason Merrill  <jason@redhat.com>
486
487         PR c++/19312
488         * tree.c (stabilize_init): Don't bother trying to stabilize
489         something with no side-effects.
490
491 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
492
493         PR c++/20763
494         * decl.c (grokdeclarator): Correct attribute handling.
495
496 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
497
498         PR c++/19159
499         * decl2.c (import_export_decl): Use non-COMDAT external linkage
500         for virtual tables, typeinfo, etc. that will be emitted in only
501         one translation unit on systems without weak symbols.
502
503 2005-04-04  Mark Mitchell  <mark@codesourcery.com>
504
505         PR c++/20679
506         * parser.c (cp_parser_template_name): Fix thinko.
507
508 2005-04-04  Nathan Sidwell  <nathan@codesourcery.com>
509
510         PR c++/20746
511         * method.c (use_thunk): Protect covariant pointer return
512         adjustments from NULL pointers.
513
514 2005-04-04  Jan Hubicka  <jh@suse.cz>
515
516         * decl2.c (finish_objects): Revert my previous patch.
517         (cp_finish_file): Likewise.
518
519 2005-04-03  Kazu Hirata  <kazu@cs.umass.edu>
520
521         * pt.c: Fix comment typos.
522
523 2005-04-03  Nathan Sidwell  <nathan@codesourcery.com>
524
525         PR c++/20723
526         * pt.c (more_specialized_fn): Member functions are unordered wrt
527         non-members.  Conversion operators are unordered wrt other
528         functions.
529
530 2005-04-01  Nathan Sidwell  <nathan@codesourcery.com>
531
532         * call.c (add_template_candidates_real): Remove length parameter
533         from fn_type_unification call.
534         * class.c (resolve_address_of_overloaded_function): Likewise
535         * cp-tree.h (fn_type_unification): Remove length parameter.
536         * pt.c (get_bindings_overload): Remove.
537         (get_bindings_real): Rename to ...
538         (get_bindings): ... here.  Remove length and strict
539         parameters. Change return type flag to boolean.  Remove original
540         forwarding function.
541         (determine_specialization): Adjust get_bindings call.
542         (fn_type_unification): Remove length parameter.  Adjust.
543         (type_unification_real): Remove length parameter.  Adjust.
544         (resolve_overloaded_unification): Adjust get_bindings call.
545         (try_one_overload): Simplify confusing cascaded if control flow.
546         (unify): Remove length paramter from type_unification_real call.
547         (most_specialized_instantiation): Adjust get_bindings calls.
548         (most_specialized): Likewise.
549
550 2005-03-31  Nathan Sidwell  <nathan@codesourcery.com>
551
552         PR c++/19203, implement DR 214
553         * call.c (joust): Use more_specialized_fn.
554         * cp-tree.h (DEDUCE_ORDER): Remove.
555         (more_specialized): Replace with ...
556         (more_specialized_fn): ... this.
557         * pt.c (maybe_adjust_types_for_deduction): Remove DEDUCE_ORDER
558         case.
559         (type_unification_real): Remove DEDUCE_ORDER case.
560         (more_specialized): Replace with ...
561         (more_specialized_fn): ... this.  Implement DR 214.
562         (most_specialized_instantiation): Use get_bindings_real directly.
563
564 2005-03-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>
565
566         PR c++/18644
567         * call.c (build_new_op): Remove check for -Wsynth.
568
569 2005-03-31  Jan Hubicka  <jh@suse.cz>
570
571         * decl2.c (finish_objects): Mark ctor as needed.
572         (cp_finish_file): Output variables only in nonunit-at-a-time.
573
574 2005-03-29  Richard Henderson  <rth@redhat.com>
575
576         PR c/20519
577         * decl.c (cp_complete_array_type): Rename from complete_array_type.
578         Use the new complete_array_type in c-common.c.  Update all callers.
579         * cp-tree.h (cp_complete_array_type): Update to match.
580
581 2005-03-24  Geoffrey Keating  <geoffk@apple.com>
582
583         * typeck.c (build_static_cast_1): Allow scalar_cast between
584         any integral, floating, or enumeration type.
585
586 2005-03-24  Steven Bosscher  <stevenb@suse.de>
587
588         * typeck.c (comptypes): First determine if the types are compatible
589         from a target-independent point of view.  Check target attributes
590         last.
591
592         * class.c (build_base_path):
593         (build_vbase_offset_vtbl_entries):
594         (add_vcall_offset): Replace fold (buildN (...)) with fold_buildN.
595         * error.c (dump_expr): Likewise.
596         * init.c (build_zero_init, expand_cleanup_for_base,
597         build_vec_delete_1): Likewise.
598         * mangle.c (write_integer_cst): Likewise.
599         * method.c (thunk_adjust): Likewise.
600         * pt.c (convert_nontype_argument, tsubst, unify): Likewise.
601         * tree.c (cxx_print_statistics, array_type_nelts_total): Likewise.
602         * typeck.c (build_ptrmemfunc_access_expr,
603         (get_member_function_from_ptrfunc): Likewise.
604
605 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
606
607         * cp-objcp-common.h (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.
608
609 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
610
611         * cp-tree.h (perform_integral_promotions): Remove.
612         (default_conversion): Add.
613
614 2005-03-22  Mark Mitchell  <mark@codesourcery.com>
615
616         * parser.c (cp_parser_warn_min_max): New function.
617         (cp_parser_binary_expression): Use it.
618         (cp_parser_assignment_operator_opt): Likewise.
619         (cp_parser_operator): Likewise.
620
621 2005-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
622
623         PR c++/19980
624         * decl.c (start_preparsed_function): Robustify.
625
626 2005-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
627
628         PR c++/20499
629         * parser.c (cp_parser_class_head): Return NULL_TREE when
630         encountering a redefinition.
631
632 2005-03-22  Nathan Sidwell  <nathan@codesourcery.com>
633
634         PR c++/20465
635         PR c++/20381
636         * typeck.c (build_ptrmemfunc): Allow OFFSET_REF when processing a
637         template.
638
639 2005-03-21  Paolo Carlini  <pcarlini@suse.de>
640
641         PR c++/20461
642         PR c++/20536
643         * init.c (emit_mem_initializers): Don't crash on undefined
644         types.
645
646 2005-03-21  Paolo Carlini  <pcarlini@suse.de>
647
648         PR c++/20147
649         * semantics.c (finish_stmt_expr_expr): Return immediately
650         if error_operand_p (expr).
651
652 2005-03-21  Joseph S. Myers  <joseph@codesourcery.com>
653
654         * cp-tree.h (lvalue_or_else, lvalue_p): New.
655         * typeck.c (lvalue_or_else): New.  Call lvalue_error.
656
657 2005-03-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
658
659         PR c++/20240
660         * decl.c (decls_match): Compare context of VAR_DECL.
661
662 2005-03-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
663
664         PR c++/20333
665         * parser.c (cp_parser_postfix_expression) <case RID_TYPENAME>:
666         Check the return value of cp_parser_nested_name_specifier.
667
668 2005-03-18  Dale Johannesen <dalej@apple.com>
669
670         * cp/tree.c (cp_tree_equal):  Handle SSA_NAME.
671
672 2005-03-18  Paolo Carlini  <pcarlini@suse.de>
673
674         PR c++/20463
675         * parser.c (cp_parser_diagnose_invalid_type_name):
676         Check TYPE_BINFO (current_class_type) before attempting
677         to emit inform messages.
678
679 2005-03-17  Paolo Carlini  <pcarlini@suse.de>
680
681         PR c++/19966
682         * cp-tree.h (grok_op_properties): Change return type to void.
683         * decl.c (grok_op_properties): Return early - don't check the
684         arity - in case of a static member or an operator that cannot
685         be non-member; tidy a bit.
686
687 2005-03-17  Nathan Sidwell  <nathan@codesourcery.com>
688
689         PR c++/20186
690         * pt.c (contains_dependent_cast_p): Remove.
691         (fold_non_dependent_expr): Don't use it.
692         (value_dependent_expression_p): Use a switch statement.
693         reference_exprs can be dependent.
694
695 2005-03-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
696
697         PR c++/4403
698         PR c++/9783, DR433
699         * name-lookup.c (pushtag): Skip template parameter scope when
700         scope is ts_global.  Don't push tag into template parameter
701         scope.
702         * pt.c (instantiate_class_template): Reorder friend class
703         template substitution to handle non-dependent friend class
704         that hasn't been previously declared.
705
706 2005-03-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
707
708         Friend class name lookup 5/n
709         PR c++/1016
710         * cp-tree.h (pushtag): Adjust declaration.
711         * decl.c (lookup_and_check_tag): Call lookup_type_scope if
712         lookup_name fails.
713         (xref_tag): Adjust call to pushtag.  Make hidden class visible.
714         (start_enum): Adjust call to pushtag.
715         * name-lookup.c (ambiguous_decl): Ignore hidden names.
716         (qualify_lookup): Change return type to bool.
717         (hidden_name_p): New function.
718         (lookup_namespace_name, unqualified_namespace_lookup,
719         lookup_name_real): Use it.
720         (lookup_type_scope): Update comments.
721         (maybe_process_template_type_declaration): Change parameter name
722         from globalize to is_friend.
723         (pushtag): Change globalize parameter of type int to tag_scope.
724         Hide name if introduced by friend declaration.
725         * name-lookup.h (hidden_name_p): Add declaration.
726         * parser.c (cp_parser_lookup_name): Don't deal with hidden name
727         here.
728         * pt.c (push_template_decl_real): Make hidden class template
729         visible.
730         (lookup_template_class, instantiate_class_template): Adjust call
731         to pushtag.
732         * semantics.c (begin_class_definition): Likewise.
733         * rtti.c (init_rtti_processing, build_dynamic_cast_1, 
734         tinfo_base_init, emit_support_tinfos): Use ts_current instead of
735         ts_global.
736
737 2005-03-13  Mark Mitchell  <mark@codesourcery.com>
738
739         PR c++/20157
740         * pt.c (determine_specialization): Reject non-specializations. 
741
742 2005-03-11  Per Bothner  <per@bothner.com>
743
744         * cp-tree.h (struct cp_declarator): New id_loc field.
745         * cp/parser.c (cp_lexer_get_preprocessor_token): Set cp_token's
746         location using c_lex_with_flags, instead of input_location.
747         (cp_parser_direct_declarator): Set declarator's id_loc from
748         cp_token's id_loc.
749
750 2005-03-10  Jakub Jelinek  <jakub@redhat.com>
751
752         PR c++/18384, c++/18327
753         * decl.c (reshape_init_array): Use UHWI type for max_index_cst
754         and index.  Convert max_index to size_type_node if it isn't
755         host_integerp (, 1).
756
757 2005-03-09  Mark Mitchell  <mark@codesourcery.com>
758
759         PR c++/20208
760         * pt.c (tsubst_decl): Apply array-to-pointer and
761         function-to-pointer conversions to function arguments.
762         (regenerate_decl_from_template): Likewise.
763
764 2005-03-09  Paolo Carlini  <pcarlini@suse.de>
765
766         PR c++/16859    
767         * decl.c (complete_array_type): In pedantic mode, return
768         3 for an empty initializer list as the initializer for an
769         array of unknown bound (8.5.1/4).
770         (maybe_deduce_size_from_array_init): Fix final test to use
771         the above.
772
773 2005-03-08  Nathan Sidwell  <nathan@codesourcery.com>
774
775         PR c++/20186
776         * pt.c (contains_dependent_cast_p): New.
777         (fold_non_dependent_expr): Call it.
778
779 2005-03-08  Mark Mitchell  <mark@codesourcery.com>
780
781         PR c++/20142
782         * cp-tree.h (target_type): Remove.
783         * decl.c (layout_var_decl): Remove #if 0'd code.
784         (cp_finish_decl): Remove dead code.
785         * init.c (build_vec_init): When determining whether or not the
786         element type has an asignment operator, look through all array
787         dimensions. 
788         * typeck.c (target_type): Remove.
789
790 2005-03-07  Mark Mitchell  <mark@codesourcery.com>
791
792         * class.c (finish_struct_1): Do not warn about non-virtual
793         destructors in Java classes.
794
795 2005-03-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
796
797         PR c++/19311
798         * init.c (build_offset_ref): Don't build non-dependent SCOPE_REF.
799         * pt.c (build_non_dependent_expr): Don't build NON_DEPENDENT_EXPR
800         for OFFSET_TYPE.
801         * typeck.c (build_x_unary_op): Don't build non-dependent SCOPE_REF.
802         Also set PTRMEM_OK_P for NON_DEPENDENT_EXPR.
803         (build_unary_op): Handle building ADDR_EXPR of OFFSET_REF inside
804         template.
805
806 2005-03-02  Alexandre Oliva  <aoliva@redhat.com>
807
808         * name-lookup.c (push_overloaded_decl): Don't error if the new
809         decl matches the old one.
810         * decl.c (redeclaration_error_message): Likewise.
811
812 2005-03-01  Per Bothner  <per@bothner.com>
813
814         * decl.c (finish_function): Use SET_EXPR_LOCATION instead of
815         unavailable annotate_with_file_line, if USE_MAPPED_LOCATION.
816
817 2005-03-01  Nathan Sidwell  <nathan@codesourcery.com>
818
819         PR c++/20232
820         * class.c (update_vtable_entry_for_fn): Don't crash on invalid
821         covariancy. 
822
823         * cp-tree.g (THUNK_TARGET): Expand comment.
824         * method.c (use_thunk): Make sure we also use the target, if that
825         is a thunk.
826
827 2005-02-27  Jakub Jelinek  <jakub@redhat.com>
828
829         PR c++/20206
830         * decl.c (cxx_comdat_group): Put thunks for
831         TARGET_USE_LOCAL_THUNK_ALIAS_P (function) functions into the same
832         comdat group as the thunk target.
833
834 2005-02-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
835
836         * call.c, class.c, cp-tree.h, decl2.c, error.c, init.c, mangle.c,
837         parser.c: Fix comment typo(s).
838
839 2005-02-24  Jakub Jelinek  <jakub@redhat.com>
840
841         PR c++/20175
842         * decl.c (reshape_init): Don't warn about missing braces if STRING_CST
843         initializes a char/wchar_t array.
844
845 2005-02-23  Mark Mitchell  <mark@codesourcery.com>
846
847         PR c++/19878
848         * decl.c (grokvardecl): Set DECL_INTERFACE_KNOWN for declarations
849         with internal linkage.
850
851 2005-02-23  Alexandre Oliva  <aoliva@redhat.com>
852
853         * decl.c (grokvardecl): Don't exempt anonymous types from having
854         linkage for variables that have linkage other than "C".
855
856 2005-02-23  Kazu Hirata  <kazu@cs.umass.edu>
857
858         * cp-objcp-common.h, error.c: Update copyright.
859
860 2005-02-22  Mark Mitchell  <mark@codesourcery.com>
861
862         PR c++/20073
863         * decl.c (start_decl_1): Don't clear TREE_READONLY.
864         (cp_finish_decl): Likewise.
865         (complete_vars): Call cp_apply_type_quals_to_decl.
866         * typeck.c (cp_apply_type_quals): Avoid setting TREE_READONLY in
867         cases where that's not valid.
868
869         PR c++/19991
870         * init.c (integral_constant_value): Iterate if the value of a decl
871         is itself a constant.
872
873         PR c++/20152
874         * parser.c (cp_parser_class_head): Check for redefintions here.
875         * semantics.c (begin_class_definition): Not here.
876         
877         PR c++/20153
878         * decl2.c (build_anon_union_vars): Add type parameter.
879         (finish_anon_union): Pass it.
880
881         PR c++/20148
882         * error.c (dump_expr): Do not print the body of a BIND_EXPR.
883         Handle STATEMENT_LIST.
884
885         PR c++/19883
886         * parser.c (cp_parser_direct_declarator): Always complain about
887         non-constant array bounds when in a function scope.
888         * semantics.c (finish_id_expression): Do not mark dependent names
889         as non-constant. 
890
891 2005-02-21  Douglas Gregor  <dgregor@cs.indiana.edu>
892         
893         PR c++/19076
894         PR c++/6628
895         * cp-tree.h (cp_apply_type_quals_to_decl): Declared.
896         * decl.c (grokdeclarator): Pedwarn about qualifying a function
897         type. 
898         Add qualifiers when declaring a typedef of a function type.
899         Member function pointers pick up the qualifiers of the typedef
900         used to declare them.
901         Don't complain about creating cv-qualified function types.
902         Complain about qualified function typedefs that are used to
903         declare non-static member functions or free functions.
904         Use cp_apply_type_quals_to_decl.
905         (start_preparsed_function): Use cp_apply_type_quals_to_decl.
906         (grokclassfn): Use cp_apply_type_quals_to_decl.
907         * error.c (dump_type_suffix): Print qualifiers for function
908         types. 
909         * pt.c (tsubst_decl): Use cp_apply_type_quals_to_decl.
910         (tsubst): When substituting a function type into a member
911         pointer type, pass along the qualifiers.
912         (unify): Unify member pointers to member function pointers.
913         * tree.c (cp_build_qualified_type_real): Function types may be
914         qualified. This includes restrict qualifiers.
915         * typeck.c (cp_apply_type_quals_to_decl): New function to replace
916         use of c_apply_type_quals_to_decl. Drops qualifiers that are being
917         added to function types.
918
919 2005-02-20  Zack Weinberg  <zack@codesourcery.com>
920
921         PR 18785
922         * cp-objcp-common.h (LANG_HOOKS_TO_TARGET_CHARSET): Set to
923         c_common_to_target_charset.  Delete bogus comment.
924
925 2005-02-18  Richard Henderson  <rth@redhat.com>
926
927         PR libstdc++/10606
928         * except.c (do_get_exception_ptr): New.
929         (expand_start_catch_block): Use it.
930
931 2005-02-19  Jakub Jelinek  <jakub@redhat.com>
932
933         * decl.c (start_decl_1): Only check TYPE_NEEDS_CONSTRUCTING
934         if type is not error_mark_node.
935
936 2005-01-20  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
937
938         PR c++/19508
939         * decl2.c (grokfield): Do not apply attributes to template parameters
940         as they are ignored by tsubst anyway.
941
942 2005-02-18  Jakub Jelinek  <jakub@redhat.com>
943
944         PR c++/19813
945         * decl.c (start_decl_1): Clear TREE_READONLY flag if
946         its type has TYPE_NEEDS_CONSTRUCTING.
947         (complete_vars): Likewise.
948
949 2005-02-17  Alexandre Oliva  <aoliva@redhat.com>
950
951         PR c++/20028
952         * class.c (finish_struct): Initialize TYPE_SIZE_UNIT of a
953         template along with TYPE_SIZE.
954
955         PR c++/20022
956         * semantics.c (perform_deferred_access_checks): Use
957         get_deferred_access_checks to get the top of the stack.
958
959 2005-02-15  Alexandre Oliva  <aoliva@redhat.com>
960
961         PR c++/17788
962         * class.c (add_implicitly_declared_members, check_field_decl)
963         (check_field_decls, check_bases): Remove arguments, tests and
964         assignments of cant_have_default_ctor-related variables.
965
966 2005-02-15  Alexandre Oliva  <aoliva@redhat.com>
967
968         * decl2.c (mark_used): Set the source location of the used decl to
969         the current input location here...
970         * method.c (synthesize_method): ... not here.  Set input_location
971         from the decl instead.
972
973 2005-02-14  Nathan Sidwell  <nathan@codesourcery.com>
974
975         PR c++/19608
976         * parser.c (cp_parser_late_parsing_for_member): Use
977         current_function_decl as scope to push to and from.
978
979         PR c++/19884
980         * pt.c (check_explicit_specialization): Make sure namespace
981         binding lookup found an overloaded function.
982         (lookup_template_function): Just assert FNS is an overloaded
983         function.
984
985         PR c++/19895
986         * decl.c (grokdeclarator): Check for error mark node in ptrmem
987         construction.
988
989 2005-02-14  Alexandre Oliva  <aoliva@redhat.com>
990
991         PR c++/17816
992         * decl.c (redeclaration_error_message): Report redefinition of
993         pure virtual function.
994
995 2005-02-14  Nathan Sidwell  <nathan@codesourcery.com>
996
997         PR c++/19891
998         * class.c (build_simple_base_path): Build the component_ref
999         directly.
1000         (update_vtable_entry_for_fn): Walk the covariant's binfo chain
1001         rather than using lookup_base.
1002         * search.c (dfs_walk_once): Add non-recursive assert check.
1003         * typeck.c (build_class_member_access_expr): It is possible for
1004         the member type to be both const and volatile.
1005
1006 2005-02-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1007
1008         PR c++/14479
1009         PR c++/19487
1010         * pt.c (maybe_check_template_type): Remove.
1011         * cp-tree.h (maybe_check_template_type): Remove prototype.
1012         * name-lookup.c (maybe_process_template_type_declaration): Don't
1013         use maybe_check_template_type.
1014
1015 2005-02-11  Richard Henderson  <rth@redhat.com>
1016
1017         PR c++/19632
1018         * pt.c (get_mostly_instantiated_function_type): Save and restore
1019         flag_access_control instead of push/pop_access_scope.
1020
1021 2005-02-10  Mark Mitchell  <mark@codesourcery.com>
1022
1023         PR c++/19755
1024         * decl.c (reshape_init): Issue warnings about missing braces.
1025
1026 2005-02-11  Kazu Hirata  <kazu@cs.umass.edu>
1027
1028         * cp-tree.def, except.c, ptree.c: Update copyright.
1029
1030 2005-02-09  Mark Mitchell  <mark@codesourcery.com>
1031
1032         PR c++/19811
1033         * call.c (build_op_delete_call): Check COMPLETE_TYPE_P before
1034         attempting name lookup.
1035
1036         * parser.c (cp_parser_unqualified_id): Initialize type_decl.
1037
1038         PR c++/19787
1039         * call.c (initialize_reference): Robustify.
1040
1041         PR ++/19732
1042         * decl.c (grokdeclarator): Check for invalid use of destructor
1043         names.
1044
1045         PR c++/19762
1046         * parser.c (cp_parser_unqualified_id): Avoid creating destructor
1047         names with invalid types.
1048
1049         PR c++/19826
1050         * parser.c (cp_parser_direct_declarator): Allow type-dependent
1051         expressions as array bounds.
1052
1053         PR c++/19739
1054         * parser.c (cp_parser_attributes_list): Allow empty lists.
1055
1056 2005-02-08  Mark Mitchell  <mark@codesourcery.com>
1057
1058         PR c++/19733
1059         * class.c (add_method): Don't set TYPE_HAS_DESTRUCTOR.
1060         (check_bases): Give warnings about a base class with a
1061         non-virtual destructor, even if it is implicit.
1062         (finish_struct_bits): Don't copy TYPE_HAS_DESTRUCTOR.
1063         (maybe_warn_about_overly_private_class): Don't use
1064         TYPE_HAS_DESTRUCTOR.
1065         (finish_struct_methods): Don't set TYPE_HAS_DESTRUCTOR.
1066         (check_for_override): Give it external linkage.
1067         (add_implicitly_declared_members): Generate destructors lazily.
1068         (check_field_decls): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
1069         TYPE_HAS_DESTRUCTOR.
1070         (check_bases_and_members): Call check_methods before
1071         check_field_decls.
1072         (check_bases_and_members): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
1073         TYPE_HAS_DESTRUCTOR.
1074         (finish_struct_1): Do not use TYPE_HAS_DESTRUCTOR.
1075         * cp-tree.def (PSEUDO_DTOR_EXPR): Document.
1076         * cp-tree.h (TYPE_HAS_DESTRUCTOR): Remove.
1077         (lang_type_class): Add lazy_destructor.
1078         (CLASSTYPE_LAZY_DESTRUCTOR): New macro.
1079         (CLASSTYPE_DESTRUCTORS): Robustify.
1080         (TYPE_HAS_DESTRUCTOR): Remove.
1081         (check_for_override): Declare.
1082         (build_vbase_delete): Remove.
1083         * cvt.c (convert_to_void): Issue errors about pseudo-destructor
1084         expressions.
1085         * decl.c (cxx_maybe_build_cleanup): Remove dead code.
1086         * except.c (dtor_nothrow): Lazily create destructors if necessary.
1087         (build_throw): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
1088         * init.c (build_delete): Lazily create destructors, if necessary.
1089         (build_vbase_delete): Remove.
1090         * method.c (locate_dtor): Simplify.
1091         (implicitly_declare_fn): Add support for destructors.
1092         * parser.c (cp_parser_lookup_name): Lazily create destructors, if
1093         necessary.
1094         * pt.c (check_explicit_specialization): Don't use
1095         TYPE_HAS_DESTRUCTOR.
1096         (instantiate_class_template): Likewise.
1097         * ptree.c (cxx_print_type): Don't print TYPE_HAS_DESTRUCTOR.
1098         * rtti.c (emit_support_tinfos): Robustify.
1099         * search.c (lookup_fnfields_1): Lazily create destructors.
1100         * typeck.c (build_class_member_access_expr): Remove
1101         PSEUDO_DTOR_EXPR handling.
1102         (lookup_destructor): Likewise.
1103
1104 2005-02-08  Kazu Hirata  <kazu@cs.umass.edu>
1105
1106         * cxx-pretty-print.c, cxx-pretty-print.h, decl.h: Update
1107         copyright.
1108
1109 2005-02-07  Mark Mitchell  <mark@codesourcery.com>
1110
1111         * parser.c (cp_lexer_start_debugging): Avoid arithmetic operations
1112         on boolean variables.
1113         (cp_lexer_stop_debugging): Likewise.
1114
1115 2005-02-03  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1116
1117         PR c++/17401
1118         * parser.c (cp_parser_pure_specifier): Emit a specific error
1119         message with an invalid pure specifier.
1120         * decl2.c (grok_function_init): Remove.
1121         (grokfield): An initializer for a method is a always a pure
1122         specifier.
1123
1124 2005-02-02  Matt Austern  <austern@apple.com>
1125
1126         PR c++/19628
1127         * cp-tree.h (builtin_valid_in_constant_expr_p): Declare.
1128         * parser.c (cp_parser_postfix_expression): Accept function call in
1129         constant expression if builtin_valid_in_constant_expr_p is true
1130         for that function.
1131         * pt.c (value_dependent_expression_p): Handle CALL_EXPRs properly.
1132         * semantics.c (finish_id_expression): Accept function call in constant
1133         expression if builtin_valid_in_constant_expr_p is true for that
1134         function.
1135         * tree.c (builtin_valid_in_constant_expr_p): New.
1136
1137 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1138
1139         PR c++/17413
1140         * pt.c (check_instantiated_args): Improve error message.
1141         Fix logic when to print its second part.
1142
1143 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1144
1145         * cp-tree.h (complete_type_or_else): Remove macro.
1146         (complete_type_or_diagnostic): Rename to complete_type_or_else
1147         and remove last argument.
1148         * typeck.c (complete_type_or_diagnostic): Rename to
1149         complete_type_or_else and remove last argument.
1150
1151 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1152
1153         * cp-tree.h (commonparms): Remove prototype.
1154         (convert_arguments): Likewise.
1155         (PFN_FROM_PTRMEMFUNC): Remove.
1156         * typeck.c (commonparms): Make static.
1157         (convert_arguments): Add prototype. Make static.
1158         (PFN_FROM_PTRMEMFUNC): Replace by pfn_from_ptrmemfunc.
1159
1160 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
1161
1162         * parser.c (cp_parser_primary_expression): Don't complain about
1163         floating-point literals in integral constant expressions when
1164         !pedantic.
1165
1166 2005-02-01  Alexandre Oliva  <aoliva@redhat.com>
1167
1168         * parser.c (cp_parser_template_id): Revert comment patch too.
1169
1170         PR c++/18757
1171         PR c++/19366
1172         PR c++/19499
1173         * parser.c (cp_parser_template_id): Revert 2004-12-09's patch.
1174         Issue an error when creating the template id.
1175         * pt.c (fn_type_unification): Return early if the explicit
1176         template arg list is an error_mark_node.
1177
1178 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
1179
1180         * decl.c (build_enumerator): Do not issue duplicate error messages
1181         about invalid enumeration constants.
1182         * parser.c (cp_parser_non_integral_constant_expression): Always
1183         set parser->non_integral_constant_expression_p.
1184         (cp_parser_primary_expression): Add cast_p parameter.  Issue
1185         errors about invalid uses of floating-point literals in
1186         cast-expressions.
1187         (cp_parser_postfix_expression): Add cast_p parameter.
1188         (cp_parser_open_square_expression): Pass it.
1189         (cp_parser_parenthesized_expression_list): Add cast_p parameter.
1190         (cp_parser_unary_expression): Likewise.
1191         (cp_parser_new_placement): Pass it.
1192         (cp_parser_direct_new_declarator): Likewise.
1193         (cp_parser_new_initializer): Likewise.
1194         (cp_parser_cast_expression): Add cast_p parameter.
1195         (cp_parser_binary_expression): Likewise.
1196         (cp_parser_question_colon_clause): Likewise.
1197         (cp_parser_assignment_expression): Likewise.
1198         (cp_parser_expression): Likewise.
1199         (cp_parser_constant_expression): If an integral constant
1200         expression is invalid, return error_mark_node.
1201         (cp_parser_expression_statement): Pass cast_p.
1202         (cp_parser_condition): Likewise.
1203         (cp_parser_iteration_statement): Likewise.
1204         (cp_parser_jump_statement): Likewise.
1205         (cp_parser_mem_initializer): Likewise.
1206         (cp_parser_template_argument): Likewise.
1207         (cp_parser_parameter_declaration): Likewise.
1208         (cp_parser_initializer): Likewise.
1209         (cp_parser_throw_expression): Likewise.
1210         (cp_parser_attribute_list): Likewise.
1211         (cp_parser_simple_cast_expression): Likewise.
1212         (cp_parser_functional_cast): Likewise.
1213         (cp_parser_late_parsing_default_args): Likewise.
1214         (cp_parser_sizeof_operand): Save/restore
1215         non_integral_constant_expression_p.
1216
1217 2005-01-31  Mike Stump  <mrs@apple.com>
1218
1219         * parser.c (cp_lexer_new_main): Get the first token, first, before
1220         doing anything.
1221
1222 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
1223
1224         * decl.c (start_decl): Add missing parentheses.
1225
1226 2005-01-30  Mark Mitchell  <mark@codesourcery.com>
1227
1228         PR c++/19555
1229         * cp-tree.h (DECL_USE_TEMPLATE): Expand documentation.
1230         * decl.c (duplicate_decls): Do not discard
1231         DECL_IMPLICIT_INSTANTIATION when merging declarations.
1232         (start_decl): Do not SET_DECL_TEMPLATE_SPECIALIZATION for
1233         variables that do not have DECL_USE_TEMPLATE.
1234
1235         PR c++/19395
1236         * decl.c (grokdeclarator): Refactor code so that qualified names
1237         are never allowed as the declarator in a typedef.
1238
1239         PR c++/19367
1240         * name-lookup.c (do_nonmember_using_decl): Avoid overloading
1241         builtin declarations.
1242
1243         PR c++/19457
1244         * call.c (convert_like_real): Inline call to
1245         dubious_conversion_warnings here.
1246         * cp-tree.h (dubious_conversion_warnings): Remove.
1247         * semantics.c (finish_unary_op_expr): Copy INTEGER_CSTs before
1248         setting TREE_NEGATED_INT.
1249         * typeck.c (dubious_conversion_warnings): Remove.
1250
1251         PR c++/19349
1252         * name-lookup.c (pushdecl_namespace_level): Avoid accessing free'd
1253         memory.
1254
1255 2005-01-28  Mark Mitchell  <mark@codesourcery.com>
1256
1257         PR c++/19253
1258         * parser.c (cp_parser_diagnose_invalid_type_name): Commit to
1259         tentative parses.
1260
1261         PR c++/19667
1262         * pt.c (redeclare_class_template): Robustify.
1263
1264 2005-01-27  Steven Bosscher  <stevenb@suse.de>
1265
1266         * decl.c (finish_case_label): Use SWITCH_STMT accessor macros
1267         instead of SWITCH_EXPR ones.
1268         * pt.c (tsubst_expr): Likewise.
1269         * semantics.c (begin_switch_stmt, finish_switch_cond,
1270         finish_switch_stmt): Likewise.
1271
1272 2005-01-26  J"orn Rennecke <joern.rennecke@st.com>
1273
1274         PR c++/18370
1275         * parser.c (cp_parser_initializer_clause): Initialize *non_constant_p.
1276
1277 2005-01-25  Andrew Pinski  <pinskia@physics.uc.edu>
1278
1279         * class.c (abort_fndecl_addr): New variable.
1280         (build_vtbl_initializer): If we have a pure virtual function
1281         share the abort function's address.
1282         Include gt-cp-class.h at the end.
1283         * config-lang.in (gtfiles): Add cp/class.c.
1284
1285 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1286
1287         * cxx-pretty-print.c (pp_cxx_statement): Add prototype. Make static.
1288         (pp_cxx_function_definition): Make static.
1289         * cxx-pretty-print.h (pp_cxx_statement): Remove prototype.
1290         (pp_cxx_function_definition): Likewise.
1291
1292 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1293
1294         * name-lookup.c (print_binding_level): Make static.
1295         (constructor_name_full): Make static inline.
1296         (current_decl_namespace): Make static.
1297         * name-lookup.h (constructor_name_full): Remove prototype.
1298         (print_binding_level): Likewise.
1299         (current_decl_namespace): Likewise.
1300
1301 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1302
1303         * decl.h (debug_bindings_indentation): Remove.
1304
1305 2005-01-23  Kazu Hirata  <kazu@cs.umass.edu>
1306
1307         * typeck.c: Fix a comment typo.
1308
1309 2005-01-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1310
1311         PR c++/19208
1312         * pt.c (fold_decl_constant_value): Always call fold_non_dependent_expr
1313         at least once.
1314         (tsubst): Use fold_decl_constant_value in place of a bare call to
1315         integral_constant_value.
1316
1317 2005-01-20  Kazu Hirata  <kazu@cs.umass.edu>
1318
1319         * typeck.c (more_qualified_p): Remove.
1320         * cp-tree.h: Remove the corresponding prototype.
1321
1322 2005-01-19  Matt Austern  <austern@apple.com>
1323
1324         * typeck.c (comptypes): Handle return code from objc_comptypes
1325         correctly.
1326
1327 2005-01-19  Kazu Hirata  <kazu@cs.umass.edu>
1328
1329         * cp-tree.h, name-lookup.h: Remove unused prototypes.
1330
1331 2005-01-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1332
1333         PR c++/19375
1334         * semantics.c (finish_id_expression): Disable access checking for
1335         already lookuped FIELD_DECL.
1336
1337 2005-01-18  Kazu Hirata  <kazu@cs.umass.edu>
1338
1339         * decl.c (delete_block): Remove.
1340         * cp-tree.h: Remove the corresponding prototype.
1341
1342         * decl.c (vtable_decl_p, vtype_decl_p, walk_globals_data,
1343         walk_vtables_r, walk_vtables, walk_globals_r, walk_globals):
1344         Remove.
1345         * cp-tree.h: Remove the corresponding prototypes.
1346
1347         * tree.c (count_functions, bound_pmf_p, cp_is_overload_p,
1348         cp_update_decl_after_saving, name_p): Remove.
1349         * cp-tree.h: Remove the corresponding prototypes.
1350
1351 2005-01-18  Andrew Pinski  <pinskia@physics.uc.edu>
1352
1353         PR c/19472
1354         * semantics.c (finish_asm_stmt): Strip nops off
1355         input memory operands.
1356
1357 2005-01-18  Kazu Hirata  <kazu@cs.umass.edu>
1358
1359         * Make-lang.in, call.c, cvt.c, init.c, rtti.c, tree.c,
1360         typeck2.c: Update copyright.
1361
1362 2005-01-16  Kazu Hirata  <kazu@cs.umass.edu>
1363
1364         * class.c (get_enclosing_class): Remove.
1365         * cp-tree.h: Remove the corresponding prototypes.
1366
1367         * cvt.c (convert_lvalue): Remove.
1368         * cp-tree.h: Remove the corresponding prototype.
1369
1370         * pt.c (tinst_for_decl): Remove.
1371         * cp-tree.h: Remove the corresponding prototypes.
1372
1373         * tree.c (hash_chainon): Remove.
1374         * cp-tree.h: Remove the corresponding prototypes.
1375
1376 2005-01-15  Jakub Jelinek  <jakub@redhat.com>
1377
1378         PR c++/19263
1379         * typeck2.c (split_nonconstant_init_1) <case VECTOR_TYPE>: Put a copy
1380         of CONSTRUCTOR's node into MODIFY_EXPR, as the original is modified.
1381
1382 2005-01-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1383
1384         * Make-lang.in (cp-warn): Don't append $(WERROR).
1385
1386 2005-01-10  Kazu Hirata  <kazu@cs.umass.edu>
1387
1388         * cp-tree.h: Fix a comment typo.
1389
1390 2005-01-07  Nathan Sidwell  <nathan@codesourcery.com>
1391
1392         PR c++/19298
1393         * pt.c (tsubst_qualified_id): Call convert_from_reference.
1394
1395 2005-01-06  Mark Mitchell  <mark@codesourcery.com>
1396
1397         PR c++/19244
1398         * class.c (add_implicitly_declared_members): Remove dead code.
1399         * decl.c (grokfndecl): Add sfk parameter.  Use it do set
1400         DECL_CONSTRUCTOR_P.
1401         (grokdeclarator): Adjust calls to grokfndecl.
1402         * method.c (implicitly_declare_fn): Improve documentation.
1403         * parser.c (cp_parser_direct_declarator): Do not consider a
1404         function to be a constructor if the containing class was
1405         originally anonymous.
1406
1407 2005-01-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1408
1409         PR c++/17154
1410         * search.c (lookup_field_1): Handle using declaration in
1411         class template partial specialization.
1412
1413 2005-01-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1414
1415         PR c++/19258
1416         * pt.c (push_access_scope): Handle friend defined in class.
1417         (pop_access_scope): Likewise.
1418
1419 2005-01-06  Nathan Sidwell  <nathan@codesourcery.com>
1420
1421         PR c++/19270
1422         * pt.c (tsubst_copy) <ARRAY_REF case>: Handle separately.
1423         (tsubst_copy_and_build) <ARRAY_REF case>: Remove obsolete
1424         array-new handling code.  Use build_x_binary_op.
1425
1426 2005-01-05  Nathan Sidwell  <nathan@codesourcery.com>
1427
1428         PR c++/19030
1429         * cp-tree.h (start_decl): Take pointer to pushed scope, not bool.
1430         * name-lookup.h (push_scope): Return pushed scope, not flag.
1431         * name-lookup.c (push_scope): Return scope that should be popped,
1432         not a flag.
1433         * decl.c (start_decl): Adjust.
1434         (grokfndecl): Adjust scope push and pop.
1435         * decl2.c (check_classfn): Likewise.
1436         * parser.c (cp_parser_condition, cp_parser_conversion_function_id,
1437         cp_parser_init_declarator, cp_parser_direct_declarator,
1438         cp_parser_class_specifier, cp_parser_class_head,
1439         cp_parser_lookup_name,
1440         cp_parser_constructor_declarator_p): Likewise.
1441         * pt.c (instantiate_class_template,
1442         resolve_typename_type): Likewise.
1443
1444 2005-01-03  Volker Reichelt  <reichelt@igpm.rwth-aaachen.de>
1445
1446         PR c++/14136
1447         * parser.c (cp_parser_unqualified_id): Do not issue error message
1448         for typedef-name as destructor declarator when performing an
1449         uncommitted tentative parse.
1450
1451 2005-01-01  Steven Bosscher  <stevenb@suse.de>
1452
1453         PR middle-end/17544
1454         * decl.c (finish_function): Fix comment.  Annotate the compiler
1455         generated return with the current file name and line 0.
1456
1457 2004-12-31  Richard Henderson  <rth@redhat.com>
1458
1459         PR middle-end/17799
1460         * call.c (make_temporary_var_for_ref_to_temp): Set DECL_IGNORED_P.
1461         * class.c (build_vtable): Don't conditionallize setting it
1462         based on DWARF2_DEBUG.
1463         (layout_class_type): Set DECL_IGNORED_P.
1464         * decl2.c (get_guard): Likewise.
1465         * rtti.c (get_tinfo_decl, build_lang_decl): Likewise.
1466         * tree.c (build_local_temp): Likewise.
1467
1468 2004-12-30  Mark Mitchell  <mark@codesourcery.com>
1469
1470         * cp-tree.h (cp_declarator): Split "name" field into
1471         qualifying_scope and unqualified_name.
1472         * decl.c (get_scope_of_declarator): Adjust accordingly.
1473         (grokdeclarator): Likewise.
1474         * decl2.c (grokfield): Likewise, and adjust call to
1475         do_class_using_decl.
1476         * name-lookup.c (do_class_using_decl): Split "decl" into
1477         "scope" and "name".  Remove unnecessary code.
1478         * name-lookup.h (do_class_using_decl): Adjust declaration.
1479         * parser.c (make_id_declarator): Split "id" into qualifying_scope
1480         and unqualified_name.
1481         (cp_parser_using_declaration): Adjust call to do_class_using_decl.
1482         (cp_parser_direct_declarator): Adjust to handle the fact that
1483         cp_parser_declarator_id no longer returns a SCOPE_REF.
1484         (cp_parser_direct_declarator): Likewise.
1485         (cp_parser_declarator_id): Do not create a SCOPE_REF for qualified
1486         names.
1487         (cp_parser_member_declaration): Adjust call to make_id_declarator.
1488         (cp_parser_check_declarator_template_parameters): Do not expect a
1489         SCOPE_REF.
1490
1491         * decl.c (duplicate_decls): Call ggc_free on declarations we will
1492         not be needing any longer.
1493
1494         PR c++/19190
1495         * cvt.c (convert_to_void): Do not use STRIP_NOPs.
1496
1497 2004-12-28  Richard Henderson  <rth@redhat.com>
1498
1499         PR inline-asm/15740
1500         * semantics.c (finish_asm_stmt): Resolve asm names.  Validate input
1501         constraints.  Mark memory inputs addressable.
1502
1503 2004-12-27  Jason Merrill  <jason@redhat.com>
1504
1505         * decl.c (expand_static_init): Don't use shortcut if
1506         targetm.relaxed_ordering.
1507
1508 2004-12-27  Mark Mitchell  <mark@codesourcery.com>
1509
1510         PR c++/19149
1511         * decl.c (check_tag_decl): Robustify.
1512
1513 2004-12-23  Mark Mitchell  <mark@codesourcery.com>
1514
1515         PR c++/17595
1516         * parser.c (cp_parser_error): Issue better messages about
1517         #pragma in locations where it is not permitted.
1518
1519         PR c++/17413
1520         * pt.c (check_instantiated_args): Remove bogus SFINAE code.
1521
1522         * cvt.c (convert_to_void): Fix typo in comment.
1523
1524 2004-12-23  Alexandre Oliva  <aoliva@redhat.com>
1525
1526         PR c++/18962
1527         * pt.c (check_explicit_specialization): Use the argument list from
1528         the definition in a template function specialization definition.
1529
1530 2004-12-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1531
1532         PR c++/18733
1533         * pt.c (check_explicit_specialization): Use special logic to validate
1534         befriended specializations.
1535
1536 2004-12-22  Mark Mitchell  <mark@codesourcery.com>
1537
1538         * rtti.c (emit_support_tinfos): Avoid using C99 semantics.
1539
1540         PR c++/18464
1541         * call.c (build_this): In templates, do not bother with
1542         build_unary_op.
1543         * typeck.c (unary_complex_lvalue): In a template, always refuse
1544         simplifications.
1545
1546         PR c++/18492
1547         * cp-gimplify.c (cp_genericize): Relax assertion.
1548
1549         PR c++/11224
1550         * cvt.c (convert_to_void): Warn about unused values.
1551
1552         PR c++/18257
1553         * rtti.c (emit_support_tinfos): On systems without weak symbols,
1554         emit the runtime library type-info objects as non-COMDAT.
1555
1556 2004-12-21  Mark Mitchell  <mark@codesourcery.com>
1557
1558         PR c++/18378
1559         * call.c (convert_like_real): Do not permit the use of a copy
1560         constructor to copy a packed field.
1561
1562         PR c++/19063
1563         * decl.c (grokdeclarator): Return error_mark_node, not
1564         void_type_node, to indicate errors.
1565         * parser.c (cp_parser_template_parameter_list): Robustify.
1566         (cp_parser_template_parameter): Likewise.
1567
1568         PR c++/19034
1569         * tree.c (cp_tree_equal): Handle OVERLOAD.
1570
1571 2004-12-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1572
1573         * decl.c (define_label): Use POP_TIMEVAR_AND_RETURN.
1574         * name-lookup.c (pushdecl_class_level): Likewise.
1575
1576 2004-12-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1577
1578         * name-lookup.c (pushtag): Add missing POP_TIMEVAR_AND_RETURN.
1579
1580 2004-12-21  Andrew Pinski  <pinskia@physics.uc.edu>
1581
1582         PR c++/18984
1583         * cp-gimplify.c (cp_genericize_r): Don't insert first but instead
1584         check to see if contains the pointer.  Insert the statement before
1585         returning.
1586
1587 2004-12-21  Nathan Sidwell  <nathan@codesourcery.com>
1588
1589         PR c++/14075
1590         * decl.c (check_initializer): Check string initializer of array is
1591         not parenthesized.
1592         * cp-tree.h (PAREN_STRING_LITERAL_P): New.
1593         * semantics.c (finish_parenthesized_expr): Mark a STRING_CST.
1594         * error.c (dump_expr): <STRING_CST case> Add parens, if needed.
1595
1596         * cp-tree.def (TEMPLATE_TYPE_PARM,
1597         BOUND_TEMPLATE_TEMPLATE_PARM, TYPE_OF_TYPE, TYPENAME_TYPE): Reorder
1598         for better code efficiency.
1599         * cp-tree.h (CLASS_TYPE_P): Short circuit IS_AGGR_TYPE check.
1600         (CAN_HAVE_FULL_LANG_DECL_P): Reorder for better optimization.
1601         (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P,
1602         INTEGRAL_OR_ENUMERATION_TYPE_P, SCALAR_TYPE_P,
1603         CP_AGGREGATE_TYPE_P, TYPE_PTROB_P, TYPE_REF_OBJ_P,
1604         TYPE_PTROBV_P): Likewise.
1605
1606         PR c++/18975
1607         * method.c (do_build_copy_constructor): Refactor. Don't const
1608         qualify a mutable field.
1609         (do_build_assign_ref): Likewise.
1610
1611 2004-12-20  Matt Austern <austern@apple.com>
1612
1613         PR c++/19044
1614         * decl.c (make_rtl_for_nonlocal_decl): Use
1615         set_builtin_user_assembler_name.
1616
1617 2004-12-19  Mark Mitchell  <mark@codesourcery.com>
1618
1619         * cp-tree.h (note_decl_for_pch): New function.
1620         * class.c (build_clone): Call note_decl_for_pch.
1621         * semantics.c (finish_member_declaration): Likewise.
1622         (note_decl_for_pch): New function.
1623
1624 2004-12-17  Steven Bosscher  <stevenb@suse.de>
1625
1626         * init.c (build_zero_init): max_index is the number of
1627         elements, minus 1.
1628
1629 2004-12-17  Nathan Sidwell  <nathan@codesourcery.com>
1630
1631         PR c++/18721
1632         * class.c (add_method): Do not push conversion operators into a
1633         binding level.
1634
1635         * cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE_TYPE): Reformat.
1636         * error.c (dump_decl): <TYPE_DECL case> Remove extraneous braces.
1637
1638 2004-12-16  Nathan Sidwell  <nathan@codesourcery.com>
1639
1640         PR c++/18905
1641         * cp-tree.h (integral_constant_value): Declare.
1642         * call.c (null_ptr_cst_p): Use integral_constant_value, not
1643         decl_constant_value.
1644         (convert_like_real): Likewise.
1645         * class.c (check_bitfield_decl): Likewise.
1646         * cvt.c (ocp_convert): Likewise.
1647         (convert): Remove unnecessary decl_constant_value call.
1648         * decl.c (compute_array_index_type): Use integral_constant_value,
1649         not decl_constant_value.
1650         (build_enumerator): Likewise.
1651         * decl2.c (grokfield): Likewise.
1652         * init.c (decl_constant_value): Simplify.
1653         (integral_constant_value): New.
1654         * pt.c (fold_decl_constant_value): Use integral_constant_value,
1655         remove subsequent check.
1656         (tsubst): Use integral_constant_value, not decl_constant_value.
1657         (tsubst_copy, unify): Likewise.
1658         * typeck.c (decay_conversion): Likewise.
1659         (build_compound_expr): Remove unnecessary decl_constant_value
1660         calls.
1661         (build_static_cast_1, build_reinterpret_cast_1):
1662         (convert_for_assignment): Remove comment about not calling
1663         decl_constant_value.
1664
1665 2004-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1666
1667         PR c++/18825
1668         * pt.c (instantiate_class_template): Set input_location for
1669         friend function.
1670         (tsubst_friend_function): Don't set input_location here.
1671         Make sure the context is complete if necessary.
1672
1673 2004-12-15  Nathan Sidwell  <nathan@codesourcery.com>
1674
1675         PR c++/18981
1676         * parser.c (cp_parser_lookup_name): Remove unneeded TYPENAME_TYPE
1677         flag setting.
1678
1679 2004-12-14  Mark Mitchell  <mark@codesourcery.com>
1680
1681         PR c++/18738
1682         * decl.c (make_typename_type): Do not handle namespace-scoped
1683         names here.
1684         (tag_name): Handle typename_type.
1685         (check_elaborated_type_specifier): Handle typenames.
1686         * parser.c (cp_parser_diagnose_invalid_type_name): Improve
1687         comment.
1688         (cp_parser_elaborated_type_specifier): Use
1689         cp_parser_diagnose_invalid_type_name.
1690
1691 2004-12-14  Andrew Pinski  <pinskia@physics.uc.edu>
1692
1693         PR c++/18965
1694         * init.c (build_zero_init): If the max_index is 0, there is no
1695         need to create a RANGE_EXPR.
1696
1697 2004-12-14  Mark Mitchell  <mark@codesourcery.com>
1698
1699         PR c++/18793
1700         * cp-objcp-common.c (cp_expr_size): Loosen assertion.
1701
1702 2004-12-14  Nathan Sidwell  <nathan@codesourcery.com>
1703
1704         PR c++/18949
1705         * pt.c (tsubst_copy_and_build): <INDIRECT_REF case> Check that a
1706         REFERENCE_REF_P is dereferencing a reference type.
1707         * typeck.c (build_static_cast): Convert from reference even in a
1708         template.
1709         (build_reinterpret_cast, build_const_cast, build_c_cast): Likewise.
1710
1711 2004-12-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1712
1713         * parser.c (cp_parser_uncommitted_to_tentative_parse_p): New function.
1714         (cp_parser_name_lookup_error): Use it.
1715         (cp_parser_check_for_invalid_template_id): Likewise.
1716         (cp_parser_skip_to_closing_parenthesis): Likewise.
1717         (cp_parser_nested_name_specifier_opt): Likewise.
1718         (cp_parser_simple_declaration, cp_parser_template_id): Likewise.
1719         (cp_parser_parameter_declaration_list): Likewise.
1720         (cp_parser_parameter_declaration): Likewise.
1721         (cp_parser_template_name): Let cp_parser_simulate_error perform
1722         the checking.
1723         (cp_parser_committed_to_tentative_parse): Remove.
1724
1725 2004-12-13  Andrew Pinski  <pinskia@physics.uc.edu>
1726
1727         PR c++/18968
1728         * class.c (build_base_path): Convert the zero constant to the correct
1729         type when comparing.
1730
1731 2004-12-13  Mark Mitchell  <mark@codesourcery.com>
1732
1733         PR c++/18925
1734         * class.c (layout_class_type): Determine the visibility of static
1735         data members.
1736
1737 2004-12-12  Roger Sayle  <roger@eyesopen.com>
1738
1739         PR middle-end/12454
1740         * cp-gimplify.c (gimplify_if_stmt): Optimize the case where the
1741         condition is a constant and the unexecuted clause is empty.
1742
1743 2004-12-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1744
1745         PR c++/18731
1746         * parser.c (cp_parser_class_head): Reject typedef-name in class head.
1747
1748 2004-12-09  Matt Austern  <austern@apple.com>
1749
1750         PR c++/18514
1751         * name-lookup.c (do_nonmember_using_decl): A real function
1752         declaration takes precedence over an anticipated declaration.
1753
1754 2004-12-09  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1755
1756         * parser.c (cp_parser_member_declaration): Fix comment typo.
1757
1758 2004-12-09  Alexandre Oliva  <aoliva@redhat.com>
1759
1760         PR c++/18757
1761         * parser.c (cp_parser_template_id): Don't create a CPP_TEMPLATE_ID
1762         if parsing failed.
1763
1764 2004-12-09  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1765
1766         PR c++/18073
1767         * typeck.c (build_reinterpret_cast_1): Allow cast from vector type.
1768
1769 2004-12-09  Nathan Sidwell  <nathan@codesourcery.com>
1770
1771         PR c++/16681
1772         * init.c (build_zero_init): Build a RANGE_EXPR for an array
1773         initializer.
1774
1775 2004-12-08  Kelley Cook  <kcook@gcc.gnu.org>
1776
1777         * typeck.c: Remove DOS line endings.
1778
1779 2004-12-08  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1780
1781         PR c++/18100
1782         * decl.c (lookup_and_check_tag): Diagnose nested class with
1783         the same name as enclosing class.
1784
1785 2004-12-08  Nathan Sidwell  <nathan@codesourcery.com>
1786
1787         PR c++/18803
1788         * cp-tree.h (REFERENCE_REF_P): New.
1789         (CPTI_TYPE_INFO_TYPE): Rename to ...
1790         (CPTI_CONST_TYPE_INFO_TYPE): ... here.
1791         (CPTI_TYPE_INFO_REF_TYPE): Remove.
1792         (type_info_type_node): Rename to ...
1793         (const_type_info_type_node): ... here.
1794         (type_info_ref_type): Remove.
1795         * call.c (build_user_type_conversion): Reformat.
1796         (resolve_args): Do not convert_from_reference.
1797         (build_object_call): Call convert_from_reference.
1798         (prep_operand): Do not convert_from_reference.
1799         (build_new_method_call): Likewise.
1800         * class.c (build_vfield_ref): Likewise.
1801         * cvt.c (convert_to_reference): Likewise.
1802         (convert_from_reference): Build INDIRECT_REF here, not with
1803         build_indirect_ref.
1804         (convert_force): Do not convert_from_reference.
1805         (build_expr_type_conversion): Likewise.
1806         * decl.c (grok_reference_init): Likewise.
1807         * decl2.c (delete_sanity): Likewise.
1808         * except.c (initialize_handler_parm): Use POINTER_TYPE_P.
1809         * init.c (build_dtor_call): Do not convert_from_reference.
1810         * parser.c (cp_parser_template_argument): Unwrap indirected
1811         reference. Allow TEMPLATE_PARM_INDEX as an object parm.
1812         * pt.c (tsubst_copy_and_build) <case INDIRECT_REF>: Use
1813         convert_from_reference, if indicated.
1814         <case CALL_EXPR>: Do not convert_from_reference.
1815         <case PARM_DECL, VAR_DECL>: Convert_from_reference if needed.
1816         (tsubst_initializer_list): Do not convert_from_reference.
1817         * rtti.c (init_rtti_processing): Adjust node creation.
1818         (throw_bad_typeid): Use const_type_info_type_node.
1819         Do not convert_from_reference.
1820         (typeid_ok_p): Use const_type_info_type_node.
1821         (build_typeid, get_typeid): Always return type_info typed node.
1822         (build_dynamic_cast_1): Dont convert_from_reference. Refactor.
1823         * semantics.c (finish_stmt_expr_expr): Do not
1824         convert_from_reference.
1825         (finish_id_expression): Convert_from_reference as appropriate.
1826         * typeck.c (decay_conversion): Do not convert_from_reference.
1827         (finish_class_member_access_expr): Likewise.
1828         (build_indirect_ref): Use POINTER_TYPE_P.
1829         (convert_arguments): Do not convert_from_reference.
1830         (build_modify_expr): Likewise.
1831         (convert_for_initialization): Likewise.
1832         * typeck2.c (build_x_arrow): Likewise.
1833
1834 2004-12-07  Ziemowit Laski  <zlaski@apple.com>
1835
1836         * cp-tree.h (struct lang_type_class): Rename 'objc_protocols'
1837         field to 'objc_info'.
1838
1839 2004-12-07  Kazu Hirata  <kazu@cs.umass.edu>
1840
1841         * pt.c: Replace a use of first_rtl_op with TREE_CODE_LENGTH.
1842
1843 2004-12-07  Roger Sayle  <roger@eyesopen.com>
1844
1845         * name-lookup.c (leave_scope): We only need to update
1846         class_binding_level when leaving a class scope.
1847
1848 2004-12-06  Ziemowit Laski  <zlaski@apple.com>
1849
1850         * cp-tree.h (struct lang_type_class): Add 'objc_protocols' field.
1851
1852 2004-12-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1853
1854         PR c++/17011, c++/17971
1855         * pt.c (tsubst_copy) <FIELD_DECL case>: Check and diagnose
1856         invalid field.
1857         (tsubst_copy_and_build) <COMPONENT_REF case>: Check
1858         error_mark_node after member substitution.
1859         * semantics.c (finish_id_expression): Call
1860         finish_non_static_data_member for non-dependent FIELD_DECL.
1861
1862 2004-12-03  Nathan Sidwell  <nathan@codesourcery.com>
1863
1864         PR c++/18782
1865         * decl.c (grokdeclarator): Make sure class in pointer to member is
1866         not a namespace.
1867
1868 2004-12-02  Nathan Sidwell  <nathan@codesourcery.com>
1869
1870         PR c++/18318
1871         * parser.c (cp_parser_new_type_id): Move array size expression
1872         checks from here ...
1873         * init.c (build_new): ... to here.
1874
1875 2004-12-02  Nathan Sidwell  <nathan@codesourcery.com>
1876
1877         PR c++/18758
1878         * parser.c (cp_parser_class_head): Return NULL_TREE when
1879         push_template_decl fails.  Update comment.
1880
1881 2004-12-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1882
1883         PR c++/15664, c++/18276
1884         * pt.c (tsubst_decl) <TEMPLATE_DECL case>: Reorganize.  Correctly
1885         tsubst TEMPLATE_DECL that is a TEMPLATE_TEMPLATE_PARM.
1886
1887 2004-12-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1888
1889         PR c++/18123
1890         * parser.c (cp_parser_type_specifier): Catch template declaration
1891         of enum.
1892
1893 2004-12-01  Matt Austern  <austern@apple.com>
1894
1895         * name-lookup.c (namespace_binding): Omit alias check for global
1896         namespace.
1897
1898 2004-12-01  Nathan Sidwell  <nathan@codesourcery.com>
1899
1900         PR c++/18729
1901         * parser.c (cp_parser_class_name): Check decl's type is not
1902         error_mark_node.
1903
1904         PR c++/17431
1905         * call.c (standard_conversion): Add FLAGS parameter. Do not allow
1906         derived to base conversion when checking constructor
1907         accessibility.
1908         (implicit_conversion): Pass FLAGS to standard_conversion.
1909         (check_constructir_callable): Disallow conversion functions.
1910
1911 2004-11-30  Kazu Hirata  <kazu@cs.umass.edu>
1912
1913         * parser.c: Fix comment typos.
1914
1915 2004-11-27  Mark Mitchell  <mark@codesourcery.com>
1916
1917         PR c++/18368
1918         * parser.c (cp_parser_check_for_definition_in_return_type): Take
1919         the defined type as a parameter, and inform the user about the
1920         possibility of a missing semicolon.
1921         (cp_parser_explicit_instantiation): Adjust call to
1922         cp_parser_check_for_definition_in_return_type.
1923         (cp_parser_init_declarator): Likewise.
1924         (cp_parser_member_declaration): Likewise.
1925
1926         PR c++/18674
1927         * cp-tree.def (TYPENAME_TYPE): Remove discussion of implicit
1928         typename from comments.
1929         * cp-tree.h (TYPENAME_IS_ENUM_P): New macro.
1930         (TYPENAME_IS_CLASS_P): Likewise.
1931         (make_typename_type): Change prototype.
1932         * decl.c (struct_typename_info): New type.
1933         (typename_compare): Expect the second argument to be a
1934         typename_info, not a tree.
1935         (build_typename_type): Add tag_type parameter.  Do not create a
1936         new type until necessary.
1937         (make_typename_type): Add tag_type parameter.
1938         * error.c (TYPENAME_TYPE): Print tags other than "typename" if
1939         appropriate.
1940         * friend.c (make_friend_class): Adjust call to make_typename_type.
1941         * parser.c (cp_parser_make_typename_type): Likewise.
1942         (cp_parser_primary_expression): Adjust call to
1943         cp_parser_lookup_name.
1944         (cp_parser_unqualified_id): Adjust calls to cp_parser_class_name.
1945         (cp_parser_class_or_namespace_name): Likewise.
1946         (cp_parser_postfix_expression): Adjust calls to
1947         make_typename_type.
1948         (cp_parser_mem_initializer_id): Adjust calls to
1949         cp_parser_class_name.
1950         (cp_parser_type_parameter): Adjust calls to cp_parser_lookup_name.
1951         (cp_parser_template_name): Likewise.
1952         (cp_parser_template_argument): Likewise.
1953         (cp_parser_type_name): Adjust call to cp_parser_class_name.
1954         (cp_parser_elaborated_type_specifier): Adjust calls to
1955         make_typename_type and cp_parser_lookup_name.
1956         (cp_parser_namespace_name): Likewise.
1957         (cp_parser_class_name): Replace type_p parameter with tag_type.
1958         Adjust calls to make_typename_type and cp_parser_lookup_name.
1959         (cp_parser_class_head): Adjust calls to cp_parser_class_name.
1960         (cp_parser_base_specifier): Likewise.
1961         (cp_parser_lookup_name): Replace is_type parameter with tag_type.
1962         Adjust calls to make_typename_type and lookup_qualified_name.
1963         (cp_parser_lookup_name_simple): Adjust call to
1964         cp_parser_lookup_name.
1965         (cp_parser_constructor_declarator_p): Adjust call to
1966         cp_parser_class_name.
1967         * pt.c (convert_template_argument): Adjust all to
1968         make_typename_type.
1969         (tsubst_decl): Do not pre-substitute the type of the declaration.
1970         (tsubst): Hand off declarations more quickly.  Adjust call to
1971         make_typename_type.
1972
1973         PR c++/18512
1974         * parser.c (cp_parser_postfix_dot_deref_expression): Robustify.
1975
1976 2004-11-29  Daniel Jacobowitz  <dan@codesourcery.com>
1977
1978         PR c/7544
1979         * Make-lang.in (cp/decl2.o): Update dependencies.
1980         * decl2.c (finish_file): Call maybe_apply_pending_pragma_weaks.
1981
1982 2004-11-29  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1983
1984         PR c++/18652
1985         * name-lookup.c (pushtag): Change return type to tree.
1986         * cp-tree.h (pushtag): Adjust declaration.
1987         * decl.c (xref_tag, start_enum): Use return value of pushtag.
1988         * pt.c (push_template_decl_real): Return immediately if
1989         pushdecl_namespace_level returns error_mark_node.
1990
1991 2004-11-27  Kazu Hirata  <kazu@cs.umass.edu>
1992
1993         * pt.c: Fix a comment typo.
1994
1995 2004-11-27  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1996
1997         Friend class name lookup 4/n
1998         * class.c (pushclass): Don't call cxx_remember_type_decls.
1999         * cp-tree.h (clear_anon_tags): Remove declaration.
2000         * decl.c (grokdeclarator): Don't call lookup_tag_reverse.
2001         * name-lookup.c (binding_entry_free, binding_table_free): Comment
2002         out functions.
2003         (binding_table_find_anon_type, binding_table_reverse_maybe_remap,
2004         binding_table_remove_anonymous_types, cxx_remember_type_decls,
2005         bt_print_entry, clear_anon_tags, follow_tag_typedef, lookup_tag,
2006         lookup_tag_reverse): Remove
2007         (begin_scope, leave_scope, kept_level_p, print_binding_level):
2008         Don't use type_decls field in cp_binding_level.
2009         (maybe_process_template_type_declaration, pushtag): Set
2010         CLASSTYPE_NESTED_UTDS directly.
2011         * name-lookup.h (binding_table_remove_anonymous_types,
2012         cxx_remember_type_decls, lookup_tag, lookup_tag_reverse): Remove
2013         declaration.
2014         (cp_binding_level): Remove type_decls field.
2015
2016 2004-11-26  Kazu Hirata  <kazu@cs.umass.edu>
2017
2018         * typeck.c: Fix a comment typo.
2019
2020 2004-11-25  Mark Mitchell  <mark@codesourcery.com>
2021
2022         PR c++/18445
2023         * class.c (instantiate_type): Treat NON_DEPENDENT_EXPRs with
2024         unknown_type as non matching.  Tidy up.
2025         * pt.c (build_non_dependent_expr): Do not build a
2026         NON_DEPENDENT_EXPR for a VAR_DECL.
2027
2028         PR c++/18001
2029         * cp-tree.h (lvalue_or_else): Remove declaration.
2030         * tree.c (lvalue_or_else): Remove.
2031         * typeck.c (build_unary_op): Adjust call to lvalue_or_else.
2032         (build_modify_expr): Likewise.
2033
2034         PR c++/18625
2035         * decl.c (duplicate_decls): Return error_mark_node on error, as
2036         specified.
2037
2038         PR c++/18466
2039         * decl.c (grokvardecl): Keep track of whether or not a there was
2040         explicit qualification.
2041         * name-lookup.c (set_decl_namespace): Complain about explicit
2042         qualification of a name within its own namespace.
2043
2044         PR c++/18545
2045         * typeck.c (check_return_expr): Robustify.
2046
2047 2004-11-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2048
2049         Friend class name lookup 3/n, PR c++/3332
2050         * name-lookup.c (push_inner_scope, pop_inner_scope): New functions.
2051         (lookup_type_scope): Don't deal with name from user declaration
2052         specially.
2053         * name-lookup.h (push_inner_scope, pop_inner_scope): Add declarations.
2054         * parser.c (cp_parser_class_specifier): Use push_inner_scope and
2055         pop_inner_scope.
2056
2057 2004-11-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2058
2059         Friend class name lookup 2/n, PR c++/14513, c++/15410
2060         * name-lookup.c (lookup_name_real): Simplify.
2061         (lookup_type_scope): Add SCOPE parameter.  Handle friend class
2062         lookup.
2063         * name-lookup.h (tag_scope): New enum type.
2064         (lookup_type_scope): Adjust declaration.
2065         * decl.c (lookup_and_check_tag, xref_tag, xref_tag_from_type):
2066         Change bool parameter GLOBALIZED to TAG_SCOPE parameter SCOPE.
2067         (start_enum): Likewise.  Add assertion test that NAME is
2068         IDENTIFIER_NODE.  Use anonymous name for dummy ENUMERAL_TYPE in
2069         case of error.
2070         * cp-tree.h (xref_tag, xref_tag_from_type): Adjust declarations.
2071         * parser.c (cp_parser_elaborated_type_specifier,
2072         cp_parser_class_head): Adjust call to xref_tag.
2073         * pt.c (lookup_template_class, instantiate_class_template):
2074         Likewise.
2075         * rtti.c (init_rtti_processing, build_dynamic_cast_1,
2076         tinfo_base_init, emit_support_tinfos): Likewise.
2077
2078 2004-11-25  Joseph S. Myers  <joseph@codesourcery.com>
2079
2080         * g++spec.c, lex.c: Avoid ` as left quote in diagnostics.
2081
2082 2004-11-24  Mark Mitchell  <mark@codesourcery.com>
2083
2084         PR c++/17473
2085         * name-lookup.c (supplement_binding): Do not allow typedefs to be
2086         redefined in class scope.
2087
2088         PR c++/18285
2089         * parser.c (cp_parser_set_decl_type_spec): Do not try to allow
2090         redefinitions of builtin types other that "bool" or "wchar_t".
2091
2092 2004-11-24  Steven Bosscher  <stevenb@suse.de>
2093
2094         * decl.c (cxx_init_decl_processing): Don't clear
2095         flag_inline_functions.
2096
2097 2004-11-24  Mark Mitchell  <mark@codesourcery.com>
2098
2099         * pt.c (tsubst_function_type): Do not permit function types which
2100         return arrays or functions.
2101
2102         PR c++/18586
2103         * parser.c (cp_parser_init_declarator): Do not pop scope twice.
2104
2105         PR c++/18530
2106         * cp-tree.h (CTOR_NAME): Remove.
2107         (DTOR_NAME): Remove.
2108         * decl.c (initialize_predefined_identifiers): Add spaces to the
2109         end of constructor and destructor names.
2110
2111 2004-11-24  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
2112
2113         PR c++/8929
2114         * decl.c (start_decl): Check for invalid specialization headers.
2115
2116 2004-11-24  Paolo Bonzini  <bonzini@gnu.org>
2117
2118         PR c++/16882
2119
2120         * call.c (standard_conversion): Move check for conversions between
2121         vector pointers...
2122         * typeck.c (ptr_reasonably_similar): ... here.
2123
2124 2004-11-23  Ben Elliston  <bje@au.ibm.com>
2125
2126         * cp-tree.h (context_as_string): Remove extern.
2127         * error.c (context_as_string): Remove.
2128
2129         * cp-tree.h (cp_type_qual_from_rid): Remove extern.
2130         * lex.c (cp_type_qual_from_rid): Remove.
2131
2132         * cp-tree.h (do_poplevel): Remove extern.
2133         (check_multiple_declarators): Likewise.
2134         * semantics.c (do_poplevel): Make static.
2135         (check_multiple_declarators): Remove.
2136
2137         * cp-tree.h (check_final_overrider): Remove extern.
2138         * search.c (check_final_overrider): Make static.
2139
2140         * cp-tree.h (build_artificial_parm): Remove extern.
2141         * decl2.c (build_artificial_parm): Make static.
2142
2143 2004-11-22  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
2144
2145         PR c++/18354
2146         * typeck.c (build_unary_op) <CONVERT_EXPR, NEGATE_EXPR>: Unify code.
2147         Make sure the result is always a rvalue.
2148
2149 2004-11-16  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
2150
2151         * decl.c (start_preparsed_function): Call check_function_type even
2152         in templates.
2153         (require_complete_types_for_parms): Skip dependent types.
2154         (check_function_type): Likewise.
2155
2156 2004-11-16  Steven Bosscher  <stevenb@suse.de>
2157
2158         * Make-lang.in (cp/decl.o, cp/search.o): Don't depend on stack.h.
2159         * search.c: Don't include it.
2160
2161 2004-11-15  Andrew Pinski  <pinskia@physics.uc.edu>
2162
2163         * cp-gimplify.c: Include pointer-set.h
2164         (cp_genericize_r): Use pointer_sets instead of a hashtable.
2165         Also instert the new statement for CLEANUP_STMT.
2166         (cp_genericize): Use pointer_sets instead of a hashtable.
2167         * Make-lang.in (cp-gimplify.o): Depend on pointer-set.h.
2168
2169 2004-11-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2170
2171         Friend class name lookup 1/n, PR c++/18471
2172         * decl.c (lookup_and_check_tag): New function.
2173         (xref_tag, start_enum): Use it.
2174         (check_elaborated_type_specifier): Move TEMPLATE_TYPE_PARM check
2175         before !DECL_IMPLICIT_TYPEDEF_P.  Also display previously declared
2176         location.
2177         * name-lookup.c (lookup_name_current_level): Rename to ...
2178         (lookup_name_innermost_nonclass_level): ... this.
2179         (lookup_type_scope): New function.
2180         * name-lookup.h (lookup_name_current_level): Rename to ...
2181         (lookup_name_innermost_nonclass_level): ... this.
2182         (lookup_type_scope): Add declaration.
2183
2184 2004-11-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2185
2186         PR c++/17344
2187         * pt.c (coerce_template_parms): Only emit error message about
2188         invalid template argument when TF_ERROR.
2189
2190 2004-11-12  Mark Mitchell  <mark@codesourcery.com>
2191
2192         PR c++/18389
2193         * decl.c (start_decl): Make sure to set *pop_scope_p.  Return
2194         error_mark_node to indicate errors.
2195
2196         PR c++/18429
2197         * parser.c (cp_parser_direct_declarator): Disallow non-constant
2198         array bounds when not inside a function.
2199
2200         PR c++/18436
2201         * pt.c (tsubst_copy_and_build): Do not do Koenig lookup when an
2202         unqualified name resolves to a member function.
2203
2204         PR c++/18407
2205         * pt.c (tsubst_copy_and_build): Handle qualified names used from a
2206         derived class correctly.
2207
2208         * decl2.c (import_export_decl): Fix typo in comment.
2209         * tree.c (pod_type_p): Likewise.
2210
2211 2004-11-10  Andrew Pinski  <pinskia@physics.uc.edu>
2212
2213         * typeck.c (cxx_mark_addressable): Add braces around the first if.
2214
2215 2004-11-10  Adam Nemet  <anemet@lnxw.com>
2216
2217         PR middle-end/18160
2218         * typeck.c (cxx_mark_addressable): Issue an error if address of an
2219         explicit register variable is requested.
2220
2221 2004-11-10  Nathan Sidwell  <nathan@codesourcery.com>
2222
2223         PR c++/18143
2224         * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK): New.
2225         (struct lang_decl_flags): Add thunk_p flag.
2226         (struct lang_decl): Remove separate fixed_offset. Place
2227         cloned_function and fixed_offset into union.
2228         (DECL_CLONED_FUNCTION_P, DECL_CLONED_FUNCTION): Adjust.
2229         (DECL_THUNK_P, SET_DECL_THUNK_P): Adjust.
2230         (THUNK_FIXED_OFFSET): Adjust.
2231         * method.c (make_thunk): Adjust.
2232
2233 2004-11-09  Mark Mitchell  <mark@codesourcery.com>
2234
2235         PR c++/18369
2236         * init.c (build_new_1): Handle parenthesized type-ids that name an
2237         array type.  Tidy.
2238
2239 2004-11-09  Joseph S. Myers  <joseph@codesourcery.com>
2240
2241         * call.c, class.c, decl.c, decl2.c, error.c, mangle.c, parser.c,
2242         pt.c, search.c, semantics.c, typeck.c: Use %q, %< and %> for
2243         quoting in diagnostics.
2244         * parser.c (cp_parser_sizeof_operand): Use '' instead of `' for
2245         quoting in printf format.
2246         * decl.c (duplicate_decls, start_decl): Use %qD instead of
2247         unquoted %D.
2248
2249 2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>
2250
2251         * class.c, decl.c, lex.c, name-lookup.c, parser.c, pt.c,
2252         search.c, typeck2.c: Fix comment formatting.
2253
2254 2004-11-04  Ulrich Weigand  <uweigand@de.ibm.com>
2255
2256         PR tree-optimization/18184
2257         * cp-objcp-common.c (cxx_types_compatible_p): Do not treat pointers
2258         of different modes or alias-all flags as equivalent.
2259         * typeck.c (comptypes): Likewise.
2260
2261 2004-11-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
2262
2263         DR 49, 100
2264         * cp-tree.h (TYPE_REF_OBJ_P): New macro.
2265         (TYPE_PTR_P, TYPE_PTROB_P, TYPE_PTROBV_P, TYPE_PTRFN_P,
2266         TYPE_REFFN_P): Document.
2267         (fold_decl_constant_value): New prototype.
2268         * pt.c (convert_nontype_argument_function): Rewrite and extract
2269         parts into...
2270         (fold_decl_constant_value, convert_nontype_argument_function): New.
2271         (lookup_template_class): Add comment about useless double call.
2272         * mangle.c (write_expression): Strip conversions before lowering
2273         pointer to members.
2274         * cvt.c (ocp_convert): Check LOOKUP_COMPLAIN for a pedwarn. Disallow
2275         enum to enum conversion.
2276
2277 2004-11-02  Mark Mitchell  <mark@codesourcery.com>
2278
2279         PR c++/18124
2280         * parser.c (cp_parser_type_parameter): Robustify.
2281
2282         PR c++/18155
2283         * parser.c (cp_parser_single_declaration): Disallow template
2284         typedefs.
2285
2286         PR c++/18177
2287         * typeck.c (build_const_cast): Use error_operand_p.
2288
2289 2004-11-02  Ziemowit Laski  <zlaski@apple.com>
2290
2291         * cp-lang.c (cxx_types_compatible_p): Remove prototype and definition.
2292         (LANG_HOOKS_TYPES_COMPATIBLE_P): Move to cp-objcp-common.h.
2293         * cp-objcp-common.c (cxx_types_compatible_p): Moved definition here
2294         from cp-lang.c.
2295         * cp-objcp-common.h (cxx_types_compatible_p): Moved prototype here
2296         from cp-lang.c.
2297         (LANG_HOOKS_TYPES_COMPATIBLE_P): Moved here from cp-lang.c.
2298
2299 2004-11-01  Nathan Sidwell  <nathan@codesourcery.com>
2300
2301         PR c++/18064
2302         * search.c (check_final_overrider): Deprecate gnu covariant extension.
2303
2304 2004-10-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2305
2306         Convert diagnostics to use quoting flag q 9/n
2307         * typeck.c (build_x_unary_op, convert_member_func_to_ptr,
2308         get_delta_difference):  Use new quotation style.
2309         * repo.c (reopen_repo_file_for_write): Likewise.
2310         * pt.c (do_type_instantiation): Likewise.
2311         * parser.c (cp_parser_diagnose_invalid_type_name):
2312         * name-lookup.c (push_overloaded_decl, set_decl_namespace):
2313         * error.c (cp_print_error_function,
2314         print_instantiation_full_context): Likewise.
2315         * decl.c (define_label, grok_reference_init,
2316         maybe_deduce_size_from_array_init, revert_static_member_fn):
2317         * decl2.c (check_classfn): Likewise.
2318         * class.c (add_method, check_field_decls, layout_class_type,
2319         resolve_address_of_overloaded_function): Likewise.
2320         * call.c (build_x_va_arg, build_over_call): Likewise.
2321
2322 2004-10-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2323
2324         Convert diagnostics to use quoting flag q 8/n
2325         * cvt.c (cp_convert_to_pointer, warn_ref_binding,
2326         convert_to_reference, ocp_convert, convert_to_void
2327         cp_convert_to_pointer): Use new quotation style.
2328
2329 2004-10-31  Mark Mitchell  <mark@codesourcery.com>
2330
2331         PR c++/15172
2332         * typeck2.c (store_init_value): Use split_nonconstant_init even
2333         for types that require construction.
2334
2335 1004-10-28  Matt Austern  <austern@apple.com>
2336
2337         PR c++/17542
2338         * cp-tree.h (class_key_or_enum_as_string): Declare.
2339         * error.c (class_key_or_enum): Rename to class_key_or_enum_as_string
2340         and remove static qualifier.
2341         * decl.c (shadow_tag): Warn about ignored attributes in class/struct/
2342         union/enum declaration.
2343
2344 2004-10-29  Kazu Hirata  <kazu@cs.umass.edu>
2345
2346         * pt.c: Fix a comment typo.
2347
2348 2004-10-28  Nathan Sidwell  <nathan@codesourcery.com>
2349
2350         * typeck.c (composite_pointer_type): Remove comment about DR 195.
2351         (build_reinterpret_cast_1): Revert DR195 patch. Only emit a
2352         warning when being pedantic.
2353         (build_reinterpet_cast, build_c_cast): Adjust.
2354
2355 2004-10-29  Mark Mitchell  <mark@codesourcery.com>
2356
2357         PR c++/17695
2358         * decl.c (grokdeclarator): Mark TYPE_DECLs as abstract when they
2359         appear in a constructor/destructor that will be cloned.
2360
2361 1004-10-28  Matt Austern  <austern@apple.com>
2362
2363         PR c++/14124
2364         * decl.c (finish_enum): Handle packed attribute.
2365         * parser.c (cp_parser_enum_specifier): Process trailing attributes.
2366
2367 2004-10-28  Mark Mitchell  <mark@codesourcery.com>
2368
2369         PR c++/17132
2370         * pt.c (instantiate_class_template): Increment
2371         processing_template_decl when substituting into a member class
2372         template.
2373
2374 2004-10-27  Mark Mitchell  <mark@codesourcery.com>
2375
2376         PR c++/17435
2377         * call.c (convert_like_real): Fix formatting.
2378         (initialize_reference): When binding a temporary to a base class,
2379         ensure that the nominal copy made is to the derived class, not the
2380         base class.
2381
2382         PR c++/18140
2383         * parser.c (cp_parser_next_token_ends_template_argument_p): Do not
2384         include ">>".
2385
2386 2004-10-27  Andrew Pinski  <pinskia@physics.uc.edu>
2387
2388         * decl.c (bad_specifiers): Move the q after the %.
2389
2390 2004-10-27  Andrew Pinski  <pinskia@physics.uc.edu>
2391
2392         * parser.c (cp_parser_diagnose_invalid_type_name): Move the q after
2393         the %.
2394
2395 2004-10-26  Mark Mitchell  <mark@codesourcery.com>
2396
2397         * name-lookup.c (do_namespace_alias): Use FROB_CONTEXT.
2398         * search.c (current_scope): Fix prototype.
2399
2400         PR c++/18093
2401         * search.c (current_scope): Return the innermost non-block scope,
2402         not the innermost non-block, non-namespace scope.
2403         (at_namespace_scope_p): Adjust accordingly.
2404         (dfs_accessible_post): Do not pass namespaces to is_friend.
2405         (dfs_walk_once_accessible_r): Likewise.
2406         * decl.c (grokvardecl): Adjust call to current_scope.
2407         (build_enumerator): Likewise.
2408         * parser.c (cp_parser_using_declaration): Likewise.
2409         (cp_parser_direct_declarator): Use at_namespace_scope_p instead of
2410         current_scope.
2411         (cp_parser_class_head): Adjust call to current_scope.
2412         * name-lookup.c (do_namespace_alias): Set the DECL_CONTEXT for the
2413         alias.
2414
2415         PR c++/18020
2416         * pt.c (tusbst_copy_and_build): Resolve enumeration constants to
2417         their underlying values.
2418
2419         PR c++/18161
2420         * typeck.c (build_binary_op): Honor build_type, even when in a
2421         template.
2422
2423 2004-10-26  Nathan Sidwell  <nathan@codesourcery.com>
2424
2425         * parser.c (cp_lexer_get_preprocessor_token): Remove unneeded
2426         padding token checking.
2427
2428 2004-10-25  Andrew Pinski  <pinskia@physics.uc.edu>
2429
2430         PR c++/18121
2431         * decl.c (grokdeclarator) <case cdk_array>: Remove the call
2432         layout_type as it is already done by create_array_type_for_decl.
2433
2434 2004-10-22  Nathan Sidwell  <nathan@codesourcery.com>
2435
2436         PR c++/18095
2437         * parser.c (eof_token): Make const, correctly initialize rid and
2438         location fields.
2439         (struct cp_lexer): Replace buffer_end pointer with buffer_length
2440         count. Adjust.
2441         (cp_lexer_new_main): Directly grow lexer's buffer here.  Don't
2442         zero it out.
2443         (cp_lexer_new_from_tokens): Adjust.
2444         (cp_lexer_grow_buffer): Remove.
2445         (cp_lexer_peek_nth_token, cp_lexer_consume_token,
2446         cp_lexer_purge_token): Add const casts.
2447
2448 2004-10-21  Mark Mitchell  <mark@codesourcery.com>
2449
2450         PR c++/18073
2451         PR c++/10841
2452         * cp-tree.h (convert_to_base): Change prototype.
2453         (build_ptrmemfunc): Likewise.
2454         (convert_ptrmem): New function.
2455         * call.c (struct conversion): Adjust documentation for base_p.
2456         (standard_conversion): Set base_p for ck_pmem conversions as
2457         appropriate.
2458         (convert_like_real): Use convert_to_base for ck_pmem and ck_ptr
2459         conversions.
2460         * class.c (convert_to_base): Handle both pointers and objects.
2461         Add nonnull parameter.
2462         (build_vfield_ref): Adjust call to convert_to_base.
2463         * cvt.c (cp_convert_to_pointer): Adjust call to build_ptrmemfunc.
2464         (convert_force): Likewise.
2465         * typeck.c (build_unary_op): Likewise.
2466         (convert_ptrmem): New function.
2467         (build_static_cast_1): Use it.
2468         (build_reinterpret_cast): Allow conversions to vector types.
2469         (get_delta_difference): Add c_cast_p parameter.
2470         (build_ptrmemfunc): Likewise.  Adjust calls to
2471         get_delta_difference.
2472
2473 2004-10-21  Andrew Pinski  <pinskia@physics.uc.edu>
2474
2475         PR c++/13560
2476         * error.c (cp_error_at): Output the context as it might be
2477         different file as the other location.
2478
2479 2004-10-21  Kazu Hirata  <kazu@cs.umass.edu>
2480
2481         * typeck.c: Fix a comment typo.
2482
2483 2004-10-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2484
2485         PR c++/13495
2486         * decl.c (make_unbound_class_template): Add PARM_LIST parameter.
2487         * cp-tree.h (make_unbound_class_template): Adjust prototype.
2488         * parser.c (cp_parser_lookup_name): Adjust call to
2489         make_unbound_class_template.
2490         (cp_parser_single_declaration): Handle member class of class
2491         template as template friend parsing correctly.
2492         * friend.c (is_friend): Call is_specialization_of_friend for
2493         template friend class.
2494         (make_friend_class): Handle member class of class template as
2495         template friend.
2496         * pt.c (is_specialization_of_friend): Likewise.
2497         (instantiate_class_template): Likewise.
2498         (tsubst): Adjust call to make_unbound_class_template.
2499
2500 2004-10-20  Nathan Sidwell  <nathan@codesourcery.com>
2501
2502         * typeck.c (composite_pointer_type): Add comment about DR 195
2503         (build_reinterpret_cast_1): Add for_reinterpret_cast_p parameter.
2504         Allow function pointer conversions that DR195 suggests.
2505         (build_reinterpret_cast, build_c_cast): Update
2506         build_reinterpret_cast_1 calls.
2507
2508 2004-10-20  Kazu Hirata  <kazu@cs.umass.edu>
2509
2510         * call.c, typeck.c: Fix comment typos.
2511
2512 2004-10-20  Nathan Sidwell  <nathan@codesourcery.com>
2513
2514         * parser.c (cp_token_position): New typedef. Define VEC thereof.
2515         (struct cp_lexer): Allow buffer and buffer_end to be NULL. Make
2516         next_token and last_token cp_token_position. Make saved_tokens a
2517         VEC(cp_token_position).
2518         (eof_token): New static variable.
2519         (CP_SAVED_TOKENS_SIZE): Rename to ...
2520         (CP_SAVED_TOKEN_STACK): ... here.
2521         (cp_lexer_new_main): Adjust main lexer creation and buffer
2522         filling.
2523         (cp_lexer_new_from_tokens): Do not copy the tokens, merely point
2524         to the parent buffer.  Do not append eof token.
2525         (cp_lexer_destroy): Only free buffer if non-NULL. Free token
2526         stack.
2527         (cp_lexer_next_token, cp_lexer_prev_token): Remove.
2528         (cp_lexer_token_position, cp_lexer_token_at): New.
2529         (cp_lexer_saving_tokens): Adjust. Make inline.
2530         (cp_lexer_advance_token, cp_lexer_token_difference): Remove.
2531         (cp_lexer_peek_token_emit_debug_info): Fold into ...
2532         (cp_lexer_peek_token): ... here.
2533         (cp_lexer_peek_nth_token): Don't peek past EOF.
2534         (cp_lexer_consume_token): Set next_token to eof_token, if reaching
2535         EOF.
2536         (cp_lexer_purge_token): Adjust eof setting.
2537         (cp_lexer_purge_tokens_after): Likewise.
2538         (cp_lexer_save_tokens): Push next_token directly.
2539         (cp_lexer_commit_tokens): Adjust.
2540         (cp_lexer_rollback_tokens): Pop next_token directly.
2541         (cp_parser_check_for_invalid_template_id): Adjust token purging.
2542         (cp_parser_translation_unit): Do not consume the EOF.
2543         (cp_parser_nested_name_specifier_opt): Adjust token purging.
2544         (cp_parser_template_id, cp_parser_template_name): Likewise.
2545
2546 2004-10-19  Mark Mitchell  <mark@codesourcery.com>
2547
2548         PR c++/14035
2549         * call.c (struct conversion): Add base_p.
2550         (convert_like): Add c_cast_p argument.
2551         (convert_like_with_conversion): Likewise.
2552         (build_conv): Clear base_p.
2553         (standard_conversion): Set it, for derived-to-base conversions.
2554         (convert_like_real): Add c_cast_p parameter.  Handle pointer
2555         conversions directly rather than relying on ocp_convert.
2556         (perform_direct_initialization_if_possible): Add c_cast_p
2557         parameter.
2558         * cp-tree.h (perform_direct_initialization_if_possible): Change
2559         prototype.
2560         (convert_member_func_to_ptr): New function.
2561         * typeck.c (check_for_casting_away_constness): Add diag_fn
2562         parameter.
2563         (build_static_cast_1): New function, split out from ...
2564         (build_static_cast): ... here.  Use build_static_cast_1.
2565         (build_reinterpret_cast_1): New function, split out from ...
2566         (build_reinterpret_cast): ... here.  Use build_reinterpret_cast_1.
2567         (build_const_cast_1): New function, split out from ...
2568         (build_const_cast): ... here.  Use build_const_cast_1.
2569         (build_c_cast): Rewrite to use build_const_cast_1,
2570         build_static_cast_1, and build_reinterpret_cast_1.
2571         (convert_member_func_to_ptr): New function.
2572
2573 2004-10-19  Paolo Bonzini  <bonzini@gnu.org>
2574
2575         PR c++/18047
2576         * parser.c (enum cp_parser_prec): Give relational expressions
2577         a higher precedence than equality expressions.
2578
2579 2004-10-15  Nathan Sidwell  <nathan@codesourcery.com>
2580
2581         * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Adjust lookup_base call.
2582         (ACCESSIBLY_UNIQUELY_DERIVED_P): Remove.
2583         (PUBLICLY_UNIQUELY_DERIVED_P): Adjust lookup_base call.
2584         (enum base_access): Reorganize.
2585         (accessible_base_p, accessible_p): Add consider_local_p parameter.
2586         * call.c (standard_conversion): Update comment about
2587         DERIVED_FROM_P.
2588         (enforce_access): Adjust accessible_p call.
2589         (build_over_call): Adjust accessible_base_p call.
2590         * class.c (convert_to_base): Adjust lookup_base call.
2591         (build_vtbl_ref_1): Likewise.
2592         (warn_about_ambiguous_bases): Likewise. Add early exit.
2593         * cvt.c (convert_to_pointer_force) Adjust lookup_base call.
2594         * search.c (accessible_base_p): Add consider_local_p parameter.
2595         (lookup_base): Pass consider_local_p to accessible_base_p call.
2596         (friend_accessible_p): Check whether scope is a class member.
2597         Remove unnecessary class template check.
2598         (accessible_p): Add consider_local_p parameter. Use it.
2599         (adjust_result_of_qualified_name_lookup): Adjust lookup_base call.
2600         * tree.c (maybe_dummy_object): Likewise.
2601         * typeck.c (comp_except_type): Use PUBLICLY_UNIQUELY_DERIVED_P.
2602         (build_class_member_access_expr): Adjust lookup_base call.
2603         * typeck2.c (binfo_or_else): Likewise.
2604         * rtti.c (build_dynamic_cast_1): Access can consider friendship
2605         and current scope.
2606
2607 2004-10-17  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
2608
2609         PR c++/17743
2610         * decl2.c (grokfield): Apply attributes also to TYPE_DECLs.
2611
2612 2004-10-16  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
2613
2614         PR c++/10479
2615         * parser.c (cp_parser_parenthesized_expression_list): Fold
2616         non-dependent expressions in attribute lists.
2617
2618 2004-10-15  Mark Mitchell  <mark@codesourcery.com>
2619
2620         PR c++/17042
2621         * decl.c (declare_global_var): Use the return value from pushdecl.
2622
2623         PR c++/14667
2624         * parser.c (cp_parser_simple_declaration): Do not diagnose invalid
2625         type names if we have already found a valid type.
2626         (cp_parser_member_declaration): Likewise.
2627
2628         PR c++/17916
2629         * parser.c (cp_parser_member_specification_opt): Handle
2630         CPP_PRAGMA.
2631
2632 2004-10-15  Kazu Hirata  <kazu@cs.umass.edu>
2633
2634         * dump.c, g++spec.c, repo.c: Update copyright.
2635
2636 2004-10-15  Kazu Hirata  <kazu@cs.umass.edu>
2637
2638         * decl.c: Fix a comment typo.
2639
2640 2004-10-13  Andrew Pinski  <pinskia@physics.uc.edu>
2641
2642         PR c++/16301
2643         * name-lookup.c (parse_using_directive): If we have a
2644         error_mark_node, do not set the decl namespace associations
2645         on it.
2646
2647 2004-10-14  Mark Mitchell  <mark@codesourcery.com>
2648
2649         PR c++/17976
2650         * decl.c (cp_finish_decl): Do not call expand_static_init more
2651         than once for a single variable.
2652
2653 2004-10-14  Matt Austern  <austern@apple.com>
2654
2655         * Make-lang.in (pt.o): depends on pointer-set.h
2656         * cp-tree.h (cp_walk_subtrees): Last argument is pointer_set_t* now.
2657         * pt.c (struct pair_fn_data): Use pointer_set_t, not htab_t
2658         (for_each_template_parm): Convert from htab_t to pointer_set_t.
2659         * tree.c (cp_walk_subtrees): Last argument is pointer_set_t* now.
2660
2661 2004-10-13  Andrew Pinski  <pinskia@physics.uc.edu>
2662
2663         PR c++/17661
2664         * semantics.c (finish_for_expr): Convert expression to void
2665         so that we don't create temporaries for a?b:c.
2666
2667 2004-10-13  Kazu Hirata  <kazu@cs.umass.edu>
2668
2669         * search.c: Fix a comment typo.
2670
2671 2004-10-12  Nathan Sidwell  <nathan@codesourcery.com>
2672
2673         * class.c (dfs_modify_vtables): Simplify condition. Return
2674         dfs_skip_bases as appropriate.
2675         (modify_all_vtables): Walk in pre-order.
2676         * search.c (dfs_walk_all, dfs_walk_once_r,
2677         dfs_walk_once_accessible_r): Assert post order function never
2678         returns dfs_skip_bases.
2679
2680         * search.c (struct lookup_base_data_s): New.
2681         (lookup_base_r): Replace with ...
2682         (dfs_lookup_base): ... this.
2683         (lookup_base): Use dfs_walk_all.
2684
2685 2004-10-12  Kazu Hirata  <kazu@cs.umass.edu>
2686
2687         * search.c: Fix comment typos.
2688
2689 2004-10-11  Mark Mitchell  <mark@codesourcery.com>
2690
2691         PR c++/15786
2692         * parser.c (cp_parser_declarator): Add member_p parameter.
2693         (cp_parser_condition): Adjust calls to cp_parser_declarator.
2694         (cp_parser_explicit_instantiation): Likewise.
2695         (cp_parser_init_declarator): Likewise.
2696         (cp_parser_direct_declarator): Add member_p parameter.  Do not
2697         parse tentatively when parsing the parameters to a member.
2698         (cp_parser_type_id): Adjust calls to cp_parser_declarator.
2699         (cp_parser_parameter_declaration): Likewise.
2700         (cp_parser_member_declaration): Likewise.
2701         (cp_parser_exception_declaration): Likewise.
2702
2703         PR c++/17936
2704         * cp-tree.h (CLASSTYPE_TEMPLATE_SPECIALIZATION): Add a comment.
2705         * pt.c (optimize_specialization_lookup_p): Do not optimize lookups
2706         for members of partial or explicit specializations.
2707
2708         PR c++/17929
2709         * decl2.c (finish_anon_union): Robustify.
2710
2711 2004-10-11  Nathan Sidwell  <nathan@codesourcery.com>
2712
2713         * cp-tree.h (get_dynamic_cast_base_type): Rename to ...
2714         (dcast_base_hint): ... here.
2715         * rtti.c (build_dynamic_cast_1): Use dcast_base_hint.
2716         * search.c (struct dcast_data_s): New.
2717         (dynamic_cast_base_recurse): Remove. Replace with ...
2718         (dfs_dcast_hint_pre, dfs_dcast_base_post): ... these. New.
2719         (get_dynamic_cast_base_type): Rename to ...
2720         (dcast_base_hint): ... here.  Use dfs_walk_once_accessible.
2721         (accessible_r): Remove.
2722         (dfs_accessible_post): New, broken out of accessible_r.
2723         (accessible_p): Use dfs_walk_once_accessible.
2724         (dfs_walk_once_accessible_r): New. From accessible_r.
2725         (dfs_walk_once_accessible): New. From acessible_p.
2726
2727         * cp-tree.h (SAME_BINFO_TYPE_P): New.
2728         * class.c (build_base_path): Use SAME_BINFO_TYPE_P to compare
2729         binfo types.
2730         (convert_to_base_statically, determine_primary_bases,
2731         update_vtable_entry_for_fn, dfs_modify_vtables, build_vtt_inits,
2732         dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group,
2733         accumulate_vtbl_inits, dfs_accumulate_vtbl_inits,
2734         build_vtbl_initializer, add_vcall_offset_vtbl_entries_1): Likewise.
2735         * init.c (expand_member_init): Likewise.
2736         * search.c (lookup_base_r, dynamic_cast_base_recurse,
2737         binfo_via_virtual, copied_binfo, binfo_for_vbase,
2738         original_binfo): Likewise.
2739         * tree.c (copy_binfo): Likewise.
2740
2741 2004-10-11  Kazu Hirata  <kazu@cs.umass.edu>
2742
2743         * semantics.c: Fix comment typos.
2744
2745 2004-10-10  Andrew Pinski  <pinskia@physics.uc.edu>
2746
2747         PR c++/17554
2748         part of c++/17657
2749         middle-end/17703
2750         * semantics.c (maybe_cleanup_point_expr): Call
2751         fold_build_cleanup_point_expr.
2752         (maybe_cleanup_point_expr_void): New function.
2753         (add_decl_expr): Call maybe_cleanup_point_expr_void.
2754         (finish_expr_stmt): Likewise.
2755         (finish_return_stmt): Likewise.
2756         (finish_for_expr): Likewise.
2757         (finish_asm_stmt): Likewise.
2758         * typeck.c (condition_conversion): Call
2759         fold_build_cleanup_point_expr.
2760
2761 2004-10-10  Andrew Pinski  <pinskia@physics.uc.edu>
2762
2763         PR c++/17907
2764         * semantics.c (add_decl_expr): If the decl has a size which
2765         has side effects then the decl expression needs a cleanup point.
2766
2767 2004-10-10  Mark Mitchell  <mark@codesourcery.com>
2768
2769         PR c++/17393
2770         * decl.c (grokdeclarator): Robustify error-recovery on invalid
2771         declarations.
2772
2773 2004-10-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2774
2775         Convert diagnostics to use quoting flag q 7/n
2776         * typeck.c (composite_pointer_type_r, composite_pointer_type,
2777         cxx_sizeof_or_alignof_type, cxx_sizeof_or_alignof_expr,
2778         string_conv_p, build_class_member_access_expr,
2779         build_class_member_access_expr, lookup_destructor,
2780         finish_class_member_access_expr, build_indirect_ref,
2781         get_member_function_from_ptrfunc, build_function_call,
2782         convert_arguments, build_binary_op, pointer_diff, build_unary_op,
2783         check_for_casting_away_constness, build_static_cast,
2784         build_reinterpret_cast, build_const_cast, build_c_cast,
2785         build_modify_expr, get_delta_difference, build_ptrmemfunc,
2786         dubious_conversion_warnings, convert_for_assignment,
2787         convert_for_initialization,
2788         maybe_warn_about_returning_address_of_local, check_return_expr):
2789         Use quoting marks.
2790
2791         * typeck2.c (error_not_base_type, readonly_error,
2792         abstract_virtuals_error, cxx_incomplete_type_diagnostic,
2793         store_init_value, digest_init, build_x_arrow,
2794         build_m_component_ref, require_complete_eh_spec_types): Likewise.
2795
2796         * tree.c (cp_build_qualified_type_real,
2797         handle_java_interface_attribute, handle_init_priority_attribute):
2798         Likewise.
2799
2800         * semantics.c (finish_asm_stmt, finish_non_static_data_member,
2801         finish_pseudo_destructor_expr,
2802         check_template_template_default_arg, begin_class_definition,
2803         finish_base_specifier, qualified_name_lookup_error,
2804         finish_id_expression, finish_typeof): Likewise.
2805
2806         * search.c (lookup_base, check_final_overrider,
2807         look_for_overrides_r): Likewise.
2808
2809         * rtti.c (get_tinfo_decl, build_dynamic_cast_1): Likewise.
2810
2811 2004-10-09  Mark Mitchell  <mark@codesourcery.com>
2812
2813         PR c++/17867
2814         * error.c (dump_expr): Correct handling of AGGR_INIT_EXPRs using a
2815         constructor.
2816
2817         PR c++/17670
2818         * init.c (build_new): Correct comments.
2819         * parser.c (cp_parser_new_expression): Use NULL_TREE for nelts in
2820         the non-array case.
2821
2822         PR c++/17821
2823         * parser.c (cp_parser_postfix_dot_deref_expression): If the
2824         pseduo-destructor-name production does not work, fall back to the
2825         ordinary production.
2826
2827         PR c++/17826
2828         * tree.c (cp_tree_equal): Handle a BASELINK.
2829
2830         PR c++/17524
2831         * cp-tree.h (check_var_type): New function.
2832         * decl.c (check_var_type): New function, split out from ...
2833         (grokdeclarator): ... here.
2834         * pt.c (tsubst_decl): Use check_var_type.
2835
2836         PR c++/17685
2837         * decl.c (grokdeclarator): Disallow declarations of operators as
2838         non-functions.
2839
2840 2004-10-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2841
2842         PR c++/17868
2843         * error.c (dump_expr): Add missing case for RDIV_EXPR.
2844
2845 2004-10-08  Kazu Hirata  <kazu@cs.umass.edu>
2846
2847         * pt.c, search.c: Fix comment typos.
2848
2849 2004-10-08  Nathan Sidwell  <nathan@codesourcery.com>
2850
2851         * cp-tree.h (dfs_walk, dfs_walk_real, dfs_unmark, markedp,
2852         unmarkedp): Remove.
2853         (dfs_skip_bases, dfs_walk_all, dfs_walk_once): New.
2854         * class.c (struct find_final_overrider_data): Remove most_derived,
2855         vpath_list and vpath fields.  Add path field.
2856         (dfs_find_final_ocerrider_1): Add DEPTH parameter. Adjust.
2857         (dfs_find_final_overrider): Rename to ...
2858         (dfs_find_final_overrider_pre): ... here. Adjust.
2859         (dfs_find_final_overrider_post): Adjust.
2860         (dfs_find_final_overrider_q): Fold into
2861         dfs_find_final_overrider_pre.
2862         (find_final_overrider): Adjust dfs searching.
2863         (dfs_modify_vtables): Don't mark binfo here.
2864         (modify_all_vtables): Use dfs_walk_once.
2865         (build_vtt_inits): Likwise. Use dfs_walk_all.
2866         (dfs_build_secondary_vptr_vtt_inits): Don't mark binfo here.
2867         Return dfs_skip_bases as appropriate.
2868         (dfs_fixup_binfo_vtbls): Return dfs_skip_bases as appropriate.
2869         * init.c (dfs_initialized_vtbl_ptrs): Return dfs_skip_bases as
2870         appropriate. Don't mark binfo here.
2871         (initialize_vtbl_ptrs): Use dfs_walk_once.
2872         * search.c (struct vbase_info): Remove unused struct.
2873         (access_in_type): Use dfs_walk_once.
2874         (dfs_access_in_type): Don't mark binfo here.
2875         (dfs_accessible_queue_p, dfs_accessible_p) Remove.
2876         Fold into ...
2877         (accessible_r): ... here. New. Specialize dfs_walk_once.
2878         (accessible_p): Use accessible_r.
2879         (lookup_field_queue_p): Remove. Fold into ...
2880         (lookup_field_r): ... here. Adjust.
2881         (lookup_member): Use dfs_walk_all.
2882         (dfs_walk_real, dfs_walk): Replace with ...
2883         (dfs_walk_all, dfs_walk_once): ... these.
2884         (dfs_walk_once_r, dfs_unmark_r): Workers for dfs_walk_once.
2885         (dfs_unmark, unmarkedp, markedp): Remove.
2886         (dfs_get_pure_virtuals): Don't mark binfo here.
2887         (get_pure_virtuals): Use dfs_walk_once.
2888         (dfs_debug_unmarked_p): Remove. Fold into ...
2889         (dfs_debug_mark): ... here.
2890         (note_debug_info_needed): Use dfs_walk_all.
2891
2892 2004-10-07  Andrew Pinski  <pinskia@physics.uc.edu>
2893
2894         * pt.c (tsubst_expr) <case ASM_EXPR>: Look passed the
2895         CLEANUP_POINT_EXPR to get the asm expression.
2896
2897 2004-10-07  Mark Mitchell  <mark@codesourcery.com>
2898
2899         * cp-tree.h (ICS_USER_FLAG): Remove comment about obsolete flag.
2900         (DECL_MEMBER_TEMPLATE_P): New macro.
2901         (is_member_template): Remove.
2902         (class_method_index_for_fn): New function.
2903         * pt.c (build_over_call): Use DECL_MEMBER_TEMPLATE_P.
2904         * class.c (finish_struct_methods): Remove out-of-date comment.
2905         * decl.c (copy_fn_p): Use DECL_MBMER_TEMPLATE_P.
2906         * decl2.c (check_classfn): Use DECL_MEMBER_TEMPLATE_P and
2907         class_method_index_for_fn.
2908         * pt.c (is_member_template): Remove.
2909         (is_member_template_class): Likewise.
2910         (optimize_specialization_lookup_p): New function.
2911         (retrieve_specialization): Optimize lookups for members that are
2912         not member templates.
2913         (register_specialization): Adjust accordingly.
2914         (build_template_decl): Add member_template_p parameter.  Set
2915         DECL_MEMBER_TEMPLATE_P.
2916         (process_partial_specialization): Adjust call to
2917         retrieve_specialization.
2918         (push_template_decl_real): Determine whether the template is a
2919         member template.
2920         (lookup_template_class): Use retrieve_specialization.
2921         (tsubst_decl): Adjust call to retrieve_specialization.
2922         (tsubst_exception_specification): New function.
2923         (tsubst): Use it.
2924         (tsubst_copy): Use DECL_MEMBER_TEMPLATE_P.
2925         (instantiate_template): Adjust call to retrieve_specialization.
2926         (regenerate_decl_from_template): Do not actually generate a new
2927         DECL.
2928         (instantiate_decl): Adjust call to retrieve_specialization.
2929         (class_method_index_for_fn): New method.
2930
2931 2004-10-07  Andrew Pinski  <pinskia@physics.uc.edu>
2932
2933         * parser.c (cp_parser_asm_definition): Look passed the
2934         CLEANUP_POINT_EXPR to get the asm expression.
2935
2936 2004-10-06  Andrew Pinski  <pinskia@physics.uc.edu>
2937
2938         PR c++/17368
2939         * semantics.c (finish_asm_stmt): Asm expressions need cleanup
2940         also.
2941
2942 2004-10-05  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2943
2944         Convert diagnostics to use quoting flag q 6/n
2945         * pt.c (finish_member_template_decl, check_specialization_scope,
2946         maybe_process_partial_specialization, determine_specialization,
2947         check_explicit_specialization, maybe_check_template_type,
2948         process_partial_specialization, check_default_tmpl_args,
2949         push_template_decl_real, redeclare_class_template,
2950         convert_nontype_argument, coerce_template_parms,
2951         lookup_template_class, push_tinst_level,
2952         instantiate_class_template, tsubst_arg_types,
2953         tsubst_function_type, tsubst, tsubst_qualified_id,
2954         tsubst_copy_and_build, check_instantiated_args,
2955         do_decl_instantiation, do_type_instantiation,
2956         invalid_nontype_parm_type_p, check_specialization_namespace,
2957         convert_template_argument, determine_specialization,
2958         check_template_shadow, tsubst_decl
2959         instantiate_pending_templates): Use quoting marks.
2960
2961 2004-10-05  Nathan Sidwell  <nathan@codesourcery.com>
2962
2963         PR c++/17829
2964         * parser.c (cp_parser_postfix_expression): Inhibit Koenig when
2965         unqualified lookup finds a member function.
2966
2967 2004-10-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2968
2969         Convert diagnostics to use quoting flag q 5/n
2970         * parser.c (cp_parser_name_lookup_error,
2971         cp_parser_diagnose_invalid_type_name,
2972         cp_parser_primary_expression, cp_parser_unqualified_id,
2973         cp_parser_nested_name_specifier_opt, cp_parser_labeled_statement,
2974         cp_parser_jump_statement, cp_parser_simple_declaration,
2975         cp_parser_decl_specifier_seq, cp_parser_mem_initializer_id,
2976         cp_parser_type_parameter, cp_parser_template_id,
2977         cp_parser_template_name, cp_parser_direct_declarator,
2978         cp_parser_parameter_declaration_list, cp_parser_class_head,
2979         cp_parser_base_specifier, cp_parser_lookup_name,
2980         cp_parser_late_parsing_default_args,
2981         cp_parser_optional_template_keyword
2982         cp_parser_elaborated_type_specifier, cp_parser_check_class_key,
2983         cp_parser_check_access_in_redeclaration): Use quoting marks.
2984
2985         * name-lookup.c (supplement_binding, pushdecl,
2986         check_for_out_of_scope_variable, validate_nonmember_using_decl,
2987         do_nonmember_using_decl, lookup_tag, set_decl_namespace,
2988         push_namespace, do_namespace_alias, do_using_directive,
2989         ambiguous_decl, lookup_namespace_name, add_function): Likewise.
2990
2991         * method.c (use_thunk): Likewise.
2992
2993         * lex.c (unqualified_name_lookup_error,
2994         unqualified_fn_lookup_error): Likewise.
2995
2996 2004-10-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2997
2998         Convert diagnostics to use quoting flag q 4/n
2999         * except.c (decl_is_java_type, build_throw,
3000         is_admissible_throw_operand, check_handlers_1, check_handlers):
3001         Use quoting formats.
3002         * friend.c (add_friend, make_friend_class, do_friend): Likewise.
3003         * init.c (sort_mem_initializers, emit_mem_initializers,
3004         member_init_ok_or_else, expand_member_init, is_aggr_type,
3005         build_offset_ref, build_java_class_ref): Likewise.
3006
3007 2004-10-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3008
3009         Convert diagnostics to use quoting flag q 3/n
3010         * decl.c (pop_label, duplicate_decls, redeclaration_error_message,
3011         redeclaration_error_message, lookup_label, check_goto,
3012         make_typename_type, make_unbound_class_template,
3013         fixup_anonymous_aggr, check_tag_decl, start_decl, start_decl_1,
3014         grok_reference_init, layout_var_decl, maybe_commonize_var,
3015         check_for_uninitialized_const_var, reshape_init_array,
3016         reshape_init, check_initializer, cp_finish_decl,
3017         member_function_or_else, bad_specifiers, grokfndecl, grokvardecl,
3018         check_static_variable_definition, compute_array_index_type,
3019         create_array_type_for_decl, check_special_function_return_type,
3020         grokdeclarator, check_default_argument, grokparms,
3021         grok_ctor_properties, grok_op_properties,
3022         check_elaborated_type_specifier, xref_tag, finish_enum,
3023         build_enumerator, check_function_type, start_preparsed_function,
3024         store_parm_decls): Use quoting formats.
3025         * decl2.c (grok_array_decl, delete_sanity, check_member_template,
3026         check_java_method, check_classfn, finish_static_data_member_decl,
3027         grokfield, grokbitfield, grok_function_init,
3028         build_anon_union_vars, coerce_new_type, coerce_delete_type,
3029         check_default_args): Likewise.
3030         * parser.c (cp_parser_decl_specifier_seq): Likewise.
3031
3032 2004-10-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3033
3034         Convert diagnostics to use quoting flag q 2/n
3035         * class.c (build_base_path, add_method, alter_access,
3036         handle_using_decl, check_bases,
3037         maybe_warn_about_overly_private_class, find_final_overrider,
3038         warn_hidden, finish_struct_anon, add_implicitly_declared_members,
3039         check_bitfield_decl, check_field_decls, layout_empty_base,
3040         build_base_field, check_methods, layout_virtual_bases,
3041         warn_about_ambiguous_bases, layout_class_type, finish_struct_1,
3042         resolve_address_of_overloaded_function, instantiate_type,
3043         note_name_declared_in_class): Use format flag "q" for quoting.
3044
3045 2004-10-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3046
3047         Convert diagnostics to use quoting flag q 1/n
3048         * error.c (locate_error): Ignore quoting flag q.
3049         * call.c (build_user_type_conversion_1, build_operator_new_call,
3050         build_object_call, op_error, build_conditional_expr,
3051         build_new_op, build_op_delete_call, enforce_access,
3052         convert_like_real, convert_arg_to_ellipsis, build_x_va_arg,
3053         convert_default_arg, build_over_call, build_new_method_call,
3054         joust, perform_implicit_conversion, initialize_reference): Use the
3055         quoting flag q.
3056
3057 2004-10-03  Andrew Pinski  <pinskia@physics.uc.edu>
3058
3059         PR c++/17797
3060         * typeck.c (build_reinterpret_cast): Return if the inner type
3061         is error_mark_node.
3062
3063 2004-10-01  Jan Hubicka  <jh@suse.cz>
3064
3065         * semantics.c (expand_body): Update call of tree_rest_of_compilation.
3066
3067 2004-09-30  Nathan Sidwell  <nathan@codesourcery.com>
3068
3069         * cp-tree.h (struct lang_decl): Shrink by reordering fields and
3070         turning operator_code and fixed_offset into bitfields.
3071
3072 2004-09-29  Joseph S. Myers  <jsm@polyomino.org.uk>
3073
3074         * decl.c (duplicate_decls): Merge TREE_DEPRECATED.
3075
3076 2004-09-29  Jason Merrill  <jason@redhat.com>
3077
3078         PR tree-optimization/17697
3079         * decl.c (duplicate_decls): Copy TREE_NOTHROW from newdecl to olddecl.
3080
3081 2004-09-28  Jason Merrill  <jason@redhat.com>
3082
3083         PR middle-end/17525
3084         * class.c (build_base_field): Set TYPE_MODE.
3085
3086 2004-09-28  Roger Sayle  <roger@eyesopen.com>
3087
3088         PR driver/17537
3089         * g++spec.c (lang_specific_driver): Unrecognized libraries, other
3090         than -lc and -lm, may require linking against libstc++.
3091
3092 2004-09-28  Kazu Hirata  <kazu@cs.umass.edu>
3093
3094         * tree.c: Fix a comment typo.
3095
3096 2004-09-28  Nathan Sidwell  <nathan@codesourcery.com>
3097
3098         * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): Remove.
3099         (struct secondary_vptr_vtt_init_data_s): New.
3100         (build_vtt_inits): Adjust dfs_walkers.
3101         (dfs_build_secondary_vptr_vtt_inits): Caller data is a
3102         secondary_vptr_vtt_init_data_s structure. Adjust.
3103         (dfs_ctor_vtable_bases_queue_p): Remove.
3104         (dfs_fixup_binfo_vtbls): No need to clear BINFO_MARKED. Simplify.
3105
3106         * pt.c (struct get_template_base_data_s): Remove.
3107         (get_template_base_r): Fold into get_template_base.
3108         (get_template_base): Walk base binfos directly in inheritance
3109         graph order.
3110
3111 2004-09-27  Mark Mitchell  <mark@codesourcery.com>
3112
3113         PR c++/17642
3114         * cp-tree.h (fold_if_not_in_template): New function.
3115         * call.c (build_conditional_expr): Use fold_if_not_in_template.
3116         (build_cxx_call): Likewise.
3117         * cvt.c (convert_to_complex): Likewise.
3118         (ocp_convert): Likewise.
3119         (convert): Likewise.
3120         (convert_force): Likewise.
3121         * decl.c (compute_array_index_type): Clear
3122         processing_template_decl while folding array bounds.
3123         * pt.c (convert_nontype_argument): Clear
3124         processing_template_decl while processing non-type argument
3125         initialization.
3126         * tree.c (fold_if_not_in_template): New function.
3127         * typeck.c (build_class_member_access_expr): Use
3128         fold_if_not_in_template.
3129         (build_array_ref): Likewise.
3130         (build_binary_op): Likewise.  Do not try to optimize computations
3131         when processing templates.
3132         (cp_pointer_int_sum): Use fold_if_not_in_template.
3133         (pointer_diff): Likewise.
3134         (build_unary_op): Likewise.
3135         (build_reinterpret_cast): Likewise.
3136         (get_delta_difference): Likewise.
3137         (expand_ptrmemfunc_cst): Likewise.
3138         (dubious_conversion_warnings): Likewise.
3139
3140 2004-09-27  Matt Austern  <austern@apple.com>
3141
3142         * cp/parser.c (struct cp_token): New one-bit field , implicit_extern_c
3143         (cp_lexer_get_preprocessor_token): Set implicit_extern_c for
3144         tokens that come from headers that are implicitly extern "C".
3145         (struct cp_parser): new one-bit field, implicit_extern_c.
3146         (cp_parser_new): Set parser's implicit_extern_c to false.
3147         (cp_parser_translation_unit): Pop lang context if we were in a
3148         header that was implicitly extern "C".
3149         (cp_parser_declaration_seq_opt): Push/pop lang context as
3150         required by the token's and parser's implicit_extern_c.
3151
3152 2004-09-27  Mark Mitchell  <mark@codesourcery.com>
3153
3154         PR c++/17585
3155         * cp-tree.h (shared_member_p): Declare.
3156         * search.c (shared_member_p): Give it external linkage.
3157         * semantics.c (finish_qualified_id_expr): Use it.
3158         (finish_id_expression): Likewise.
3159
3160         PR c++/17585
3161         * semantics.c (finish_id_expression): Do not add "this->" to
3162         static member functions.
3163
3164 2004-09-27  Nathan Sidwell  <nathan@codesourcery.com>
3165
3166         PR c++/17681
3167         * error.c (dump_type): Change TREE_VEC case into TREE_BINFO.
3168
3169         * class.c (struct count_depth_data): Remove.
3170         (dfs_depth_post, dfs_depth_q): Remove.
3171         (find_final_overrider): Use number of vbase classes as depth
3172         bound.
3173
3174         * cp-tree.h (types_overlap_p): Remove.
3175         * search.c (struct overlap_info): Remove.
3176         (dfs_check_overlap, dfs_no_overlap_yet, types_overlap_p): Remove.
3177
3178         * pt.c (GTB_VIA_VIRTUAL, GTB_IGNORE_TYPE): Remove.
3179         (get_template_base_recursive): Remove. Replace with ...
3180         (get_template_base_r): ... this.
3181         (struct get_template_base_data_s): New.
3182         (get_template_base): Use get_template_base_r via dfs_walk.  Always
3183         return NULL on failure.
3184         (unify): Remove error_mark_node check from get_template_base result.
3185
3186 2004-09-24  Paolo Bonzini  <bonzini@gnu.org>
3187
3188         * parser.c (cp_parser_expression_stack): Clarify why it is
3189         an array of NUM_PREC_VALUES elements.
3190         (cp_parser_binary_expression): Clarify why we do not need to
3191         handle stack overflow.
3192
3193 2004-09-24  Nathan Sidwell  <nathan@codesourcery.com>
3194
3195         PR c++/16889
3196         * search.c (lookup_field_queue_p): Correct check for hidden base.
3197
3198         * search.c (bfs_walk): Remove.
3199         (lookup_member): Use dfs_walk_real.
3200         (dfs_walk_real): Move and adjust documentation from bfs_walk.
3201
3202 2004-09-23  Zack Weinberg  <zack@codesourcery.com>
3203
3204         * decl.c (grokfndecl): If ::main is found not to return int,
3205         correct it after issuing a diagnostic.
3206         (grokdeclarator): If the incoming type was error_mark_node, do
3207         not complain about declaring something with no type.
3208         (start_function): Change check for ::main not returning int to
3209         an assertion, as grokfndecl now catches this when the user did it.
3210         * init.c (perform_member_init, sort_mem_initializers)
3211         (emit_mem_initializers): Make most diagnostics be issued on
3212         the line of current_function_decl, not whatever the current
3213         input line is.
3214         * parser.c (cp_lexer_peek_token_emit_debug_info): Surround
3215         definition and declaration with #ifdef ENABLE_CHECKING.
3216         Avoid unnecessary use of fprintf.
3217         (cp_lexer_print_token, cp_lexer_debug_stream): Adjust stub
3218         definitions to avoid warnings.
3219         (cp_lexer_new_main): Add assertion that first token is not a
3220         padding token.
3221         (cp_lexer_new_from_token_array): Fold into ...
3222         (cp_lexer_new_from_tokens): ... here.  Add assertion that
3223         first token is not a padding token.
3224         (cp_lexer_set_source_position_from_token): Move nearer to callers.
3225         Remove unused lexer argument.
3226         (cp_lexer_peek_token): Just print debugging report (if enabled)
3227         and return lexer->next_token.
3228         (cp_lexer_skip_purged_tokens): Delete.
3229         (cp_lexer_next_token_is, cp_lexer_next_token_is_not): Make
3230         inline, simplify bodies.
3231         (cp_lexer_peek_nth_token): Add debugging report a la
3232         cp_lexer_peek_token.
3233         (cp_lexer_consume_token): Correct commentary.  Advance over
3234         purged tokens here.  Set current source position here, from
3235         token to be returned.  Avoid unnecessary use of fprintf.
3236         (cp_lexer_purge_token): Advance next_token pointer over this and
3237         subsequent purged tokens.
3238         (cp_parser_error): Adjust source position to that of the
3239         peeked token.
3240         (cp_parser_push_lexer_for_tokens, cp_parser_pop_lexer): New functions.
3241         (cp_parser_string_literal): Remove some excessive cleverness.
3242         (cp_parser_enum_specifier): Call start_enum before consuming
3243         the opening brace.
3244         (cp_parser_member_declaration): Make the "extra semicolon"
3245         diagnostic consistently-worded with the other place this is
3246         diagnosed.  Explicitly set the diagnostic location to the
3247         location of the offending semicolon.
3248         (cp_parser_enclosed_template_argument_list): Use %</%> quoting
3249         in diagnostics.  Do not use cp_parser_require.  Set location
3250         of diagnostics about improper use of '>>' to location of
3251         offending token.
3252         (cp_parser_late_parsing_for_member):
3253         Use cp_parser_push_lexer_for_tokens and cp_parser_pop_lexer.
3254         (cp_parser_late_parsing_default_args): Likewise.  Manually
3255         move some logic outside the loop.
3256
3257 2004-09-23  Andrew Pinski  <pinskia@physics.uc.edu>
3258
3259         PR c++/17618
3260         * cvt.c (cp_convert_to_pointer): Return early when the type is
3261         an error_mark_node.
3262
3263 2004-09-21 Fariborz Jahanian <fjahanian@apple.com>
3264
3265         PR c++/13989
3266         PR c++/9844
3267         * decl.c (grokfndecl): Add new argument "attrlist", use it
3268         to call cplus_decl_attributes.
3269         (start_function): Remove call to cplus_decl_attributes.
3270         * cvt.c (ocp_convert): Add support to use type conversion
3271         function to vector type.
3272         * parser.c (cp_parser_conversion_type_id): Add attributes, if any,
3273         to the parsed type.
3274
3275 2004-09-23  Paolo Bonzini  <bonzini@gnu.org>
3276
3277         PR c++/17596
3278
3279         * parser.c (cp_parser_token_tree_map_node,
3280         cp_parser_pm_expression, cp_parser_additive_expression,
3281         cp_parser_multiplicative_expression, cp_parser_shift_expression,
3282         cp_parser_relational_expression, cp_parser_equality_expression,
3283         cp_parser_and_expression, cp_parser_exclusive_or_expression,
3284         cp_parser_inclusive_or_expression,
3285         cp_parser_logical_and_expression,
3286         cp_parser_logical_or_expression): Removed.
3287         (enum cp_parser_prec, struct cp_parser_token_tree_map_node,
3288         binops, binops_by_token): New.
3289         (cp_parser_assignment_expression): Use cp_parser_binary_expression.
3290         (cp_parser_new): Initialize binops_by_token.
3291         (cp_parser_binary_expression): Rewritten.
3292         (N_CP_TTYPES): New.
3293
3294 2004-09-23  Kazu Hirata  <kazu@cs.umass.edu>
3295
3296         * parser.c: Fix a comment typo.
3297
3298 2004-09-23  Nathan Sidwell  <nathan@codesourcery.com>
3299
3300         PR c++/17620
3301         * decl.c (xref_basetypes): Look through typedefs before checking
3302         for duplicate base.
3303
3304 2004-09-22  Nathan Sidwell  <nathan@codesourcery.com>
3305
3306         * cp-tree.h (unemitted_tinfo_decls): Make a VEC(tree).
3307         * decl2.c (cp_finish_file): Adjust tinfo decl emission loop.
3308         * rtti.c (unemitted_tinfo_decls): Make a VEC(tree).
3309         (init_rtti_processing): Initialize it to something realistic.
3310         (get_tinfo_decl): Adjust pushing the new decl.
3311
3312         * cp-tree.h (struct lang_type_class): Remove marked flags, add
3313         diamond_shaped and repeated_base flags.  Reorder to keep 8-bit blocks.
3314         (TYPE_MARKED_P): New.
3315         (CLASSTYPE_DIAMOND_SHAPED_P, CLASSTYPE_REPEATED_BASE_P): New.
3316         (CLASSTYPE_MARKED_N, SET_CLASSTYPE_MARKED_N,
3317         CLEAR_CLASSTYPE_MARKED_N): Remove.
3318         (CLASSTYPE_MARKED_*, SET_CLASSTYPE_MARKED_*,
3319         CLEAR_CLASSTYPE_MARKED_*): Remove.
3320         * decl.c (xref_basetypes): Use TYPE_MARKED_P. Determine diamond
3321         shaped and repeated base properties.
3322         * lex.c (cxx_make_type): Don't clear TYPE_ALIAS_SET.
3323         * rtti.c (dfs_class_hint_mark, dfs_class_hint_unmark,
3324         class_hint_flags): Remove.
3325         (get_pseudo_ti_init): Use CLASSTYPE_REPEATED_BASE_P and
3326         CLASSTYPE_DIAMOND_SHAPED_P.
3327
3328 2004-09-21  Ziemowit Laski  <zlaski@apple.com>
3329
3330         * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Moved here from
3331         cp-objcp-common.h.
3332         (objcp_tsubst_copy_and_build): Reformat function signature.
3333         * cp-objcp-common.h (objcp_tsubst_copy_and_build): Likewise.
3334         (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Moved to cp-lang.c.
3335
3336 2004-09-21  Zack Weinberg  <zack@codesourcery.com>
3337
3338         * parser.c (cp_lexer_peek_token, cp_lexer_consume_token):
3339         Don't handle CPP_PRAGMA tokens specially.
3340         (cp_lexer_handle_pragma): Use cp_lexer_consume_token.  Don't
3341         purge the token; do clear token->value after processing.  Add
3342         assertion at beginning that token->value is nonzero.
3343         (cp_parser_statement, cp_parser_declaration_seq_opt): Handle
3344         CPP_PRAGMA as a full statement or declaration in its own right.
3345
3346 2004-09-21  Matt Austern  <austern@apple.com>
3347
3348         PR c++/15049
3349         * decl.c (grokvardecl): Accept declarations of global variables
3350         using anonymous types.
3351
3352 2004-09-21  Roger Sayle  <roger@eyesopen.com>
3353
3354         PR c++/7503
3355         * tree.c (lvalue_p_1):  Disallow MIN_EXPR and MAX_EXPR as lvalues
3356         if either operand has side-effects.
3357         * typeck.c (rationalize_conditional_expr): Assert that neither
3358         operand of MIN_EXPR or MAX_EXPR has side-effects.
3359         (build_modify_expr):  Add support for MIN_EXPR and MAX_EXPR.
3360         Check that the "lhs" is a valid lvalue, i.e. that neither operand
3361         of a MIN_EXPR or MAX_EXPR has a side-effect.
3362
3363 2004-09-21  Nathan Sidwell  <nathan@codesourcery.com>
3364
3365         * cp-tree.h (struct lang_type_header): Remove
3366         uses_multiple_inheritance field.
3367         (TYPE_USES_MULTIPLE_INHERITANCE): Remove.
3368         (TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P): Remove.
3369         (TYPE_USES_VIRTUAL_BASECLASSES): Remove.
3370         (DECL_NEEDS_VTT_PARM_P): Use CLASSTYPE_VBASECLASSES.
3371         (TYPE_CONTAINS_VPTR_P): Likewise.
3372         * call.c (add_template_candidate_real): Use
3373         CLASSTYPE_VBASECLASSES.
3374         (build_special_member_call): Likewise.
3375         * class.c (finish_struct_bits): Remove
3376         TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P & TYPE_USES_VIRTUAL_BASECLASSES
3377         bookkeeping.
3378         (check_bases_and_members): Use TYPE_CONTAINS_VPTR_P.
3379         (create_vtable_ptr): Remove TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P
3380         bookkeeping.
3381         (build_vtt_inits): Use CLASSTYPE_VBASECLASSES.
3382         (accumulate_vtbl_inits, build_vbase_offset_vtbl_entries):
3383         Likewise.
3384         * decl.c (xref_basetypes): Remove TYPE_USES_MULTIPLE_INHERITANCE,
3385         TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_USES_VIRTUAL_BASECLASSES
3386         bookkeeping.
3387         (cxx_maybe_build_cleanup): Use CLASSTYPE_VBASECLASSES.
3388         * decl2.c (maybe_retrofit_in_chrg): Likewise.
3389         * init.c (expand_member, push_base_cleanups): Likewise.
3390         * pt.c (instantiate_class_template): Remove
3391         TYPE_USES_MULTIPLE_INHERITANCE,
3392         TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_USES_VIRTUAL_BASECLASSES
3393         bookkeeping.
3394         * ptree.c (cxx_print_type): Remove TYPE_USES_MULTIPLE_INHERITANCE
3395         check.
3396         * typeck2.c (process_init_constructor): Replace some sorrys with
3397         asserts.
3398
3399 2004-09-21  Andreas Tobler  <a.tobler@schweiz.ch>
3400
3401         * decl.c (reshape_init_array): Initialize max_index_cst to fix
3402         bootstrap failure.
3403
3404 2004-09-20  Mark Mitchell  <mark@codesourcery.com>
3405
3406         PR c++/17530
3407         * pt.c (tsubst): Fix parentheses to accomodate emacs.
3408         (tsubst_baselink): If we get a single function, mark it as used.
3409
3410 2004-09-20  Matt Austern <austern@apple.com>
3411             Zack Weinberg  <zack@codesourcery.com>
3412
3413         * decl.c (make_rtl_for_nonlocal_decl, start_preparsed_function):
3414         Apply lbasename to input_filename before passing to get_fileinfo.
3415         * semantics.c (begin_class_definition): Likewise.
3416         * lex.c (handle_pragma_interface): Apply get_fileinfo to the
3417         correct filename.  Rename variables to be less confusing.
3418         (handle_pragma_implementation): Likewise.  Disable "appears
3419         after file is included" diagnostic.
3420
3421         * parser.c (struct cp_token): Add in_system_header fiag.
3422         (CP_TOKEN_BLOCK_NUM_TOKENS, struct cp_token_block)
3423         (CP_TOKEN_BUFFER_SIZE, cp_token_cache_push_token)
3424         (CPP_NONE, cp_lexer_read_token): Delete.
3425         (struct cp_lexer): Remove first_token, string_tokens,
3426         main_lexer_p fields.  Clarify comments.
3427         (struct cp_token_cache): Now just a pair of pointers.
3428         (CP_LEXER_BUFFER_SIZE): New #define.
3429         (CPP_PURGED): New fake token type.
3430         (cp_lexer_new_from_token_array, cp_lexer_destroy)
3431         (cp_lexer_peek_token_emit_debug_info, cp_lexer_skip_purged_tokens)
3432         (cp_lexer_handle_pragma, cp_token_cache_new, cp_parser_string_literal):
3433         New functions.
3434         (cp_lexer_new_from_tokens): Now a simple wrapper around
3435         cp_lexer_new_from_token_array.
3436         (cp_lexer_set_source_position_from_token): Also update
3437         in_system_header.
3438         (cp_lexer_next_token, cp_lexer_prev_token, cp_lexer_advance_token):
3439         Don't wrap round.
3440         (cp_lexer_token_difference): Dont handle wrapping round.
3441         (cp_lexer_new_main): Enable pragma deferral and raw strings,
3442         read the entire translation unit through c_lex_with_flags into
3443         this lexer's buffer, then turn raw strings back off again.
3444         (cp_lexer_grow_buffer): Adjust for buffer no longer being circular.
3445         (cp_lexer_get_preprocessor_token): No need to handle not being
3446         the main lexer.  Set token->in_system_header too.
3447         (cp_lexer_peek_token): Skip purged tokens.  Feed pragma tokens
3448         to cp_lexer_handle_pragma.  No need to call cp_lexer_read_token.
3449         (cp_lexer_peek_nth_token): Likewise.
3450         (cp_lexer_purge_token): Mark the token PURGED, don't shift all
3451         the other tokens down.
3452         (cp_lexer_purge_tokens_after): Likewise.
3453         (cp_lexer_save_tokens, cp_lexer_rollback_tokens): Don't worry
3454         about there being no tokens.
3455         (cp_lexer_print_token): Revise to give useful information on
3456         all tokens.
3457         (struct cp_parser): Add field translate_strings_p.
3458         (cp_parser_new): Initialize it.
3459         (cp_parser_translation_unit): Destroy the lexer when done.
3460         (cp_parser_parameter_declaration): Restructure saving of
3461         default arguments.
3462         (cp_parser_save_member_function_body): Likewise.
3463         (cp_parser_check_for_invalid_template_id)
3464         (cp_parser_nested_name_specifier_opt, cp_parser_template_id):
3465         Adjust calls to cp_lexer_advance_token.
3466         (cp_parser_skip_to_closing_parenthesis, cp_parser_declaration):
3467         No need to fiddle c_lex_string_translate.
3468         (cp_parser_primary_expression, cp_parser_linkage_specification)
3469         (cp_parser_asm_definition, cp_parser_asm_specification_opt)
3470         (cp_parser_asm_operand_list, cp_parser_asm_clobber_list)
3471         Use cp_parser_string_literal.
3472         (cp_parser_attribute_list): Save and restore
3473         parser->translate_strings_p, not c_lex_string_translate.
3474         (cp_parser_cache_group): Delete.
3475         (cp_parser_cache_group_1): Rename cp_parser_cache_group.  Do
3476         not take a cache argument.
3477
3478 2004-09-20  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
3479
3480         PR c++/14179
3481         * decl.c (reshape_init): Extract array handling into...
3482         (reshape_init_array): New function. Use integers instead of trees
3483         for indices. Handle out-of-range designated initializers.
3484
3485 2004-09-20  Steven Bosscher  <stevenb@suse.de>
3486
3487         * lex.c (cxx_init): Don't set the ridpointer for RID_NULL
3488         to null_node.
3489
3490 2004-09-19  Mark Mitchell  <mark@codesourcery.com>
3491
3492         * decl2.c (determine_visibility): Allow class visibility
3493         directives to override targetm.cxx.export_class_data.
3494
3495 2004-09-18  Kazu Hirata  <kazu@cs.umass.edu>
3496
3497         * call.c, semantics.c: Follow spelling conventions.
3498         * class.c: Fix a comment typo.
3499
3500 2004-09-16  Geoffrey Keating  <geoffk@apple.com>
3501
3502         PR pch/13361
3503         * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
3504         (handle_pragma_implementation): Likewise.
3505
3506 2004-09-17  Jeffrey D. Oldham  <oldham@codesourcery.com>
3507             Zack Weinberg  <zack@codesourcery.com>
3508
3509         * cp-tree.def: Use tree_code_class enumeration constants
3510         instead of code letters.
3511         * call.c, class.c, cp-gimplify.c, cp-lang.c, cxx-pretty-print.c
3512         * mangle.c, pt.c, semantics.c, tree.c, typeck.c:
3513         Update for new tree-class enumeration constants.
3514
3515 2004-09-16  Mark Mitchell  <mark@codesourcery.com>
3516
3517         PR c++/16002
3518         * parser.c (cp_parser_simple_declaration): Commit to tentative
3519         parses after seeing a decl-specifier.
3520         (cp_parser_simple_declaration): Eliminate spurious message.
3521         (cp_parser_init_declarator): Adjust error message.
3522
3523         PR c++/16029
3524         * lex.c (unqualified_name_lookup_error): Mark the dummy
3525         declaration as used.
3526
3527         PR c++/17501
3528         * parser.c (cp_parser_nested_name_specifier): Do not resolve
3529         typename types if the user explicitly said "typename".
3530
3531 2004-09-16  Andrew MacLeod  <amacleod@redhat.com>
3532
3533         * error.c (dump_decl): Make sure there is lang_specific info before
3534         checking for DTOR and CTOR decls.
3535
3536 2004-09-16  Nathan Sidwell  <nathan@codesourcery.com>
3537
3538         * class.c (copy_virtuals): Remove.
3539         (build_primary_vtable): Use copy_list directly.
3540         (build_secondary_vtable): Likewise.
3541         (update_vtable_entry_for_fn): Clear BV_CALL_INDEX here.
3542         (create_vtable_ptr): Likewise.
3543
3544 2004-09-16  Kazu Hirata  <kazu@cs.umass.edu>
3545
3546         * search.c: Follow spelling conventions.
3547
3548 2004-09-16  Nathan Sidwell  <nathan@codesourcery.com>
3549
3550         * cp-tree.h (struct lang_type_class): Make pure_virtuals a
3551         VEC(tree).
3552         (CLASSTYPE_INLINE_FRIENDS, CLASSTYPE_PURE_VIRTUALS): Update
3553         comments.
3554         * call.c (build_new_method_call): Don't confirm a pure virtual is
3555         in CLASSTYPE_PURE_VIRTUALS.  Reorder checks. Make it a warning.
3556         * class.c (check_methods): CLASSTYPE_INLINE_FRIENDS is a VEC(tree).
3557         (fixup_inline_methods, finish_struct): Likewise.
3558         * decl.c (finish_method): Likewise.
3559         * search.c (dfs_get_pure_virtuals, get_pure_virtuals):
3560         CLASSTYPE_PURE_VIRTUALS is a VEC(tree).
3561         * typeck2.c (abstract_virtuals_error): Likewise. Truncate the
3562         vector to avoid repeating the list in error messages.
3563
3564 2004-09-15  Mark Mitchell  <mark@codesourcery.com>
3565
3566         * cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Define.
3567         * cp-tree.h (cxx_comdat_group): Declare.
3568         * decl.c (cxx_comdat_group): New function.
3569
3570 2004-09-15  Nathan Sidwell  <nathan@codesourcery.com>
3571
3572         * search.c (get_pure_virtuals): Remove unused variables.
3573
3574         * cp-tree.h (struct lang_decl_flags): Remove
3575         needs_final_overrider.
3576         (DECL_NEEDS_FINAL_OVERRIDER_P): Remove.
3577         * decl.c (duplicate_decls): Do not copy DECL_NEEDS_FINAL_OVERRIDER_P.
3578         * class.c (finish_struct_bits): Correct comment about
3579         CLASSTYPE_PURE_VIRTUALS.
3580         * search.c (get_pure_virtuals): Remove useless loop.
3581
3582 2004-09-14  Mark Mitchell  <mark@codesourcery.com>
3583
3584         PR c++/17324
3585         * mangle.c (partially_mangled_name): New variable.
3586         (partially_mangled_name_len): Likewise.
3587         (save_partially_mangled_name): New function.
3588         (restore_partially_mangled_name): Likewise.
3589         (write_encoding): Save and restore partially mangled names around
3590         calls to get_mostly_instantiated_function_type.
3591         (write_unqualified_name): Likewise.
3592
3593 2004-09-14  Nathan Sidwell  <nathan@codesourcery.com>
3594
3595         * pt.c (unify): Replace gcc_unreachable with gcc_assert.
3596
3597 2004-09-13  Mark Mitchell  <mark@codesourcery.com>
3598
3599         PR c++/16162
3600         * parser.c (cp_parser_id_expression): Correct value for
3601         is_declarator.
3602         (cp_parser_nested_name_specifier_opt): Look through typenames as
3603         necessary.
3604         (cp_parser_template_name): Honor check_dependency_p.
3605
3606         PR c++/16716
3607         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
3608         Robustify.
3609
3610         PR c++/17327
3611         * pt.c (unify): Add ENUMERAL_TYPE case.  Replace sorry with
3612         gcc_unreacable.
3613
3614 2004-09-12  Richard Henderson  <rth@redhat.com>
3615
3616         PR c++/16254
3617         * semantics.c (maybe_cleanup_point_expr): Don't call fold.
3618         * typeck.c (condition_conversion): Likewise.
3619
3620 2004-09-11  Richard Henderson  <rth@redhat.com>
3621
3622         PR c++/17404
3623         * pt.c (cur_stmt_expr): Move from tsubst_expr.
3624         (tsubst_expr) <case STMT_EXPR>: Move ...
3625         (tsubst_copy_and_build): ... here.
3626
3627 2004-09-10  Zack Weinberg  <zack@codesourcery.com>
3628
3629         * cp-tree.h (interface_only, interface_unknown): Delete declarations;
3630         comment explaining them moved to c-common.h.
3631         * lex.c (interface_only, interface_unknown, extract_interface_info):
3632         Delete definitions.
3633         (cxx_finish): Don't reset interface_unknown.
3634         (handle_pragma_interface): Don't set interface_only and
3635         interface_unknown; just the like-named fields in finfo.
3636         (handle_pragma_implementation): Adjust comment.
3637         * decl2.c (cp_finish_file): Don't reset interface_only and
3638         interface_unknown.
3639         * method.c (synthesize_method): Don't reset interface_unknown or
3640         call extract_interface_info.
3641         * pt.c (pop_tinst_level): Don't call extract_interface_info.
3642         * decl.c (start_cleanup_fn): Don't save or restore interface_only
3643         and interface_unknown.
3644         (make_rtl_for_nonlocal_decl): Call get_fileinfo on input_filename
3645         and use the result instead of the interface_only/interface_unknown
3646         globals.
3647         (start_preparsed_function): Likewise.
3648         * lex.c (cxx_make_type): Likewise.
3649         * semantics.c (begin_class_definition): Likewise.
3650         (expand_body): Don't call extract_interface_info.
3651
3652 2004-09-10  Ziemowit Laski  <zlaski@apple.com>
3653
3654         * decl.c (objc_mark_locals_volatile): Make description of
3655         routine more descriptive; only mark VAR_DECLs at each
3656         binding level.
3657
3658 2004-09-10  Richard Henderson  <rth@redhat.com>
3659
3660         PR c++/17386
3661         * call.c (build_vfield_ref): Move...
3662         * class.c (build_vfield_ref): ... here.  Convert datum to the
3663         primary base containing the vptr.
3664         (make_new_vtable): Simplify build_primary_vtable arguments.
3665         (finish_struct_1): Do not duplicate TYPE_VFIELD.
3666         * typeck.c (build_class_member_access_expr): Don't warn for
3667         null object access to base fields.
3668
3669 2004-09-10  Ziemowit Laski  <zlaski@apple.com>
3670
3671         * decl.c (objc_get_current_scope, objc_mark_locals_volatile):
3672         New functions, to be called from ObjC++.
3673
3674 2004-09-10  Kazu Hirata  <kazu@cs.umass.edu>
3675
3676         * class.c, cp-tree.h, decl.c, decl2.c, mangle.c,
3677         name-lookup.h, parser.c, search.c, semantics.c, typeck2.c: Fix
3678         comment typos.
3679
3680 2004-09-09  Ziemowit Laski  <zlaski@apple.com>
3681
3682         * typeck.c (build_c_cast): Preserve the cast if casting
3683         to and from an Objective-C type.
3684
3685 2004-09-09  Ziemowit Laski  <zlaski@apple.com>
3686
3687         * Make-lang.in (cp/typeck.o): Depend on c-common.h.
3688         * typeck.c: Include c-common.h.
3689         (comptypes): For RECORD_TYPEs, call objc_comptypes() and
3690         return the result if nonnegative.
3691
3692 2004-09-09  Zack Weinberg  <zack@codesourcery.com>
3693
3694         * decl2.c (import_export_class)
3695         * lex.c (handle_pragma_interface):
3696         Test MULTIPLE_SYMBOL_SPACES with if, not #ifdef.
3697
3698 2004-09-08  Ziemowit Laski  <zlaski@apple.com>
3699
3700         * Make-lang.in (cp/semantics.o): Depend on c-common.h.
3701         * semantics.c: Include c-common.h.
3702         (finish_compound_stmt): Call objc_clear_super_receiver().
3703
3704 2004-09-08  Ziemowit Laski  <zlaski@apple.com>
3705
3706         * cp-tree.h (do_poplevel): New prototype.
3707         * semantics.c (do_poplevel): Make externally visible.
3708
3709 2004-09-08  Nathan Sidwell  <nathan@codesourcery.com>
3710
3711         * cp-tree.h (tree_pair_s): Define a GC'd vector.
3712         * name-lookup.h (cxx_saved_binding, cp_class_binding): Likewise.
3713         * semantics.c (deferred_access): Likewise.
3714
3715 2004-09-06  Daniel Jacobowitz  <dan@debian.org>
3716
3717         * semantics.c (expand_body): Assert that we are not nested.
3718
3719 2004-09-06  Zack Weinberg  <zack@codesourcery.com>
3720
3721         * decl.c (build_enumerator): Use add_double and int_fits_type_p
3722         instead of cp_build_binary_op, to avoid creating short-lived trees.
3723         * parser.c (cp_parse_type_specifier <RID_ENUM>): Use two-token
3724         lookahead instead of backtracking.  Move some code to avoid a
3725         conditional branch.
3726         (cp_parser_enum_specifier): Avoid duplication of effort with caller.
3727         Use cp_lexer_next_token_is/cp_lexer_next_token_is_not as appropriate.
3728         (cp_parser_enumerator_list, cp_parser_enumerator_definition):
3729         Use cp_lexer_next_token_is/cp_lexer_next_token_is_not as appropriate.
3730
3731 2004-09-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3732
3733         * decl.c (grok_declarator): Remove a redundant semicolon.
3734
3735         * parser.c (cp_parser_decl_specifier_seq, cp_parser_type_specifier):
3736         Correct comments describing function parameters.
3737
3738 2004-09-03  Matt Austern  <austern@apple.com>
3739         Compile speed improvement.
3740         * parser.c (cp_lexer_print_token): Only define if ENABLE_CHECKING set.
3741         Otherwise define a stub macro that expands to nothing.
3742         (cp_lexer_debugging_p): Only define if ENABLE_CHECKING set.  Otherwise
3743         define a stub macro that expands to 0.
3744         (cp_lexer_start_debugging): Only define if ENABLE_CHECKING set.
3745         (cp_lexer_stop_debugging): Likewise.
3746         (cp_lexer_debug_stream): Only define if ENABLE_CHECKING set.  Otherwise
3747         define a stub macro that expands to NULL.
3748         (cp_lexer_new_main): Only set debugging_p if ENABLE_CHECKING set.
3749         (cp_lexer_new_from_tokens): Likewise.
3750
3751 2004-09-03  Jan Hubicka  <jh@suse.cz>
3752
3753         * decl.c (finish_function): Clean out pointers we no longer need.
3754
3755 2004-09-03  Jan Beulich  <jbeulich@novell.com>
3756
3757         * g++spec.c (MATH_LIBRARY_PROFILE): Default to MATH_LIBRARY rather
3758         than "-lm".
3759
3760 2004-09-02  Paul Brook  <paul@codesourcery.com>
3761
3762         * decl2.c (determine_visibility): Only check data visibility
3763         for VAR_DECLS.
3764
3765 2004-08-31  Mark Mitchell  <mark@codesourcery.com>
3766
3767         * cp-tree.h (DECL_CONSTRUCTION_VTABLE_P): New macro.
3768         * class.c (build_ctor_vtbl_group): Set DECL_CONSTRUCTION_VTABLE_P.
3769         * decl2.c (determine_visibility): Honor
3770         TARGET_CXX_EXPORT_CLASS_DATA.
3771
3772         * class.c (key_method): Rename to ...
3773         (determine_key_method): ... this.
3774         (finish_struct_1): Adjust accordingly.
3775         * cp-tree.h (key_method): Declare.
3776         * decl2.c (maybe_emit_vtables): Determine the key method here if
3777         it has not already been done.
3778
3779 2004-08-31  Ziemowit Laski  <zlaski@apple.com>
3780
3781         * Make-lang.in (CXX_AND_OBJCXX_OBJS): Add cp/cp-objcp-common.o.
3782         (cp/cp-lang.o): Depend on debug.h, gtype-cp.h and cp/cp-objcp-common.h.
3783         (cp/cp-decl.c): Do not depend on gtype-cp.h.
3784         (cp/cp-objcp-common.o): New target.
3785         * cp-lang.c: Include debug.h, cp-objcp-common.h and gtype-cp.h.
3786         (cxx_get_alias_set, cxx_warn_unused_global_decl, cp_expr_size,
3787         cp_tree_size, cp_var_mod_type_p, cxx_initialize_diagnostics): Move
3788         prototypes and definitions to cp-objcp-common.h and cp-objcp-common.c,
3789         respectively.
3790         (LANG_HOOKS_TREE_SIZE, LANG_HOOKS_FINISH,
3791         LANG_HOOKS_CLEAR_BINDING_STACK, LANG_HOOKS_INIT_OPTIONS,
3792         LANG_HOOKS_INITIALIZE_DIAGNOSTICS, LANG_HOOKS_HANDLE_OPTION,
3793         LANG_HOOKS_HANDLE_FILENAME, LANG_HOOKS_MISSING_ARGUMENT,
3794         LANG_HOOKS_POST_OPTIONS, LANG_HOOKS_GET_ALIAS_SET,
3795         LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_EXPAND_EXPR,
3796         LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_PARSE_FILE,
3797         LANG_HOOKS_DUP_LANG_SPECIFIC_DECL, LANG_HOOKS_TRUTHVALUE_CONVERSION,
3798         LANG_HOOKS_SET_DECL_ASSEMBLER_NAME, LANG_HOOKS_MARK_ADDRESSABLE,
3799         LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
3800         LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
3801         LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_PRINT_ERROR_FUNCTION,
3802         LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, LANG_HOOKS_WRITE_GLOBALS,
3803         LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
3804         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
3805         LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE,
3806         LANG_HOOKS_ATTRIBUTE_TABLE, LANG_HOOKS_TREE_INLINING_WALK_SUBTREES,
3807         LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN,
3808         LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
3809         LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P,
3810         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
3811         LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P,
3812         LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN,
3813         LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN, LANG_HOOKS_EXPR_SIZE,
3814         LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR,
3815         LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION, LANG_HOOKS_MAKE_TYPE,
3816         LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE,
3817         LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
3818         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE, LANG_HOOKS_INCOMPLETE_TYPE_ERROR,
3819         LANG_HOOKS_TYPE_PROMOTES_TO, LANG_HOOKS_REGISTER_BUILTIN_TYPE,
3820         LANG_HOOKS_GIMPLIFY_EXPR, LANG_HOOKS_FOLD_OBJ_TYPE_REF): Move
3821         hooks to cp-objcp-common.h.
3822         (finish_file): New function.
3823         * cp-objcp-common.c: New file.
3824         * cp-objcp-common.h: New file.
3825         * cp-tree.h (cp_finish_file): New prototype.
3826         * decl.c: Do not include gtype-cp.h.
3827         * decl2.c (finish_file): Rename to cp_finish_file.
3828
3829 2004-08-31  Richard Henderson  <rth@redhat.com>
3830
3831         PR c++/17221
3832         * pt.c (tsubst_expr): Move OFFSETOF_EXPR handling ...
3833         (tsubst_copy_and_build): ... here.
3834
3835 2004-08-30  Mark Mitchell  <mark@codesourcery.com>
3836
3837         * cp-tree.h (initialize_artificial_var): Declare.
3838         * decl.c (initialize_artifical_var): New function.
3839         * class.c (initialize_array): Remove.
3840         (initialize_vtable): Use initialize_artificial_var.
3841         (build_vtt): Likewise.
3842         (build_ctor_vtbl_group): Likewise.
3843
3844 2004-08-30  Richard Henderson  <rth@redhat.com>
3845
3846         * class.c (build_base_path): Use build_address directly.
3847         * typeck.c (build_unary_op): Don't lower &a.b to pointer
3848         arithmetic directly.
3849         * typeck2.c (store_init_value): Don't assume !TREE_CONSTANT
3850         means !initializer_constant_valid_p.
3851
3852 2004-08-30  Richard Henderson  <rth@redhat.com>
3853
3854         * class.c (fixed_type_or_null): Use get_base_address before
3855         assuming an ADDR_EXPR is non-null.
3856
3857 2004-08-30  Nathan Sidwell  <nathan@codesourcery.com>
3858
3859         * name-lookup.c (pop_binding, pushdecl,
3860         set_identifier_type_value_with_scope, push_overloaded_decl,
3861         arg_assoc_type): Replace abort with gcc_assert or gcc_unreachable.
3862         * parser.c (cp_parser_diagnose_invalid_type_name,
3863         cp_parser_postfix_expression, cp_parser_unary_expression,
3864         cp_parser_check_declarator_template_para): Likewise.
3865         * pt.c (push_inline_template_parms_recursive,
3866         check_explicit_specialization, convert_nontype_argument,
3867         coerce_template_template_parms, uses_template_parms,
3868         instantiate_class_template, tsubst_decl, tsubst, tsubst_copy,
3869         tsubst_expr, instantiate_template,
3870         maybe_adjust_types_for_deduction, type_unification_real,
3871         resolve_overloaded_unification, template_decl_level,
3872         type_dependent_expression_p): Likewise.
3873         * search.c (lookup_base_r): Likewise.
3874         * semantics.c (finish_stmt_expr, simplify_aggr_init_expr): Likewise.
3875         * tree.c (lvalue_p_1, count_functions, cxx_printable_name,
3876         verify_stmt_tree_r, get_type_decl, stabilize_call): Likewise.
3877         * typeck.c (common_type, get_member_function_from_ptrfunc,
3878         build_binary_op, build_unary_op, expand_ptrmemfunc_cst): Likewise.
3879         * typeck2.c (cxx_incomplete_type_diagnostic,
3880         split_nonconstant_init_1, store_init_value,
3881         process_init_constructor): Likewise.
3882
3883 2004-08-30  Nathan Sidwell  <nathan@codesourcery.com>
3884
3885         * call.c (check_dtor_name): Replace abort with gcc_assert or
3886         gcc_unreachable.
3887         (build_call, add_builtin_candidate, build_new_op,
3888         convert_like_real, build_over_call, in_charge_arg_for_name,
3889         source_type, joust): Likewise.
3890         * class.c (build_simple_base_path, get_vcall_index,
3891         finish_struct_1, instantiate_type, get_enclosing_class,
3892         add_vcall_offset_vtbl_entries_1, cp_fold_obj_type_ref): Likewise.
3893         * cp-gimplify.c (cp_genericize): Likewise.
3894         * cp-lang.c (cp_expr_size, cp_tree_size): Likewise.
3895         * cvt.c (cp_convert_to_pointer, ocp_convert): Likewise.
3896         * decl.c (poplevel, make_unbound_class_template, reshape_init,
3897         check_special_function_return_type, grokdeclarator,
3898         grok_op_properties, tag_name, xref_tag, start_preparsed_function,
3899         finish_function): Likewise.
3900         * decl2.c (grokfield, maybe_emit_vtables):Likewise.
3901         * error.c (dump_global_iord, dump_decl, dump_template_decl,
3902         language_to_string): Likewise.
3903         * except.c (choose_personality_routine): Likewise.
3904         * friend.c (do_friend): Likewise.
3905         * g++spec.c (lang_specific_driver): Likewise.
3906         * init.c (build_zero_init, expand_default_init, build_new_1,
3907         build_vec_delete_1, build_vec_init, build_dtor_call): Likewise.
3908         * lex.c (retrofit_lang_decl, cp_type_qual_from_rid): Likewise.
3909         * mangle.c (add_substitution, write_unscoped_name,
3910         write_template_prefix, write_identifier,
3911         write_special_name_destructor, write_type, write_builtin_type,
3912         write_expression, write_template_param,
3913         write_java_integer_type_codes): Likewise.
3914         * method.c (implicitly_declare_fn): Likewise.
3915
3916 2004-08-30  Nathan Sidwell  <nathan@codesourcery.com>
3917
3918         * cp-tree.h (BINFO_PRIMARY_P): Use a binfo flag.
3919         (BINFO_INDIRECT_PRIMARY_P): Remove.
3920         * class.c (determine_primary_base): Rename to ...
3921         (determine_primary_bases): ... here.  Set all primary bases.
3922         (set_primary_base): Remove.
3923         (mark_primary_bases): Remove.
3924         (build_simple_base_path, walk_subobject_offsets,
3925         propagate_binfo_offsets, end_of_class): Adjust.
3926         (layout_class_type): Rename determine_primary_base call.
3927         (dump_class_hierarchy_r, dump_vtable): Adjust. Don't pass a binfo
3928         to type_as_string.
3929         (dfs_build_secondary_vptr_vtt_inits, dfs_accumulate_vtbl_inits,
3930         build_rtti_vtbl_entries): Adjust.
3931         * init.c (build_vtbl_address): Adjust.
3932
3933         * cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Use gcc_assert.
3934
3935 2004-08-28  Ziemowit Laski  <zlaski@apple.com>
3936
3937         * Make-lang.in (CXX_OBJS): Split up into CXX_OBJS and
3938         CXX_AND_OBJCXX_OBJS.
3939         (CXX_C_OBJS): Include in CXX_AND_OBJCXX_OBJS instead of listing
3940         separately on the link line.
3941
3942 2004-08-28  Jason Merrill  <jason@redhat.com>
3943
3944         * decl.c (expand_static_init): Avoid bogus warnings.
3945
3946 2004-08-27  Jason Merrill  <jason@redhat.com>
3947
3948         PR c++/16851
3949         * tree.c (stabilize_init): See through a COMPOUND_EXPR.
3950
3951         PR c++/13684
3952         * decl.c (expand_static_init): Use thread-safety API.
3953         (register_dtor_fn): Return the call, don't expand it.
3954         * tree.c (add_stmt_to_compound): New fn.
3955         (stabilize_call): Use it.
3956
3957 2004-08-27  Richard Henderson  <rth@redhat.com>
3958
3959         * cp-tree.def (OFFSETOF_EXPR): New.
3960         * parser.c (cp_parser_builtin_offsetof): Either built an
3961         OFFSETOF_EXPR, or call fold_offsetof immediately.
3962         * pt.c (tsubst_expr): Handle OFFSETOF_EXPR.
3963
3964 2004-08-27  Nathan Sidwell  <nathan@codesourcery.com>
3965
3966         * call.c (validate_conversion_obstack): Replace
3967         my_friendly_assert with gcc_assert or gcc_unreachable.
3968         (direct_reference_binding, merge_conversion_sequences,
3969         build_user_type_conversion_1, perform_overload_resolution,
3970         build_op_delete_call, enforce_access, call_builtin_trap,
3971         build_over_call, build_special_member_call, build_new_method_call,
3972         initialize_reference): Likewise.
3973         * class.c (build_base_path, build_primary_vtable, alter_access,
3974         check_bases, update_vtable_entry_for_fn, layout_empty_base,
3975         clone_function_decl, adjust_clone_args,
3976         type_requires_array_cookie, include_empty_classes,
3977         finish_struct_1, resolve_address_of_overloaded_function,
3978         instantiate_type, get_vtbl_decl_for_binfo, build_vtt_inits,
3979         dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group,
3980         accumulate_vtbl_inits, build_vtbl_initializer,
3981         build_vbase_offset_vtbl_entries, build_rtti_vtbl_entries): Likewise.
3982         * cvt.c (build_up_reference, convert_to_reference): Likewise.
3983         * decl.c (poplevel, duplicate_decls, make_typename_type,
3984         cxx_init_decl_processing, reshape_init, check_initializer,
3985         make_rtl_for_nonlocal_decl, initialize_local_var, cp_finish_decl,
3986         expand_static_init, grokfndecl, grokvardecl, build_ptrmem_type,
3987         grokdeclarator, copy_fn_p, grok_op_properties, xref_tag,
3988         xref_basetypes, start_preparsed_function, save_function_data,
3989         finish_function, finish_method, maybe_register_incomplete_var,
3990         complete_vars): Likewise.
3991         * decl2.c (grok_array_decl, check_member_template,
3992         check_classfn, finish_static_data_member_decl, coerce_new_type,
3993         coerce_delete_type, import_export_class, decl_needed_p,
3994         determine_visibility, import_export_decl, build_cleanup,
3995         start_static_initialization_or_destructi, do_static_destruction,
3996         prune_vars_needing_no_initialization,
3997         build_offset_ref_call_from_tree): Likewise.
3998         * error.c (dump_decl, dump_expr): Likewise.
3999         * init.c (finish_init_stmts, build_zero_init,
4000         expand_virtual_init, expand_default_init, expand_aggr_init_1,
4001         build_offset_ref, build_new_1, build_delete, build_vbase_delete):
4002         Likewise.
4003         * mangle.c (write_method_parms, write_template_args,
4004         write_expression, write_template_arg): Likewise.
4005         * method.c (make_thunk, finish_thunk, use_thunk): Likewise.
4006         * name-lookup.c (pop_binding, begin_scope, leave_scope,
4007         resume_scope, push_using_decl, validate_nonmember_using_decl,
4008         is_ancestor, poplevel_class, set_inherited_value_binding_p,
4009         push_class_level_binding, do_class_using_decl, push_namespace,
4010         pop_namespace, add_using_namespace, ambiguous_decl,
4011         lookup_namespace_name, lookup_type_current_level,
4012         maybe_process_template_type_declaration): Likewise.
4013         * parser.c (cp_lexer_peek_nth_token,
4014         cp_parser_parse_and_diagnose_invalid_typ,
4015         cp_parser_translation_unit, cp_parser_template_id,
4016         cp_parser_lookup_name, cp_parser_late_parsing_for_member): Likewise.
4017         * pt.c (push_access_scope, finish_member_template_decl,
4018         push_inline_template_parms_recursive, add_outermost_template_args,
4019         get_innermost_template_args, begin_explicit_instantiation,
4020         end_explicit_instantiation, retrieve_specialization,
4021         is_specialization_of, is_specialization_of_friend,
4022         register_specialization, check_explicit_specialization,
4023         comp_template_parms, process_template_parm,
4024         process_partial_specialization, convert_nontype_argument,
4025         coerce_template_template_parms, coerce_template_parms,
4026         mangle_class_name_for_template, lookup_template_function,
4027         lookup_template_class, instantiate_class_template, tsubst_decl,
4028         tsubst_function_type, tsubst, tsubst_qualified_id, tsubst_copy,
4029         instantiate_template, fn_type_unification, type_unification_real,
4030         get_template_base, regenerate_decl_from_template,
4031         template_for_substitution, instantiate_decl,
4032         get_mostly_instantiated_function_type, dependent_scope_ref_p,
4033         value_dependent_expression_p, resolve_typename_type): Likewise.
4034         * repo.c (repo_emit_p): Likewise.
4035         * rtti.c (build_headof, get_tinfo_decl, get_pseudo_ti_init,
4036         create_tinfo_types, emit_tinfo_decl): Likewise.
4037         * search.c (lookup_base_r, lookup_base, lookup_field_1,
4038         dfs_access_in_type, build_baselink, lookup_member,
4039         adjust_result_of_qualified_name_lookup, copied_binfo): Likewise.
4040         * semantics.c (perform_or_defer_access_check,
4041         finish_non_static_data_member, finish_stmt_expr_expr,
4042         finish_stmt_expr, finish_call_expr, finish_pseudo_destructor_expr,
4043         finish_template_template_parm, finish_member_declaration,
4044         emit_associated_thunks): Likewise.
4045         * tree.c (build_target_expr_with_type, force_target_expr,
4046         copy_binfo, get_first_fn, cp_tree_equal): Likewise.
4047         * typeck.c (type_after_usual_arithmetic_conversions, comptypes,
4048         cxx_sizeof_or_alignof_type, perform_integral_promotions,
4049         build_class_member_access_expr, finish_class_member_access_expr,
4050         build_ptrmemfunc_access_expr, build_unary_op,
4051         unary_complex_lvalue, cxx_mark_addressable, build_modify_expr,
4052         build_ptrmemfunc, expand_ptrmemfunc_cst, check_return_expr
4053         * typeck2.c (complete_type_check_abstract,
4054         abstract_virtuals_error, process_init_constructor,
4055         add_exception_specifier): Likewise.
4056
4057 2004-08-27  Nathan Sidwell  <nathan@codesourcery.com>
4058
4059         * class.c (build_vtbl_initializer): Use ssize_int.
4060         * decl.c (complete_array_type): Likewise.
4061         * method.c (finish_thunk): Likewise.
4062         * search.c (get_dynamic_base_type): Likewise.
4063
4064 2004-08-26  Richard Henderson  <rth@redhat.com>
4065
4066         * cp-tree.h (DECL_FIELD_IS_BASE): New.
4067         * class.c (build_base_field): Set it.
4068         (build_simple_base_path): Use it.
4069         (fixed_type_or_null): Don't consider base fields definitive.
4070
4071 2004-08-25  Roger Sayle  <roger@eyesopen.com>
4072
4073         PR middle-end/16693
4074         PR tree-optimization/16372
4075         * decl.c (finish_enum): Make the precision of the enumerated type
4076         the same width as the underlying integer type.
4077
4078 2004-08-25  Mark Mitchell  <mark@codesourcery.com>
4079
4080         PR c++/17155
4081         * lex.c (build_lang_decl): Set DECL_NO_STATIC_CHAIN for all C++
4082         functions.
4083
4084         * mangle.c (get_identifier_nocopy): Add cast.
4085
4086         * cp-tree.h (mangle_type): Remove.
4087         * mangle.c (globals): GTY it.
4088         (mangle_obstack): New variable.
4089         (name_obstack): Likewise.
4090         (name_base): Likewise.
4091         (write_char): Adjust accordingly.
4092         (write_chars): Likewise.
4093         (write_string): Likewise.
4094         (start_mangling): Initialize G.substitutions only one.  Add
4095         ident_p parameter.
4096         (finish_mangling): Use VARRAY_CLEAR to reclaim
4097         storage in G.substitutions.  Use obstack_finish.
4098         (init_mangle): Adjust for changes to variable names above.
4099         Initialize G.substitutions.
4100         (mangle_decl_string): Adjust call to start_mangling.
4101         (get_identifier_nocopy): New function.
4102         (mangle_decl): Use it.
4103         (mangle_type_string): Adjust call to start_mangling.
4104         (mangle_special_for_type): Likewise.
4105         (mangle_vtt_for_type): Likewise.
4106         (mangle_ctor_vtbl_for_type): Likewise.
4107         (mangle_thunk): Likewise.
4108         (mangle_guard_variable): Likewise.
4109         (mangle_ref_init_variable): Likewise.
4110
4111 2004-08-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4112
4113         PR c++/14428
4114         * pt.c (redeclare_class_template): Check the type of non-type and
4115         template template parameter.
4116
4117 2004-08-25  Nathan Sidwell  <nathan@codesourcery.com>
4118
4119         * call.c (convert_class_to_reference): Adjust build_int_cst calls.
4120         (build_user_type_conversion_1, convert_like_real,
4121         build_java_interface_fn_ref, build_special_member_call): Likewise.
4122         * class.c (finish_struct_1, build_vtbl_initializer): Likewise.
4123         * cp-gimplify.c (cp_gimplify_expr): Likewise.
4124         * cvt.c (cp_convert_to_pointer): Likewise.
4125         * decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
4126         * decl2.c (start_static_initialization_or_destruction,
4127         generate_ctor_or_dtor_function): Likewise.
4128         * except.c (build_throw): Likewise.
4129         * mangle.c (write_integer_cst): Likewise.
4130         * method.c (finish_thunk): Likewise.
4131         * rtti.c (build_headof, get_tinfo_decl_dynamic,
4132         build_dynamic_cast_1, ptr_initializer, ptm_initializer,
4133         get_pseudo_ti_init): Likewise.
4134         * search.c (get_dynamic_cast_base_type): Likewise.
4135
4136 2004-08-25  Zack Weinberg  <zack@codesourcery.com>
4137
4138         * class.c, search.c: Remove references to DWARF_DEBUG.
4139
4140 2004-08-25  Adam Nemet  <anemet@lnxw.com>
4141
4142         * repo.c (extract_string): Reset backquote after one character.
4143         (get_base_filename): Fix indentation.
4144
4145 2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>
4146
4147         * decl.c (cxx_init_decl_processing): Adjust
4148         build_common_tree_nodes call.
4149
4150 2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>
4151
4152         PR c++/16889
4153         * (is_subobject_of_p): Resurrect & optimize.
4154         (lookup_field_r): Use it.
4155
4156 2004-08-24  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4157
4158         PR c++/16706
4159         * search.c (friend_accessible_p): Increment processing_template_decl
4160         when deal with TEMPLATE_DECL of SCOPE.
4161
4162 2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>
4163
4164         PR c++/17149
4165         * semantics.c (check_accessibility_of_qualified_id): Defer check
4166         if qualifying_type is a template parameter.
4167
4168 2004-08-23  Mark Mitchell  <mark@codesourcery.com>
4169
4170         PR c++/17163
4171         * pt.c (instantiate_decl): Do not try to apply
4172         DECL_DECLARED_INLINED_P to a VAR_DECL.
4173
4174         * search.c (build_baselink): Fix typo in comment.
4175
4176 2004-08-22 Andrew Pinski  <apinski@apple.com>
4177
4178         Revert:
4179         2004-08-22  Andrew Pinski  <apinski@apple.com>
4180         PR c++/14029
4181         * typeck.c (build_unary_op): Use &a.b if the folded lowered
4182         expression is not constant.
4183
4184 2004-08-23  Nathan Sidwell  <nathan@codesourcery.com>
4185
4186         * name-lookup.c (pushdecl): Rename build_type_copy call.
4187         * tree.c (cp_build_qualified_type_real,
4188         build_exception_variant, handle_java_interface_attribute): Likewise.
4189
4190 2004-08-22  Andrew Pinski  <apinski@apple.com>
4191
4192         PR c++/14029
4193         * typeck.c (build_unary_op): Use &a.b if the folded lowered
4194         expression is not constant.
4195
4196 2004-08-20  Mark Mitchell  <mark@codesourcery.com>
4197
4198         PR c++/17121
4199         * decl.c (expand_static_init): Use DECL_FUNCTION_SCOPE_P.
4200
4201 2004-08-21  Joseph S. Myers  <jsm@polyomino.org.uk>
4202
4203         PR c++/17120
4204         * pt.c (tsubst_copy_and_build): Avoid clearing TREE_NO_WARNING for
4205         MODOP_EXPR.
4206
4207 2004-08-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4208
4209         * pt.c (register_specialization): Check DECL_TEMPLATE_SPECIALIZATION
4210         before calling comp_template_args.
4211
4212 2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>
4213
4214         * class.c (build_vtbl_initializer): Use build_int_cst for
4215         negative size types.
4216         * decl.c (complete_array_type): Likewise.
4217         * method.c (finish_thunk): Likewise.
4218
4219 2004-08-20  Andreas Tobler  <a.tobler@schweiz.ch>
4220
4221         * tree.c: Remove unused mark_local_for_remap_r.
4222
4223 2004-08-19  Eric Christopher  <echristo@redhat.com>
4224
4225         * cp-tree.h (cxx_unsave_expr_now): Delete prototype.
4226         * tree.c (cxx_unsave_expr_now): Delete.
4227         (cp_unsave_r): Ditto.
4228
4229 2004-08-19  Mark Mitchell  <mark@codesourcery.com>
4230
4231         PR c++/15890
4232         * pt.c (push_template_decl_real): Disallow template allocation
4233         functions with fewer than two parameters.
4234
4235 2004-08-19  Nathan Sidwell  <nathan@codesourcery.com>
4236
4237         * cp-tree.h (build_shared_int_cst): Remove.
4238         * tree.c (shared_int_cache): Remove.
4239         (build_shared_int_cst): Remove.
4240         * class.c (finish_struct_1): Use build_int_cst.
4241
4242 2004-08-19  Nathan Sidwell  <nathan@codesourcery.com>
4243
4244         * decl.c (finish_enum): Do not copy value node early, copy
4245         later.
4246         * lex.c (cxx_init): Force null_node to be unique.
4247
4248 2004-08-19  Joseph S. Myers  <jsm@polyomino.org.uk>
4249
4250         PR c++/17041
4251         * pt.c (tsubst_copy, tsubst_copy_and_build): Copy TREE_NO_WARNING
4252         from input for MODOP_EXPR.
4253
4254 2004-08-18  Mark Mitchell  <mark@codesourcery.com>
4255
4256         * pt.c (dependent_template_p): Fix typo in commment.
4257
4258         PR c++/17068
4259         * pt.c (dependent_template_p): Treat IDENTIFIER_NODEs as
4260         dependent.
4261
4262 2004-08-17  Mark Mitchell  <mark@codesourcery.com>
4263
4264         PR c++/16246
4265         * pt.c (unify): Tidy ARRAY_TYPE handling.  Make sure that non-type
4266         arguments have the same type as the corresponding parameter.
4267
4268         PR c++/16215
4269         * parser.c (cp_parser_name_lookup_error): If parser->object_scope
4270         is set use it for diagnostic purposes.
4271         (cp_parser_pseudo_destructor_name): Remove special-case error
4272         message.
4273
4274         PR c++/15871
4275         * semantics.c (expand_or_defer_fn): Honor -fkeep-inline-functions.
4276
4277         PR c++/16965
4278         * cp-tree.h (qualified_name_lookup_error): Add parameter.
4279         * name-lookup.c (do_class_using_decl): Restrict set of entities
4280         passed to cp_emit_debug_info_for_using more carefully.
4281         (lookup_qualified_name): Allow lookup_member to return sets of
4282         ambiguous entries.
4283         * parser.c (cp_parser_lookup_name): Add ambiguous_p parameter.
4284         (cp_parser_primary_expression): Handle ambiguous lookups.
4285         (cp_parser_template_name): Adjust use of cp_parser_lookup_name.
4286         (cp_parser_template_argument): Likewise.
4287         (cp_parser_elaborate_type_specifier): Likewise.
4288         (cp_parser_namespace_name): Likewise.
4289         (cp_parser_class_name): Likewise.
4290         (cp_parser_lookup_name_simple): Likewise.
4291         * pt.c (tsubst_qualified_id): Handle ambiguous results.
4292         (tsubst_expr): Likewise.
4293         * semantics.c (qualified_name_lookup_error): Add decl paramter.
4294         For ambiguous lookups, print candidates.
4295
4296 2004-08-16  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4297
4298         PR c++/6749
4299         * pt.c (instantiate_pending_templates): Add int parameter.  Don't
4300         return anything.
4301         * cp-tree.h (instantiate_pending_templates): Adjust prototype.
4302         * decl2.c (finish_file): Adjust call to
4303         instantiate_pending_templates.
4304
4305 2004-08-15  Roger Sayle  <roger@eyesopen.com>
4306
4307         * call.c (build_vfield_ref, build_call, build_conditional_expr,
4308         convert_arg_to_ellipsis, build_x_va_arg, build_over_call,
4309         build_java_interface_fn_ref, build_special_member_call,
4310         build_new_method_call, initialize_reference): Replace calls to
4311         build with calls to buildN.
4312         * class.c (build_base_path, convert_to_base_statically,
4313         build_vfn_ref, instantiate_type, dfs_accumulate_vtbl_inits,
4314         build_vtbl_initializer): Likewise.
4315         * cp-gimplify.c (genericize_try_block, genericize_catch_block,
4316         gimplify_if_stmt, cp_genericize_r): Likewise.
4317         * cvt.c (convert_to_void): Likewise.
4318         * decl.c (check_initializer, finish_constructor_body,
4319         finish_destructor_body): Likewise.
4320         * error.c (dump_expr): Likewise.
4321         * except.c (build_exc_ptr, expand_start_catch_block, build_throw):
4322         Likewise.
4323         * init.c (perform_member_init, expand_virtual_init,
4324         expand_cleanup_for_base, build_init, expand_default_init,
4325         build_offset_ref, decl_constant_value, build_new, build_new_1,
4326         build_vec_delete_1, build_vec_init, build_delete,
4327         push_base_cleanups, build_vec_delete): Likewise.
4328         * mangle.c (write_integer_cst): Likewise.
4329         * method.c (thunk_adjust, do_build_copy_constructor,
4330         do_build_assign_ref): Likewise.
4331         * pt.c (lookup_template_function, tsubst, tsubst_copy_and_build,
4332         unify, build_non_dependent_expr): Likewise.
4333         * rtti.c (build_headof, build_typeid, ifnonnull,
4334         build_dyanmic_cast_1, tinfo_base_init): Likewise.
4335         * semantics.c (begin_compound_stmt, finish_call_expr,
4336         finish_pseudo_destructor_expr, finish_id_expression,
4337         simplify_aggr_init_expr, finalize_nrv_r): Likewise.
4338         * tree.c (build_target_expr, build_cplus_new, array_type_nelts_top,
4339         array_type_nelts_total, stabilize_call): Likewise.
4340         * typeck.c (decay_conversion, build_class_member_access_expr,
4341         lookup_destructor, build_ptrmemfunc_access_expr, build_array_ref,
4342         get_member_function_from_ptrfunc, build_binary_op, pointer_diff,
4343         build_x_unary_op, build_unary_op, unary_complex_lvalue,
4344         build_compound_expr, build_modify_expr, expand_ptrmemfunc_cst,
4345         check_return_expr): Likewise.
4346         * typeck2.c (split_nonconstant_1, split_nonconstant_init_1,
4347         split_nonconstant_init, store_init_value, build_m_component_ref):
4348         Likewise.
4349
4350 2004-08-15  Nathan Sidwell  <nathan@codesourcery.com>
4351
4352         * call.c (convert_class_to_reference,
4353         build_user_type_conversion_1, convert_like_real,
4354         build_java_interface_fn_ref, build_special_member_call): Use
4355         build_int_cst.
4356         * class.c (build_vtbl_initializer): Likewise.
4357         * cp-gimplify.c (cp_gimplify_expr): Likewise.
4358         * cvt.c (cp_convert_to_pointer): Likewise.
4359         * decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
4360         * decl2.c (start_static_initialization_or_destruction,
4361         generate_ctor_or_dtor_function): Likewise.
4362         * except.c (build_throw): Likewise.
4363         * lex.c (cxx_init): Likewise.
4364         * mangle.c (write_integer_cst): Likewise.
4365         * rtti.c (build_headof, get_tinfo_decl_dynamic,
4366         build_dynamic_cast_1, ptr_initializer, ptm_initializer,
4367         get_pseudo_ti_init): Likewise.
4368         * search.c (get_dynamic_cast_base_type): Likewise.
4369         * tree.c (build_shared_int_cst): Likewise.
4370
4371 2004-08-12  Mark Mitchell  <mark@codesourcery.com>
4372
4373         PR c++/16273
4374         * class.c (count_depth_data): New type.
4375         (dfs_depth_post): New function.
4376         (dfs_depth_q): Likewise.
4377         (find_final_overrider_data_s): Change type of vpath.
4378         Add vpath_list.
4379         (dfs_find_final_overrider_1): New function.
4380         (dfs_find_final_overrider): Use it.
4381         (dfs_find_final_overrider_q): Adjust use of vpath.
4382         (dfs_find_final_overrider_post): Likewise.
4383         (find_final_overrider): Use dfs_depth.  Allocate and deallocate
4384         vpath_list.
4385
4386 2004-08-12 Jan Beulich <jbeulich@novell.com>
4387
4388         * parser.c (cp_parser_asm_definition): Properly consume scope operator
4389         tokens preceding the clobbers. Don't check for scope operator
4390         following inputs. Simplify inputs handling to match that now used for
4391         clobbers.
4392
4393 2004-08-11  Mark Mitchell  <mark@codesourcery.com>
4394
4395         PR c++/16698
4396         * except.c (build_throw): Allocate cleanup_type and the function
4397         for __cxa_throw separately.
4398
4399         PR c++/16853
4400         * call.c (standard_conversion): Do not accept conversions between
4401         pointers to members if the class types are unrelated.
4402
4403         PR c++/16618
4404         * parser.c (cp_parser_builtin_offsetof): Cast to "const volatile
4405         char &" instead of just "char &".
4406
4407         PR c++/16870
4408         * pt.c (tsubst): Just return the unknown_type_node.
4409
4410 2004-08-11  Mark Mitchell  <mark@codesourcery.com>
4411
4412         PR c++/16964
4413         * parser.c (cp_parser_class_specifier): Robustify.
4414
4415         PR c++/16904
4416         * pt.c (tsubst_copy_and_build): Complain about invalid
4417         qualification.
4418
4419         PR c++/16929
4420         * pt.c (tsubst_default_argument): Clear out current_class_ptr and
4421         current_class_ref while tsubsting.
4422
4423 2004-08-10  Mark Mitchell  <mark@codesourcery.com>
4424
4425         PR c++/16971
4426         * parser.c (cp_parser_init_declarator): Robustify.
4427
4428 2004-08-06  Richard Sandiford  <rsandifo@redhat.com>
4429
4430         * typeck2.c (process_init_constructor): Guard the missing field warning
4431         with warn_missing_field_initializers rather than extra_warnings.
4432
4433 2004-08-06  Paolo Bonzini  <bonzini@gnu.org>
4434
4435         * class.c (instantiate_type) <ENTRY_VALUE_EXPR>: Do not handle.
4436
4437 2004-08-05  Mark Mitchell  <mark@codesourcery.com>
4438
4439         * decl.c (start_preparsed_function): Move determine_visibility
4440         call.
4441         * decl2.c (determine_visibility): Incorporate dllexport testing.
4442
4443 2004-08-05  Geoffrey Keating  <geoffk@apple.com>
4444
4445         * g++spec.c (lang_specific_driver): An -Xlinker or -Wl, option
4446         means that libstdc++ is needed.
4447
4448 2004-08-05  Nathan Sidwell  <nathan@codesourcery.com>
4449
4450         * cvt.c (cp_convert_to_pointer): Adjust force_fit_type call.
4451
4452 2004-08-04  Geoffrey Keating  <geoffk@apple.com>
4453
4454         * decl.c (make_rtl_for_nonlocal_decl): Set DECL_ASSEMBLER_NAME rather
4455         than passing it as a parameter to rest_of_decl_compilation.
4456         * decl2.c (grokfield): Use set_user_assembler_name.
4457
4458 2004-08-04  Nathan Sidwell  <nathan@codesourcery.com>
4459
4460         * decl.c (complete_array_type): Don't gratuitously copy
4461         maxindex. Its type is always set.
4462
4463 2004-08-04  Paul Brook  <paul@codesourcery.com>
4464
4465         * Make-lang.in (cp/semantics.o, cp/optimize.o): Depend on TARGET_H.
4466         * cp-tree.h (struct language_function): Rename x_dtor_label to
4467         x_cdtor_label.
4468         (dtor_label): Rename ...
4469         (cdtor_label): ... to this.
4470         * decl.c (begin_constructor_body): Remove.
4471         (check_special_function_return_type): Maybe change the return type.
4472         (grokdeclarator): Pass the class type.
4473         (start_preparsed_function): Constructors may need a return label.
4474         (finish_constructor_body, finish_destructor_body): Set the return
4475         value.
4476         (begin_function_body): Don't call begin_constructor_body.
4477         (finish_function): Don't warn for constructors or destructors.
4478         (implicitly_declare_fn): Maybe change the return type.
4479         * optimize.c: Include target.h.
4480         (maybe_clone_body): Remap the function result.
4481         * semantics.c: Include target.h.
4482         (finish_return_stmt): Maybe jump to return label for constructors.
4483
4484 2004-08-03  Mark Mitchell  <mark@codesourcery.com>
4485
4486         * class.c (build_vtable): Do not set DECL_VISIBILITY here.
4487         (check_field_decls): Or here.
4488         (check_methods): Or here.
4489         (initialize_array): Don't mess with DECL_CONTEXT.
4490         * cp-tree.h (start_decl): Adjust prototype.
4491         (determine_visibility): New function.
4492         * decl.c (duplicate_decls): Remove checks for hidden "operator
4493         new".
4494         (build_library_fn_1): Give all library functions default
4495         visibility.
4496         (start_decl): Add pop_scope_p parameter.  Tidy.
4497         (cp_finish_decl): Do not pop scopes here.  Call
4498         determine_visibility for variable definitions.
4499         (start_preparsed_function): Call determine_visibility.
4500         * decl2.c (determine_visibility): New function.
4501         * method.c (use_thunk): Fix formatting.
4502         * parser.c (cp_parser_condition): Adjust calls to start_decl.
4503         (cp_parser_init_declarator): Likewise.
4504         * pt.c (instantiate_decl): Always call pop_nested_class.
4505         * rtti.c (get_tinfo_decl): Do not set DECL_VISIBILITY.
4506         (tinfo_base_init): Likewise.
4507
4508 2004-08-02  Mark Mitchell  <mark@codesourcery.com>
4509
4510         PR c++/16707
4511         * name-lookup.c (validate_nonmember_using_decl): Robustify.
4512
4513 2004-08-01  Mark Mitchell  <mark@codesourcery.com>
4514
4515         PR c++/16224
4516         * name-lookup.c (decl_namespace): Remove.
4517         (current_decl_namespace): Use decl_namespace_context instead of
4518         decl_namespace.
4519         (push_decl_namespace): Likewise.
4520         (arg_assoc_class): Likewise.
4521         (arg_assoc_type): Likewise.
4522         * pt.c (check_specialization_namespace): New function.
4523         (maybe_process_partial_specialization): Use it.
4524         (register_specialization): Likewise.
4525
4526         PR c++/16489
4527         * cp-tree.h (DECL_INTEGRAL_CONSTANT_VAR_P): New macro.
4528         * call.c (null_ptr_cst_p): Handle variables with constant
4529         initializers.
4530         * pt.c (convert_nontype_argument): Use
4531         DECL_INTEGRAL_CONSTANT_VAR_P.
4532         * semantics.c (finish_id_expression): Likewise.
4533
4534         PR c++/16529
4535         * decl.c (duplicate_decls): Reject duplicate namespace
4536         declarations.
4537
4538         PR c++/16810
4539         * typeck.c (build_ptrmemfunc): Loosen assertion.
4540
4541 2004-08-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4542
4543         * call.c (z_candidate::template_decl): Rename from template.
4544         (add_template_candidate_real): Adjust member reference.
4545         (joust): Likewise.
4546
4547 2004-07-29  Mark Mitchell  <mark@codesourcery.com>
4548
4549         * cp-tree.h (IDENTIFIER_REPO_CHOSEN): Define.
4550         (lang_decl_flags): Narrow the width of "languages".  Add
4551         repo_available_p.
4552         (DECL_NEEDED_P): Remove.
4553         (FOR_EACH_CLONE): New macro.
4554         (DECL_REPO_AVAILABLE_P): Likewise.
4555         (DECL_TINFO_P): Likewise.
4556         (set_linkage_according_to_type): Declare.
4557         (import_export_vtable): Remove.
4558         (import_export_tinfo): Likewise.
4559         (mark_needed): New function.
4560         (decl_needed_p): Likewise.
4561         (note_vauge_linkage_fn): Likewise.
4562         (init_repo): Change prototype.
4563         (repo_template_used): Remove.
4564         (repo_template_instantiated): Likewise.
4565         (repo_emit_p): New function.
4566         (repo_export_class_p): Likewise.
4567         (no_linkage_check): Change prototype.
4568         * class.c (set_linkage_according_to_type): New function.
4569         (build_vtable): Use it.  Do not call import_export_vtable.  Set
4570         DECL_IGNORED_P if appropriate.
4571         * decl.c (duplicate_decls): Preserve DECL_REPO_AVAILABLE_P.
4572         (make_rtL_for_nonlocal_decls): Check for template instantiations
4573         explicitly.
4574         (grokfndecl): Adjust call to no_linkage_check.
4575         (set_linkage_for_static_data_member): New function.
4576         (grokvardecl): Use it.  Adjust call to no_linkage_check.
4577         (grokdeclarator): Use set_linkage_for_static_data_member.
4578         * decl2.c (note_vague_linkage_fn): New function.
4579         (note_vague_linkage_var): Likewise.
4580         (finish_static_data_member_decl): Use it.
4581         (import_export_vtable): Remove.
4582         (import_export_class): Use repo_export_class_p.
4583         (var_finalized_p): Simplify.
4584         (maybe_emit_vtables): Simplify.
4585         (mark_needed): New function.
4586         (decl_needed_p): Likewise.
4587         (import_export_decl): Add documentation and consistency checks.
4588         Use repo_emit_p.  Handle virtual tables and RTTI information
4589         here.
4590         (import_export_tinfo): Remove.
4591         (write_out_vars): Call import_export_decl.
4592         (cxx_callgraph_analyze_expr): Ensure that all vtables are emitted
4593         whenever one is.
4594         (finish_file): Use decl_needed_p.  Do not call import_export_decl
4595         for undefined static data members.  Do not warn about undefined
4596         inlines when using a repository.
4597         (mark_used): Use note_vague_linkage_fn.  Always defer template
4598         instantiations.
4599         * lex.c (cxx_init): Adjust call to init_repo.  Always set
4600         flag_unit_at_a-time.
4601         * method.c (synthesize_method): Remove unncessary
4602         import_export_decl call.
4603         (implicitly_declare_fn): Use set_linkage_according_to_type.
4604         * optimize.c (maybe_clone_body): Use FOR_EACH_CLONE.
4605         * pt.c (instantiate_class_template): Don't redundantly add classes
4606         to keyed_classes.  Don't call repo_template_used.
4607         (tsubst_decl): Set DECL_INTERFACE_KNOWN for instantiations of
4608         templates with internal linkage.
4609         (check_instantiated_args): Adjust call to no_linkage_check.
4610         (instantiate_template): Use FOR_EACH_CLONE.
4611         (mark_definable): New function.
4612         (mark_decl_instantiated): Use it.
4613         (do_decl_instantiation): Adjust tests for explicit instantiation
4614         after "extern template".
4615         (instantiate_class_member): Do not use repo_template_instantiated.
4616         (do_type_instantiation): Simplify.
4617         (instantiate_decl): Use mark_definable.  Check repo_emit_p.
4618         Simplify.
4619         * repo.c (repo_get_id): Remove.
4620         (original_repo): Remove.
4621         (IDENTIFIER_REPO_USED): Remove.
4622         (IDENTIFIER_REPO_CHOSEN): Remove.
4623         Remove all #if 0'd code.
4624         (repo_template_used): Remove.
4625         (repo_template_instantiated): Remove.
4626         (temporary_obstack_initialized_p): New variable.
4627         (init_repo): Register with lang_post_pch_load.  Avoid creating
4628         identifiers unnecessarily.  Don't use original_repo.  Close the
4629         file here.
4630         (reopen_repo_file_for_write): Not here.
4631         (finish_repo): Always write out a new repository file.
4632         (repo_emit_p): New function.
4633         (repo_export_class_p): Likewise.
4634         * rtti.c (get_tinfo_decl): Use set_linkage_according_to_type.
4635         (involves_incomplete_p): New function.
4636         (tinfo_base_init): Use it.
4637         (ptr_initializer): Remove non_public_ptr parameter.
4638         (ptm_initializer): Likewise.
4639         (get_pseudo_ti_init): Likewise.
4640         (unemitted_tinfo_decl_p): Remove.
4641         (emit_tinfo_decl): Use import_export_decl.
4642         * semantics.c (expand_body): Move updates of static_ctors and
4643         static_dtors to ...
4644         (expand_or_defer_fn): ... here.
4645         * tree.c (no_linkage_check): Add relaxed_p parameter.
4646
4647 2004-07-28  Eric Christopher  <echristo@redhat.com>
4648
4649         * cp-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete.
4650
4651 2004-07-28  Nathan Sidwell  <nathan@codesourcery.com>
4652
4653         * cp-tree.h (struct tree_pair_s): New.
4654         (typedef tree_pair_p): New.
4655         (DEF_VEC_O(tree_pair_s)): New.
4656         (struct lang_type_class): Make vcall_indices a VEC(tree_pair_s).
4657         (CLASSTYPE_VCALL_INDICES): Update documentation.
4658         * class.c (get_vcall_index): Adjust.
4659         (add_vcall_offset): Adjust.
4660
4661 2004-07-27  Kelley Cook  <kcook@gcc.gnu.org>
4662
4663         * pt.c, typeck.c: Remove spurious carriage returns.
4664
4665 2004-07-27  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4666
4667         PR c++/14429
4668         * pt.c (coerce_template_template_parms) <PARM_DECL case>: Only check
4669         when the type of ARG is not dependent.
4670
4671 2004-07-26  Geoffrey Keating  <geoffk@apple.com>
4672
4673         * g++spec.c (LIBSTDCXX_PROFILE): Default to LIBSTDCXX.
4674         (lang_specific_driver): If the C++ or math library options don't
4675         start with '-l', don't count them as added libraries.
4676
4677 2004-07-26  Nathan Sidwell  <nathan@codesourcery.com>
4678
4679         * decl.c (xref_basetypes): Adjust base access vector creation.
4680         * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Adjust base
4681         access accesses.
4682         * search.c (dynamic_cast_base_recurse, dfs_access_in_type): Likewise.
4683
4684 2004-07-26  Niall Douglas  <s_fsfeurope2@nedprod.com>
4685             Brian Ryner  <bryner@brianryner.com>
4686
4687         PR c++/15000
4688         PR c++/9283
4689         * class.c (check_field_decls): Apply hidden visibility if
4690         -fvisibility-inlines-hidden and inlined unless otherwise specified
4691         (build_vtable): Set vtable visibility to class visibility.
4692         (check_field_decls): Default static member visibility to class
4693         visibility.
4694         (check_methods): Default method visibility to class visibility.
4695         * cp-tree.h: Added CLASSTYPE_VISIBILITY and
4696         CLASSTYPE_VISIBILITY_SPECIFIED macro.
4697         * decl.c (duplicate_decls): New logic for merging definition decls
4698         with declaration decls. Added ignore & warning when non default
4699         applied to global operator new or delete.
4700         * method.c, optimize.c, rtti.c: Added setting of VISIBILITY_SPECIFIED
4701         wherever VISIBILITY was changed
4702         * rtti.c (get_tinfo_decl): Set typeinfo visibility to class
4703         visibility.
4704         (tinfo_base_init): Set typeinfo name visibility to class visibility.
4705
4706 2004-07-25  Bernardo Innocenti  <bernie@develer.com>
4707
4708         * decl.c: Rename all identifiers named `class' to `cl'.
4709         * cp-tree.h: Likewise.
4710
4711 2004-07-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4712
4713         * cp-tree.h (TYPE_SET_PTRMEMFUNC_TYPE): Use GGC_CNEW.
4714         * typeck2.c (abstract_virtuals_error): Use GGC_NEW.
4715         * name-lookup.c (binding_entry_make): Use GGC_NEW.
4716         (binding_table_construct): Use GGC_CNEWVEC.
4717         (binding_table_new): Use GGC_NEW.
4718         (cxx_binding_make): Likewise.
4719         (begin_scope): Likewise.
4720         (push_to_top_level): Use GCC_CNEW.
4721         * parser.c (cp_token_cache_new): Likewise.
4722         (cp_token_cache_push_token): Likewise.
4723         (cp_lexer_new_main): Likewise.
4724         (cp_lexer_new_from_tokens): Likewise.
4725         (cp_parser_context_new): Likewise.
4726         (cp_parser_new): Likewise.
4727         (cp_lexer_new_from_tokens): Use GGC_NEWVEC.
4728         * lex.c (cxx_make_type): Use GGC_CNEW.
4729         (retrofit_lang_decl): Use GGC_NEWVAR.
4730         (cxx_dup_lang_specific_decl): Likewise.
4731         (copy_lang_type): Likewise.
4732         * decl.c (use_label): Use GGC_NEW instead of ggc_alloc.
4733         (save_function_data): Likewise.
4734         (lookup_label): Use GGC_CNEW instead of ggc_alloc_cleared.
4735         (cxx_push_function_context): Likewise.
4736
4737 2004-07-25  Richard Henderson  <rth@redhat.com>
4738
4739         * decl.c (start_preparsed_function): Set DECL_ARTIFICIAL and
4740         DECL_IGNORED_P on RESULT_DECL.
4741         * semantics.c (finalize_nrv): Copy them too.
4742
4743 2004-07-23  Nathan Sidwell  <nathan@codesourcery.com>
4744
4745         * search.c (lookup_conversion_operator): Avoid two loops.
4746         (add_conversions): Remove.
4747         (check_hidden_convs, split_conversions,
4748         lookup_conversions_r):  New.
4749         (lookup_conversions): Use lookup_conversions_r.
4750
4751 2004-07-22  Nathan Sidwell  <nathan@codesourcery.com>
4752
4753         * pt.c (get_template_base): Check type is completable.
4754
4755 2004-07-21  Eric Christopher  <echristo@redhat.com>
4756
4757         * decl.c (poplevel): Inline unused variable checking.
4758         Change formatting.
4759
4760 2004-07-21  Paolo Bonzini  <bonzini@gnu.org>
4761
4762         * typeck.c (build_binary_op): Do not use RDIV_EXPR for
4763         integer vectors.
4764
4765 2004-07-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
4766
4767         PR c++/14497
4768         * pt.c (check_explicit_specialization): Remove extension to accept
4769         specializations without template headers. Fall-through to normal
4770         processing.
4771
4772 2004-07-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
4773
4774         PR c++/509
4775         * pt.c (determine_specialization): New parameter template_count.
4776         Disambiguate between member templates and member functions counting
4777         the template headers.
4778         (check_explicit_specialization): Update caller.
4779         (tsubst_friend_function): Likewise.
4780
4781 2004-07-20  Steven Bosscher  <stevenb@suse.de>
4782
4783         * cp-tree.def (TINST_LEVEL): Make it an 'x' node.
4784         * cp-tree.h (tinst_level_t): New tree type.
4785         (union lang_tree_node): Handle it.
4786         (TINST_LOCATION): New accessor macro.
4787         (make_tinst_level): New prototype.
4788         * cp-lang.c (cp_tree_size): Handle TINST_LEVEL.
4789         * decl.c (cp_tree_node_structure): Likewise.
4790         * error.c (print_instantiation_full_context): Use TINST_LOCATION.
4791         (print_instantiation_partial_context): Likewise.
4792         * pt.c (pop_tinst_level): Likewise.
4793          (push_tinst_level): Use make_tinst_level.
4794         * tree.c (make_tinst_level): New function.
4795         (cp_walk_subtrees): Walk TINST_DECL for a TINST_LEVEL node.
4796
4797 2004-07-20  Mark Mitchell  <mark@codesourcery.com>
4798
4799         * parser.c (cp_parser_simple_type_specifier): Fix typo.
4800
4801         PR c++/16637
4802         * parser.c (cp_parser_simple_type_specifier): Do not record usage
4803         of globally-qualified names.
4804
4805 2004-07-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4806
4807         PR c++/16175
4808         * error.c (dump_type) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Output
4809         cv qualifier.
4810
4811 2004-07-19  Mark Mitchell  <mark@codesourcery.com>
4812
4813         PR c++/16623
4814         * cp-tree.h (lang_type_class): Add lazy_assignment_op.
4815         (CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro.
4816         * class.c (add_implicitly_declared_members): Use
4817         CLASSTYPE_LAZY_ASSIGNMENT_OP.
4818         * method.c (lazily_declare_fn): Clear
4819         CLASSTYPE_LAZY_ASSIGNMENT_OP.
4820         * search.c (lookup_fnfields_1): Check it.
4821
4822 2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>
4823
4824         * cp-tree.h (vec_binfo_member): Remove.
4825         * tree.c (vec_binfo_member): Remove.
4826
4827         * cp-tree.h (struct lang_type_class): Remove vfields field.
4828         (CLASSTYPE_VFIELDS): Remove.
4829         (SET_BINFO_NEW_VTABLE_MARKED): Adjust.
4830         * class.c (determine_primary_base): Remove CLASSTYPE_VFIELDS
4831         handling.
4832         (dfs_modify_vtables): Use TYPE_CONTAINS_VPTR_P.
4833         (finish_struct_1): Remove CLASSTYPE_VFIELDS handling.
4834         * init.c (dfs_initialize_vtbl_ptrs): Use TYPE_CONTAINS_VPTR_P.
4835
4836 2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>
4837
4838         * cp-tree.h (DEF_VEC_P(tree)): Remove here.
4839         (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF):
4840         Moved to common.
4841         (BINFO_LANG_SLOTS): Remove.
4842         * tree.c (copy_binfo): Adjust BINFO creation and accessors.
4843         * decl.c (xref_basetypes): Adjust BINFO creation and accessors.
4844         * class.c (check_bases): Adjust BINFO accessors.
4845         (determine_primary_base, finish_struct_bits,
4846         maybe_warn_about_overly_private_class, warn_hidden,
4847         walk_subobject_offsets, propagate_binfo_offsets, end_of_class,
4848         warn_about_ambiguous_bases, get_vfield_name,
4849         dump_class_hierarchy_r, build_vtt_inits, accumulate_vtbl_inits,
4850         add_vcall_offset_vtbl_entries_r): Likewise.
4851         * dump.c (cp_dump_tree): Likewise.
4852         * init.c (sort_mem_initializers, expand_member_init, build_delete,
4853         push_base_cleanups): Likewise.
4854         * method.c (do_build_copy_constructor, do_build_assign_ref,
4855         synthesize_exception_spec): Likewise.
4856         name-lookup.c (arg_assoc_class): Likewise.
4857         * pt.c (instantiate_class_template,
4858         get_template_base_recursive): Likewise.
4859         * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Likewise.
4860         * typeck2.c (process_init_constructor): Likewise.
4861         * search.c (lookup_base_r, dynamic_cast_base_recurse,
4862         dfs_access_in_type, dfs_walk_real, look_for_overrides,
4863         types_overlap_p, copied_binfo, original_binfo): Likewise.
4864         (binfo_for_vtable): Remove
4865
4866 2004-07-20  Steven Bosscher  <stevenb@suse.de>
4867
4868         * cp-tree.h (struct lang_decl_flags): Unify the template_info and
4869         thunk_alias, and the access and virtual_offset fields.
4870         (THUNK_VIRTUAL_OFFSET, THUNK_ALIAS): Adjust.
4871         * decl.c (finish_case_label): Update c_add_case_node call.
4872
4873 2004-07-19  Mark Mitchell  <mark@codesourcery.com>
4874
4875         Revert patch for PR c++/16623.
4876
4877 2004-07-19  Kelley Cook  <kcook@gcc.gnu.org>
4878
4879         * except.c: Remove two spurious carriage returns.
4880
4881 2004-07-19  Mark Mitchell  <mark@codesourcery.com>
4882
4883         PR c++/16623
4884         * cp-tree.h (lang_type_class): Add lazy_assignment_op.
4885         (CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro.
4886         * class.c (add_implicitly_declared_members): Use
4887         CLASSTYPE_LAZY_ASSIGNMENT_OP.
4888         * method.c (lazily_declare_fn): Clear
4889         CLASSTYPE_LAZY_ASSIGNMENT_OP.
4890         * search.c (lookup_fnfields_1): Check it.
4891
4892 2004-07-19  Nathan Sidwell  <nathan@codesourcery.com>
4893
4894         * class.c (add_method): Delay adding the slot until the end.
4895         (determine_primary_base): Adjust VEC_iterate invokation.
4896         (resort_type_method_vec, finish_struct_methods, warn_hidden,
4897         walk_subobject_offsets, end_of_class, warn_about_ambiguous_bases,
4898         build_vtbl_initializer): Likewise.
4899         * init.c (sort_mem_initializers, build_delete, push_base_cleanups,
4900         build_vbase_delete): Likewise.
4901         * method.c (do_build_copy_constructor): Likewise.
4902         * name-lookup.c (new_class_binding, print_binding_level,
4903         poplevel_class, store_class_bindings, push_to_top_level,
4904         pop_from_top_level): Likewise.
4905         * pt.c (check_explicit_specialization): Likewise.
4906         * search.c (lookup_conversion_operator, lookup_fnfields_1,
4907         get_pure_virtuals, add_conversions, dfs_check_overlap,
4908         binfo_for_vbase): Likewise.
4909
4910 2004-07-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4911
4912         PR c++/12170
4913         * pt.c (unify) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Use only
4914         innermost set of template arguments during deduction.  Simplify.
4915
4916 2004-07-19  Joseph S. Myers  <jsm@polyomino.org.uk>
4917
4918         * typeck.c (build_modify_expr, build_x_modify_expr): Set
4919         TREE_NO_WARNING on assignments with an operator other than '='.
4920
4921 2004-07-10  Steven Bosscher  <stevenb@suse.de>
4922             Joseph S. Myers  <jsm@polyomino.org.uk>
4923
4924         * cp-tree.h (C_SET_EXP_ORIGINAL_CODE): Remove.
4925         * decl2.c (grokfield): Don't check current_class_depth via
4926         unused TREE_COMPLEXITY.
4927         * semantics.c (finish_parenthesized_expr): Set TREE_NO_WARNING
4928         to avoid the missing parentheses warning.
4929         Don't set C_SET_EXP_ORIGINAL_CODE.
4930
4931 2004-07-18  Mark Mitchell  <mark@codesourcery.com>
4932
4933         * tree.c (no_linkage_helper): Remove.
4934         (no_linkage_check): Don't use walk_tree_without_duplicates.
4935
4936         * mangle.c (write_expression): Issue a sorry for zero-operand
4937         functional casts.
4938
4939 2004-07-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4940
4941         PR c++/13092
4942         * init.c (build_offset_ref): Build SCOPE_REF with non-null
4943         TREE_TYPE for non-dependent names.
4944         * typeck.c (build_x_unary_op): Handle non-dependent SCOPE_REF.
4945         * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
4946         unknown_type_node as its TREE_TYPE.
4947         * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
4948         * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
4949         (dump_expr) <SCOPE_REF case>: Likewise.
4950
4951 2004-07-17  Jason Merrill  <jason@redhat.com>
4952
4953         PR c++/16115
4954         * call.c (type_passed_as): Make the invisible reference type
4955         __restrict.
4956         * cp-gimplify.c (gimplify_cleanup_stmt): Rename to
4957         cp_genericize_r.  Handle invisible reference lowering.
4958         (is_invisiref_parm): New fn.
4959         (cp_genericize): Adjust the types of invisible reference parms.
4960         Don't repeat the walk for clones.
4961         * decl.c (store_parm_decls): Don't generate any code for clones.
4962
4963 2004-07-17  Joseph S. Myers  <jsm@polyomino.org.uk>
4964
4965         * cp-tree.h (builtin_function): Declare.
4966
4967 2004-07-16  Mark Mitchell  <mark@codesourcery.com>
4968
4969         * class.c (finish_struct_methods): Remove unncessary code.
4970         (add_implicitly_declared_members): Create declarations for default
4971         constructors and copy constructors lazily.
4972         * cp-tree.h (lang_type_class): Remove lazy_default_ctor and
4973         lazy_copy_ctor.
4974         (CLASSTYPE_LAZY_DEFAULT_CTOR): New macro.
4975         (CLASSTYPE_LAZY_COPY_CTOR): Likewise.
4976         * decl2.c (check_classfn): Robustify.
4977         (locate_dtor): Handle empty CLASSTYPE_METHOD_VEC.
4978         (locate_ctor): Handle lazy default constructors.
4979         (locate_copy): Handle lazy copy constructors.
4980         (implicitly_declare_fn): Make sure we're looking at the
4981         TYPE_MAIN_VARIANT for a class before creating functions.  Don't
4982         set TYPE_HAS_CONSTRUCTOR.
4983         (lazily_declare_fn): New function.
4984         * name-lookup.c (constructor_name_full): Simplify.
4985         * search.c (lookup_fnfields_1): Lazily create methods, as
4986         necessary.
4987         (lookup_for_overrides): Handle empty CLASSTYPE_METHOD_VEC.
4988
4989 2004-07-16  Steven Bosscher  <stevenb@suse.de>
4990
4991         * cp-tree.h (struct lang_type): Don't have three GTY options on a
4992         single bit GTY desc.
4993
4994 2004-07-16  Richard Henderson  <rth@redhat.com>
4995
4996         * cp-lang.c (LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING): Die.
4997         * cp-tree.h (cp_copy_res_decl_for_inlining): Remove.
4998         * tree.c (cp_copy_res_decl_for_inlining): Remove.
4999
5000 2004-07-16  Nathan Sidwell  <nathan@codesourcery.com>
5001
5002         * class.c (finish_struct_bits): Use for loop.
5003         (propagate_binfo_offsets): Do primary binfo outside of loop.
5004
5005         PR c++/16583
5006         * dump.c (cp_dump_tree): Don't dump the bases if there's no
5007         binfo.
5008
5009         * pt.c (tsubst) <TREE_BINFO case>: We should never get here.
5010
5011 2004-07-15  Mark Mitchell  <mark@codesourcery.com>
5012
5013         * cp-tree.h (lang_type_class): Remove has_real_assign_ref and
5014         has_abstract_assign_ref.  Make methods a VEC(tree) *.
5015         (TYPE_HAS_CONST_ASSIGN_REF): Add documentation.
5016         (CLASSTYPE_CONSTRUCTORS): Adjust for changes to CLASSTYPE_METHOD_VEC.
5017         (CLASSTYPE_DESTRUCTORS): Likewise.
5018         (TYPE_HAS_REAL_ASSIGN_REF): Remove.
5019         (TYPE_HAS_ABSTRACT_ASSIGN_REF): Likewise.
5020         (add_method): Change prototoype.
5021         * class.c (add_method): Remove error_p parameter.  Adjust for
5022         changes to CLASSTYPE_METHOD_VEC.
5023         (handle_using_decl): Adjust call to add_method.
5024         (maybe_warn_about_overly_private_class): Adjust for
5025         changes to CLASSTYPE_METHOD_VEC.
5026         (resort_type_method_vec): Likewise.
5027         (finish_struct_methods): Likewise.
5028         (check_for_override): Likewise.
5029         (warn_hidden): Likewise.
5030         (add_implicitly_declared_members): Defer creation of assignment
5031         operators.  Adjust call to add_method.
5032         (clone_function_decl): Adjust call to add_method.
5033         (check_bases_and_members): Don't set TYPE_HAS_REAL_ASSIGN_REF.
5034         (finish_struct_1): Use CLASSTYPE_DESTRUCTORS.
5035         * decl.c (grok_special_member_properties): Don't set
5036         TYPE_HAS_ABSTRACT_ASSIGN_REF.
5037         * decl2.c (check_classfn): Adjust for
5038         changes to CLASSTYPE_METHOD_VEC.
5039         * method.c (locate_dtor): Use CLASSTYPE_DESTRUCTORS.
5040         (locate_ctor): Use CLASSTYPE_CONSTRUCTORS.
5041         (locate_copy): Adjust for changes to CLASSTYPE_METHOD_VEC.
5042         (implicitly_declare_fn): Set DECL_SOURCE_LOCATION.  Do not call
5043         cp_finish_decl.
5044         * pt.c (check_explicit_specialization): Adjust for
5045         changes to CLASSTYPE_METHOD_VEC.
5046         (instantiate_class_template): Do not set
5047         TYPE_HAS_ABSTRACT_ASSIGN_REF.
5048         * ptree.c (cxx_print_type): Don't try to print
5049         CLASSTYPE_METHOD_VEC.
5050         * rtti.c (emit_support_tinfos): Use CLASSTYPE_DESTRUCTORS.
5051         * search.c (lookup_field_r): Adjust for
5052         changes to CLASSTYPE_METHOD_VEC.
5053         (lookup_fnfields): Likewise.
5054         (lookup_conversion_operator): Likewise.
5055         (lookup_fnfields_1): Likewise.  Create assignment operators
5056         lazily.
5057         (look_for_overrides_here): Adjust for
5058         changes to CLASSTYPE_METHOD_VEC.
5059         (add_conversions): Likewise.
5060         * semantics.c (finish_member_declaration): Adjust call to add_method.
5061
5062 2004-07-15  Jason Merrill  <jason@redhat.com>
5063
5064         * cp-lang.c (cxx_types_compatible_p): To the middle-end,
5065         references and pointers are compatible.
5066
5067 2004-07-15  Nathan Sidwell  <nathan@codesourcery.com>
5068
5069         * decl.c (xref_basetypes): Refactor.
5070         * tree.c (copy_base_binfos): Replace with ...
5071         (copy_binfo): ... this. Deep copy the given binfo, (not the just
5072         bases of the given base).
5073         * cp-tree.h (copy_base_binfo): Remove.
5074         (copy_binfo): Declare.
5075
5076 2004-07-15  Mark Mitchell  <mark@codesourcery.com>
5077
5078         * name-lookup.c (set_inherited_value_binding_p): Add class_type
5079         parameter.
5080         (get_class_binding): Adjust.
5081         (push_class_level_binding): Don't use set_inherited_value_binding_p.
5082
5083 2004-07-15  Nathan Sidwell  <nathan@codesourcery.com>
5084
5085         * class.c (finish_struct_bits): Don't set TYPE_HAS_CONVERSION here.
5086         * decl.c (xref_basetypes): Set it here.
5087
5088         * class.c (check_bases): Don't set CLASSTYPE_NON_AGGREGATE here.
5089         Don't check for incomplete base.
5090         (get_vfield_name): Simplify while loop.
5091         * decl.c (xref_basetypes): Set CLASSTYPE_NON_AGGREGATE here.
5092
5093 2004-07-14  Mark Mitchell  <mark@codesourcery.com>
5094
5095         * lex.c (cxx_make_type): Remove call to get_pointer_type.
5096
5097         * cp-tree.h (IDENTIFIER_VALUE): Remove.
5098         (BINFO_PUSHDECLS_MARKED): Likewise.
5099         (maybe_inject_for_scope_var): Likewise.
5100         (push_class_decls): Likewise.
5101         * name-lookup.h (push_class_binding): Remove.
5102         (innermost_non_namespace_value): New function.
5103         (outer_binding): Likewise.
5104         * class.c (add_method): Push bindings before adding to
5105         TYPE_METHODS.
5106         (restore_class_cache): Do not restore class_shadowed.
5107         (pushclass): Do not add USING_DECLs.  Do not call
5108         push_class_decls.
5109         * config-lang.in (gtfiles): Remove $(srcdir)/cp/search.c.
5110         * decl.c (pushdecl): Use outer_binding.
5111         (poplevel): Set the scope for an out-of-scope for-loop declaration
5112         appropriately.
5113         (cp_finish_decl): Don't call maybe_inject_for_scope_var.
5114         * name-lookup.c (new_class_binding): New function.
5115         (push_binding): Use it.
5116         (pushdecl): Use innermost_non_namespace_value.
5117         (maybe_inject_for_scope_var): Remove.
5118         (push_class_binding): Remove.
5119         (set_inherited_value_binding_p): New function.
5120         (get_class_binding): New function.
5121         (push_class_level_binding): Assert that the current_class_type is
5122         being defined.
5123         (outer_binding): New function.
5124         (innermost_non_namespace_value): Likewise.
5125         (lookup_name_real): Use outer_binding.
5126         (lookup_name_current_level): Ignore out-of-scope variables.
5127         * pt.c (check_template_shadow): Use innermost_non_namespace_value.
5128         (lookup_template_class): Likewise.
5129         * search.c (dfs_push_type_decls): Remove.
5130         (dfs_push_decls): Likewise.
5131         (setup_class_bindings): Likewise.
5132         (lookup_field_1): Handle USING_DECLs from dependent scopes.
5133         (marked_pushdecls_p): Remove.
5134         (unmarked_pushdecls_p): Remove.
5135         (marked_identifiers): Remove.
5136         (setup_class_bindings): Remove.
5137         (dfs_push_type_decls): Remove.
5138         (dfs_push_decls): Remove.
5139         (push_class_decls): Remove.
5140
5141 2004-07-13  Mark Mitchell  <mark@codesourcery.com>
5142
5143         PR c++/16518
5144         PR c++/16337
5145         * decl.c (grokvardecl): Make declspecs parameter const.
5146         (grokdeclarator): Likewise.  Adjust accordingly.
5147         * decl.h (grokdeclarator): Adjust declaration.
5148         * parser.c (cp_parser_init_declarator): Do not clear
5149         decl_specifiers->attributes.
5150
5151         * cp-tree.h (lang_identifier): Remove class_value.
5152         (IDENTIFIER_CLASS_VALUE): Remove.
5153         (pop_class_decls): Likewise.
5154         (init_search_processing): Likewise.
5155         * class.c (handle_using_decl): Use lookup_member, not
5156         IDENTIFIER_CLASS_VALUE.
5157         (restore_class_cache): New function, split out from ...
5158         (pushclass): ... here.  Do not call clear_identifier_class_values.
5159         (invalidate_class_lookup_cache): Do not clear
5160         IDENTIFIER_CLASS_VALUE.
5161         (popclass): Do not call pop_class_decls.
5162         (maybe_note_name_used_in_class): Do not save names looked up after
5163         the class is complete.  Use lookup_member, not
5164         IDENTIFIER_CLASS_VALUE.
5165         * config-lang.in (gtfiles): Add $(srcdir)/cp/search.c.
5166         * decl.c (cxx_init_decl_processing): Do not call
5167         init_search_processing.
5168         * method.c (do_build_copy_constructor): Remove unnecessary code.
5169         (do_build_assign_ref): Likewise.
5170         * name-lookup.c (pushdecl): Use lookup_member, not
5171         IDENTIFIER_CLASS_VALUE.
5172         (set_identifier_type_value_with_scope): Set TREE_TYPE on the
5173         type_shadowed list.
5174         (poplevel_class): Do not restore IDENTIFIER_CLASS_VALUE.
5175         (push_class_binding): Do not set it.
5176         (clear_identifier_class_values): Remove.
5177         (push_class_level_binding): Do not set IDENTIFIER_CLASS_VALUE.
5178         (store_binding): Do not save it.
5179         (pop_from_top_level): Do not restore it.
5180         * name-lookup.h (cxx_saved_binding): Remove class_value.
5181         (clear_identifier_class_values): Remove.
5182         * ptree.c (cxx_print_identifier): Do not print
5183         IDENTIFIER_CLASS_VALUE.
5184         * search.c (search_obstack): Remove.
5185         (push_stack_level): Remove.
5186         (pop_stack_level): Remove.
5187         (search_level): Remove.
5188         (search_stack): Remove.
5189         (lookup_member): Don't check IDENTIFIER_CLASS_VALUE.
5190         (setup_class_bindings): Use IDENTIFIER_MARKED, not
5191         IDENTIFIER_CLASS_VALUE.
5192         (marked_identifiers): New variable.
5193         (push_class_decls): Clear IDENTIFIER_MARKED.
5194         (pop_class_decls): Don't call pop_search_level.
5195         (init_search_processing): Remove.
5196
5197 2004-07-12  Mark Mitchell  <mark@codesourcery.com>
5198
5199         * cp-tree.h (get_aggr_typedef): Remove.
5200         * init.c (get_aggr_typedef): Likewise.
5201
5202         * name-lookup.c (push_class_level_binding): Simplify.
5203
5204 2004-07-12  Andrew Pinski  <apinski@apple.com>
5205
5206         PR c++/16475
5207         Revert:
5208         2004-07-07  H.J. Lu  <hongjiu.lu@intel.com>
5209                 PR c++/16276
5210                 * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
5211                 is not public.
5212
5213 2004-07-12  Eric Christopher  <echristo@redhat.com>
5214
5215         * parser.c (cp_parser_class_head): Remove unused variable.
5216
5217 2004-07-12  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5218
5219         * decl.c (grok_op_properties): Reject [de-]allocation functions
5220         declared in a namespace, or declared as static.
5221
5222 2004-07-12  Nathan Sidwell  <nathan@codesourcery.com>
5223
5224         * cp-tree.h (make_binfo): Remove.
5225         * decl.c (xref_basetypes): Use make_tree_binfo directly.
5226         * tree.h (copy_base_binfos): Likewise.
5227         (make_binfo): Remove.
5228
5229         * call.c (build_user_type_conversion_1, build_new_op,
5230         check_constructor_callable, build_temp,
5231         perform_direct_initialization_of_possible): Pass type directly to
5232         lookup_fnfields & build_special_member_call.
5233         (build_special_member_call): Accept a type, and complete it.
5234         * class.c (finish_stuct_bits): Copy the BINFOs here.
5235         * cvt.c (ocp_convert): Pass type directly to
5236         build_special_member_call.
5237         * decl.c (build_ptrmemfunc_type): Call xref_bastypes here.
5238         (xref_basetypes): Allocate the binfo here. Adjust.
5239         * init.c (build_init, build_new_1): Pass type directly to
5240         build_special_member_call.
5241         * lex.c (cxx_make_type): Do not allocate binfo here.
5242         * name-lookup.c (arg_assoc_class): Incomplete types have no binfo.
5243         * parser.c (cp_parser_class_head): Always call xref_basetypes.
5244         * pt.c (instantiate_class_template): Likewise. Inhibit access
5245         checking for template friends.
5246         * ptree.c (cxx_print_type): Adjust record printing.
5247         * search.c (lookup_base): When taking a type, complete it before
5248         looking for a binfo.
5249         (lookup_member): Delay completing a type.
5250         (push_class_decls): Don't walk an incomplete type.
5251         (lookup_conversions): Likewise.
5252         * semantics.c (finish_stmt_expr_expr): Pass type directly to
5253         build_special_member_call.
5254         * tree.c (copy_base_binfos): Adjust.
5255         (make_binfo): Likewise.
5256         * typeck.c (build_modify_expr): Pass type directly to
5257         build_special_member_call.
5258         * typeck2.c (process_init_constructor): Check a binfo exists.
5259         (build_m_component_ref): Allow accessing an incomplete type.
5260         (build_functional_cast): Pass type directly to
5261         build_special_member_call.
5262
5263 2004-07-12  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5264
5265         PR c++/2204
5266         * config-lang.in (gtfiles): Add typeck2.c.
5267         * Make-lang.in: Tweak typeck2.c dependencies, and add rule for
5268         gt-cp-typeck2.h.
5269         * cp-tree.h: Declare complete_type_check_abstract.
5270         * typeck2.c (pat_calc_hash, pat_compare,
5271         complete_type_check_abstract): New functions.
5272         (abstract_virtuals_error): If the type is abstract, register the
5273         declaration within abstract_pending_vars for further checks.
5274         Inspect also dependent types. Handle IDENTIFIER_NODEs as decl.
5275         * decl.c (cp_finish_decl): Do not strip array types.
5276         (create_array_type_for_decl): Check for abstractness of the element
5277         type.
5278         (complete_vars): Call complete_type_check_abstract.
5279         * class.c (finish_struct): Prepare a list of virtual functions for
5280         template types, and call complete_vars on it to check for abstractness.
5281
5282 2004-07-12  Paolo Bonzini  <bonzini@gnu.org>
5283
5284         PR tree-optimization/14107
5285         * decl.c (finish_function): Remove temporary band-aid.
5286
5287 2004-07-11  Mark Mitchell  <mark@codesourcery.com>
5288
5289         * call.c (build_operator_new_call): Avoid using push_to_top_level.
5290         (build_new_op): Adjust call to lookup_function_nonclass.
5291         * name-lookup.c (identifier_type_value): Adjust call to
5292         lookup_name_real.
5293         (lookup_name_real): Add block_p parameter.
5294         (lookup_name_nonclass): Adjust call to lookup_name_real.
5295         (lookup_function_nonclass): Likewise.
5296         (lookup_name): Likewise.
5297         * name-lookup.h (lookup_name_real): Change prototype.
5298         (lookup_name_nonclass): Likewise.
5299         * parser.c (cp_parser_lookup_name): Likewise.
5300
5301         * cp-tree.h (saved_scope): Make old_bindings a vector.
5302         (unuse_fields): Remove.
5303         * name-lookup.h (cxx_saved_binding): Define it.
5304         * class.c (pushclass): Don't use unuse_fields.
5305         * name-lookup.c (cxx_saved_binding_make): Remove.
5306         (store_binding): Add new bindings to a vector, using an
5307         accumulator style, rather than adding them to a list.
5308         (store_bindings): Adjust accordingly.
5309         (store_class_bindings): Likewise.
5310         (push_to_top_level): Likewise.
5311         (pop_from_top_level): Likewise.
5312         * optimize.c (maybe_clone_body): Must push_to_top_level and
5313         pop_from_top_level calls outside of loop.
5314         * parser.c (cp_parser_class_specifier): Move push_scope/pop_scope
5315         calls here from cp_parser_late_parsing_default_args.
5316         (cp_parser_save_default_args): Record the class type in which the
5317         function is declared.
5318         (cp_parser_late_parsing_default_args): Do not call
5319         push_nested_class/pop_nested_class.
5320         * search.c (dfs_unuse_fields): Remove.
5321         (unuse_fields): Remove.
5322
5323 2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>
5324
5325         * cp-lang.c (LANG_HOOKS_MAYBE_BUILD_CLEANUP, LANG_HOOKS_PUSHLEVEL,
5326         LANG_HOOKS_POPLEVEL, LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Remove.
5327         * cp-tree.h (poplevel): Declare.
5328         (set_block): Remove.
5329         * decl.c (set_block): Remove.
5330
5331 2004-07-10  Mike Stump  <mrs@apple.com>
5332
5333         * decl2.c (import_export_class): Never export/import vtables
5334         with inline key functions.
5335
5336 2004-07-09  Steven Bosscher  <stevenb@suse.de>
5337
5338         * typeck.c (c_expand_asm_operands): Remove.
5339
5340 2004-07-09  Mike Stump  <mrs@apple.com>
5341
5342         * typeck.c (build_class_member_access_expr): Skip null deref
5343         warning when we don't dereference it.
5344
5345 2004-07-09  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5346
5347         PR c++/8211
5348         PR c++/16165
5349         * class.c (check_field_decls): Improve -Weffc++ warning: do not
5350         warn for pointers to functions/members, or for classes without
5351         destructors.
5352
5353 2004-07-08  Mark Mitchell  <mark@codesourcery.com>
5354
5355         * name-lookup.h (struct cp_binding_level): Update documentation
5356         for class_shadowed.
5357
5358 2004-07-08  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5359
5360         PR c++/16169
5361         * typeck.c (check_return_expr): Improve -Weffc++ warning: handle
5362         returning CALL_EXPR, and non-reference return type.
5363
5364 2004-07-08  Nathan Sidwell  <nathan@codesourcery.com>
5365
5366         * name-lookup.c (push_binding): Use VEC_reserve.
5367
5368 2004-07-08  Richard Henderson  <rth@redhat.com>
5369
5370         * cp-tree.h (expand_eh_spec_block): Remove.
5371
5372 2004-07-07  Mark Mitchell  <mark@codesourcery.com>
5373
5374         * cp-tree.h (saved_scope): Remove x_previous_class_type and
5375         x_previous_class_values; add x_previous_class_level.
5376         (previous_class_type): Remove.
5377         (previous_class_values): Remove.
5378         (previous_class_level): New macro.
5379         * class.c (pushclass): Restore the identifier cache more
5380         expeditiously.
5381         (invalidate_class_lookup_cache): Use vector for class_shadowed and
5382         previous_class_values.
5383         * decl.c (poplevel): Likewise.
5384         * name-lookup.c (cxx_binding_init): New function.
5385         (cxx_binding_make): Use it.
5386         (push_binding): For a binding in a class level, use a vector of
5387         cp_class_binding nodes.
5388         (push_binding_level): New function.
5389         (begin_scope): Use it.
5390         (leave_scope): Do not put class binding levels on the free list.
5391         (print_binding_level): Adjust for the fact that class_shadowed is
5392         a vector.
5393         (poplevel_class): Likewise.
5394         (clear_identifier_class_values): Likewise.
5395         (push_class_level_binding): Likewise.
5396         (set_class_shadows): Remove.
5397         (store_binding): New function.
5398         (store_class_bindings): New function.
5399         (push_to_top_level): Use store_class_bindings as appropriate.
5400         (pop_from_top_level): Use previous_class_level, not
5401         previous_class_type.
5402         * name-lookup.h (cp_class_binding): New type.
5403         (cp_binding_level): Use a vector object for class_shadowed.
5404         (push_binding_level): Declare.
5405         (set_class_shadows): Remove.
5406
5407 2004-07-07  Andrew Pinski  <apinski@apple.com>
5408
5409         * class.c (instantiate_type): BUFFER_REF is dead.
5410         * lex.c (init_operators): IN_EXPR is dead.
5411
5412 2004-07-07  Jason Merrill  <jason@redhat.com>
5413
5414         PR c++/16334
5415         * call.c (build_new_op): Give overload warnings for built-in
5416         candidates.
5417
5418 2004-07-07  H.J. Lu  <hongjiu.lu@intel.com>
5419
5420         PR c++/16276
5421         * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
5422         is not public.
5423
5424 2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>
5425
5426         * cp-tree.h (CLASSTYPE_N_BASECLASSES): Remove.
5427         * class.c (build_primary_vtable, check_bases,
5428         determine_primary_base, finish_struct_bits,
5429         maybe_warn_about_overly_private_class, dfs_find_final_overrider_q,
5430         get_basefndecls, warn_hidden, walk_subobject_offsets,
5431         build_base_fields, create_vtable_ptr, propagate_binfo_offsets,
5432         layout_virtual_bases, end_of_class, warn_about_ambiguous_bases,
5433         finish_struct_1, get_vfield_name, contains_empty_class_p,
5434         dump_class_hierarchy_r, finish_vtbls, build_vtt_inits,
5435         dfs_ctor_vtable_bases_queue_p, accumulate_vtbl_inits,
5436         add_vcall_offset_vtbl_entries_r, cp_fold_obj_type_ref): Adjust
5437         BINFO macros.
5438         * decl.c (xref_basetypes): Likewise.
5439         * dump.c (cp_dump_tree): Likewise.
5440         * error.c (dump_expr): Likewise.
5441         * init.c (sort_mem_initializers, expand_member_init,
5442         push_base_cleanups): Likewise.
5443         * method.c (do_build_copy_constructor, do_build_assign_reg,
5444         synthesize_exception_spec): Likewise.
5445         * name-lookup.c (arg_assoc_class): Likewise.
5446         * pt.c (instantiate_class_template, tsubst,
5447         get_template_base_recursive): Likewise.
5448         * ptree.c (cxx_print_type): Likewise.
5449         * rtti.c (get_psuedo_ti_init, get_pseudo_ti_desc): Likewise.
5450         * search.c (lookup_base_r, dynamic_cast_base_recurse,
5451         dfs_access_in_type, access_in_type, lookup_field_queue_p,
5452         bfs_walk, dfs_walk_real, look_for_overrides, markedp, unmarkedp,
5453         marked_pushdecls_p, unmarked_pushdecls_p, dfs_debug_markedp,
5454         dfs_debug_unmarkedp, dfs_check_overlap, dfs_no_overlap_yet,
5455         binfo_for_vtable, copied_binfo, original_binfo): Likewise
5456         * tree.c (copy_base_binfos, make_binfo): Likewise.
5457         * typeck.c (commmon_base_type): Likewise
5458         * typeck2.c (process_init_constructor): Likewise
5459
5460 2004-07-06  Joseph S. Myers  <jsm@polyomino.org.uk>
5461
5462         * decl.c (check_tag_decl): Name redeclared type in diagnostic.
5463
5464 2004-07-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5465
5466         PR c++/3671
5467         * pt.c (convert_nontype_argument): Disallow conversions between
5468         different enumeration types.
5469
5470 2004-07-06  Nathan Sidwell  <nathan@codesourcery.com>
5471
5472         * cp-tree.h (BINFO_MARKED): Remove.
5473         (BINFO_VTABLE_PATH_MARKED, BINFO_NEW_VTABLE_MARKED,
5474         BINFO_DEPENDENT_BASE_P, BINFO_LOST_PRIMARY_P,
5475         BINFO_INDIRECT_PRIMARY_P): Use appropriate BINFO_FLAG_n.
5476         (SET_BINFO_NEW_VTABLE_MARKED): Use BINFO_VIRTUAL_P.
5477         * class.c (build_base_path): Use BINFO_VIRTUAL_P.
5478         (mark_primary_bases, determine_primary_base, base_derived_from,
5479         dfs_find_final_overrider, dfs_find_final_overrider_q,
5480         dfs_find_inal_overrider_post, update_vtable_entry_for_fn,
5481         dfs_modify_vtables, walk_subobject_offsets,
5482         layout_nonempty_base_or_field, build_base_field,
5483         build_base_fields, propagate_binfo_offsets, layout_virtual_bases,
5484         end_of_class, get_vfield_name, dump_class_hierarchy, dump_vtable,
5485         finish_vtbls, build_vtt_inits, dfs_build_secondary_vptr_vtt_inits,
5486         build_ctor_vtbl_group, accumulate_vtble_inits,
5487         dfs_accumulate_vtbls_inits, build_vbase_offset_vtbl_entries,
5488         build_vcall_offset_vtbl_entries, add_vcall_offset_vtbl_entries_r,
5489         add_vcall_offset_vtbl_entries_1): Likewise.
5490         * decl.c (xref_basetypes): Incomming virtual base indicated by
5491         TREE_TYPE. Adjust.
5492         * dump.c (cp_dump_tree): Use BINFO_VIRTUAL_P.
5493         * init.c (finish_init_stmts, sort_mem_initializers,
5494         emit_mem_initializers, build_vtble_address, expand_member_init,
5495         push_base_cleanups): Likewise.
5496         * method.c (do_build_copy_constructor): Likewise.
5497         * pt.c (instantiate_class_template,
5498         get_template_base_recursive): Likewise.
5499         * rtti.c (dfs_class_hint_mark, get_pseudo_ti_init,
5500         get_pseudo_ti_desc): Likewise.
5501         * search.c (lookup_base_r, dynamic_cast_base_recurse,
5502         binfo_from_vbase, binfo_via_virtual, copied_binfo,
5503         original_binfo): Likewise.
5504         * semantics.c (finish_base_specifier): Virtualness is indicated
5505         by TREE_TYPE.
5506         * tree.c (copy_base_binfos): Use BINFO_VIRTUAL_P.
5507
5508 2004-07-06  Mark Mitchell  <mark@codesourcery.com>
5509
5510         Revert:
5511         2004-06-24  Jason Merrill  <jason@redhat.com>
5512         PR c++/16115
5513         * decl.c (grokparms): Give the PARM_DECL reference type if the
5514         parameter is passed by invisible reference.
5515
5516 2004-07-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5517
5518         * cp-lang.c (cp_var_mod_type_p): Add extra arg.
5519         * decl.c (grokdeclarator): Extra arg to variably_modified_type_p.
5520         * pt.c (check_instantiated_args, unify): Likewise.
5521
5522 2004-07-05  Phil Edwards  <phil@codesourcery.com>
5523
5524         * Make-lang.in (check-c++, lang_checks):  Add some comments.
5525
5526 2004-07-05  Zack Weinberg  <zack@codesourcery.com>
5527
5528         * cp-mudflap.c: Delete file.
5529         * Makefile.in: Remove all references to cp-mudflap.o.
5530
5531 2004-07-05  Zack Weinberg  <zack@codesourcery.com>
5532
5533         * decl.c (cxx_init_decl_processing): Call
5534         build_common_tree_nodes before creating the global NAMESPACE_DECL.
5535
5536 2004-07-05  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5537
5538         PR c++/2518
5539         * call.c (build_operator_new_call): Look only at global scope.
5540
5541 2004-07-05  Nathan Sidwell  <nathan@codesourcery.com>
5542
5543         * call.c (enforce_access): Expect TREE_BINFO.
5544         * class.c (binfo_ctor_vtable): Check TREE_BINFO.
5545         * cp-tree.h (RECORD_OR_UNION_TYPE_CHECK): Remove.
5546         (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF):
5547         Adjust.
5548         (BINFO_LANG_ELTS): Remove.
5549         (BINFO_LANG_SLOTS): New.
5550         (TYPE_RAISES_EXCEPTIONS, ENUM_TEMPLATE_INFO): Use TYPE_LANG_SLOT_1.
5551         (CLASSTYPE_TEMPLATE_INFO): Adjust.
5552         * pt.c (tsubst): Split TREE_BINFO case from TREE_VEC case.
5553         * search.c (lookup_member): Check TREE_BINFO.
5554         * semantics.c (perform_or_defer_access_check): Likewise.
5555         (check_accessibility_of_qualified_id): Check
5556         deferred_access_no_check.
5557         * tree.c (make_binfo): Use make_tree_binfo.
5558
5559 2004-07-04  Mark Mitchell  <mark@codesourcery.com>
5560
5561         * method.c (implicitly_declare_fn): Set linkage of generated
5562         functions.
5563
5564 2004-07-04  Richard Henderson  <rth@redhat.com>
5565
5566         * typeck.c (cxx_mark_addressable): Don't put_var_into_stack.
5567
5568 2004-07-03  Scott Brumbaugh  <scottb.lists@verizon.net>
5569
5570         PR c++/3761
5571         * name-lookup.c (push_class_level_binding): Don't pass a
5572         TREE_LIST of ambiguous names to check_template_shadow as it
5573         only handles declarations. Instead, pull the declaration
5574         out and pass that.
5575
5576 2004-07-03  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5577
5578         PR c++/14971
5579         * pt.c (check_explicit_specialization): Clarify error message.
5580
5581 2004-07-02  Richard Henderson  <rth@redhat.com>
5582
5583         * tree.c (cp_unsave_r): Update remap_save_expr call.
5584
5585 2004-07-02  Mark Mitchell  <mark@codesourcery.com>
5586
5587         PR c++/16240
5588         * mangle.c (write_template_arg): Correct mangling.
5589
5590         PR c++/16297
5591         * decl.c (grokdeclarator): Robustify.
5592
5593 2004-07-01  Richard Henderson  <rth@redhat.com>
5594
5595         * class.c (fixed_type_or_null): Don't handle RTL_EXPR.
5596         * method.c (synthesize_method): Don't clear_last_expr.
5597         * name-lookup.c (maybe_push_cleanup_level): Likewise.
5598
5599 2004-07-01  Nick Clifton  <nickc@redhat.com>
5600
5601         * decl2.c (import_export_class): Invoke the
5602         import_export_class field in the gcc_target structure if it is not
5603         empty.
5604
5605 2004-06-30  Richard Henderson  (rth@redhat.com>
5606
5607         * decl.c (start_preparsed_function): Don't set immediate_size_expand.
5608         * method.c (use_thunk): Likewise.
5609
5610 2004-06-30  Joseph S. Myers  <jsm@polyomino.org.uk>
5611
5612         * call.c (build_over_call), typeck.c (build_function_call): Call
5613         check_function_arguments instead of check_function_format.
5614
5615 2004-06-30  Joseph S. Myers  <jsm@polyomino.org.uk>
5616
5617         * call.c (build_over_call), typeck.c (build_function_call): Update
5618         calls to check_function_format.
5619
5620 2004-06-30  Richard Henderson  <rth@redhat.com>
5621
5622         * call.c (build_over_call): Use __builtin_memcpy for copying
5623         CLASS_AS_BASE rather than funny casting.
5624
5625 2004-06-30  Richard Henderson  <rth@redhat.com>
5626
5627         * init.c (build_new_1): Fill in TYPE_DOMAIN, TYPE_SIZE and
5628         TYPE_SIZE_UNIT of full_type.
5629
5630 2004-06-30  Per Bothner  <per@bothner.com>
5631
5632         Conditionally compile support for --enable-mapped_location.
5633         * decl.c (pop_label):  Handle (imperfectly) USE_MAPPED_LOCATION case.
5634         * decl2.c:  If USE_MAPPED_LOCATION, don't do some line number
5635         adjustments - which I don't understand.
5636         * error.c (dump_decl):  Rename "<interrnal>" to "<built-in>".
5637         * error.c:  Use LOCATION_FILE and EXPR_LOCATION macros.
5638         (print_instantiation_partial_context):  Use expand_location.
5639         * decl.c (duplicate_decl):  Use new DECL_IS_BUILTIN macro.
5640         * name-lookup.c:  Likewise.
5641         * lex.c (cxx_init):  Likewise.  Also use BUILTINS_LOCATION.
5642         * name-lookup.c:  Use input_line macro.
5643         * parser.c (cp_lexer_get_preprocessor_token):  Use UNKNOWN_LOCATION.
5644         (cp_parser_statement):  Rename locaal variable statement_locus to
5645         statement_location and use SET_EXPR_LOCATION macro.
5646         * pt.c:  Handle USE_MAPPED_LOCATION case.  Use new macros.
5647         * tree.c (cp_walk_subtrees):  Likewise.
5648
5649 2004-06-29  Per Bothner  <per@bothner.com>
5650
5651         * tree.c (build_min_nt, build_min, build_min_non_dep):
5652         Don't set TREE_COMPLEXITY from input_line.
5653
5654 2004-06-29  Paul Brook  <paul@codesourcery.com>
5655
5656         * init.c: Include target.h.
5657         (get_cookie_size): Remove and replace with target hook.
5658         Update callers.
5659         (build_new_1): Store the element size in the cookie.
5660
5661 2004-06-29  Nathan Sidwell  <nathan@codesourcery.com>
5662
5663         PR c++/16260
5664         * parser.c (cp_parser_template_declaration_after_export): Disable
5665         access checks here ...
5666         (cp_parser_class_specifier): ... not here.
5667
5668 2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
5669
5670         * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK,
5671         VAR_FUNCTION_OR_PARM_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK,
5672         BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Use appropriate
5673         TREE_CHECK macro.
5674
5675 2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
5676
5677         * cp-tree.h (struct deferred_access): Move to ...
5678         * semantics.c (struct deferred_access): ... here. Adjust.
5679         (deferred_access_stack): Make a VEC(deferred_access),
5680         (deferred_access_free_list): Remove.
5681         (deferred_access_no_check): New.
5682         (push_deferring_access_checks, resume_deferring_access_checks,
5683         stop_deferring_access_checks, pop_deferring_access_checks,
5684         get_deferred_access_checks, pop_to_parent_deferring_access_checks,
5685         perform_deferred_access_checks, perform_or_defer_access_check): Adjust.
5686
5687 2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
5688
5689         PR c++/16174
5690         * call.c (build_temp): Declare.
5691         (check_constructor_callable): New.
5692         (reference_binding): Only set CHECK_COPY_CONSTRUCTOR if not for
5693         CONSTRUCTOR_CALLABLE.
5694         (convert_like_real, initialize_reference): Use
5695         check_constructor_callable.
5696         * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): New.
5697         (LOOKUP_*): Renumber.
5698
5699 2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
5700
5701         * friend.c (add_friend): Only perform access checks when context
5702         is a class.
5703         * lex.c (cxx_make_type): Only create a binfo for aggregate types.
5704         * parser.c (cp_parser_class_specifier): Disable access checks here
5705         when parsing the body of a templated class.
5706         * semantics.c (perform_or_defer_access_checks): Reorder to allow
5707         NULL binfos when not checking access.
5708
5709 2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
5710
5711         Use vector API for vbase list.
5712         * cp-tree.h: Include vec.h
5713         (DEF_VEC_P (tree)): New type.
5714         (struct lang_type_class): Change vbase's member type.
5715         (binfo_for_vbase): Declare.
5716         * class.c (determine_primary_base, base_derived_from,
5717         update_vtable_entry_for_fn, walk_subobject_offsets, end_of_class,
5718         warn_about_ambiguous_bases, dfs_accumulate_vtbl_inits,
5719         build_vtbl_initializer): Adjust.
5720         * decl.c (xref_basetypes): Adjust, accumulate upper bound of
5721         vbases.
5722         * init.c (sort_mem_initializers, expand_member_init,
5723         push_base_cleanups): Adjust.
5724         * method.c (do_build_copy_constructor): Adjust.
5725         * search.c (get_pure_virtuals, copied_binfo, original_binfo): Adjust.
5726         (binfo_for_vbase): New.
5727         * tree.c (copy_base_binfos): Adjust.
5728
5729 2004-06-28  Mark Mitchell  <mark@codesourcery.com>
5730
5731         * parser.c (cp_parser_set_decl_spec_type): Fix thinko.
5732
5733 2004-06-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5734
5735         PR c++/14123
5736         * cxx-pretty-print.c (pp_cxx_ptr_operator): Properly put
5737         paranthesis in case of pointers to array members.
5738         * error.c (dump_type_prefix): Likewise.
5739         (dump_type_suffix): Maybe issue a whitespace when printing
5740         ARRAY_TYPE.
5741
5742 2004-06-27  Mark Mitchell  <mark@codesourcery.com>
5743
5744         PR c++/16193
5745         * parser.c (cp_parser_set_decl_spec_type): Refine test for
5746         redefinition of built-in types.
5747
5748 2004-06-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5749
5750         * error.c (pp_template_argument_list_start): Remove.
5751         (pp_template_argument_list_end): Likewise.
5752         (pp_separate_with_comma): Use pp_cxx_separate_with.
5753         (reinit_global_formatting_buffer): Remove.
5754         (pp_non_consecutive_character): Likewise.
5755         (dump_scope): Use pp_cxx_colon_colon.
5756         (dump_template_parameter): Use pp_cxx_identifier,
5757         pp_cxx_tree_identifier and pp_cxx_whitespace.
5758         (dump_templat_bindings): Replace use of pp_string with sequence
5759         of pp_cxx_whitespace and pp_equal.
5760         (dump_type): Use pp_cxx_identifier, pp_cxx_tree_identifier,
5761         pp_cxx_colon_colon, pp_cxx_whitespace throughout.  Don't set
5762         padding here.
5763         (dump_aggr_type): Use pp_cxx_identifier amd pp_cxx_tree_identifier.
5764         (dump_type_prefix): Don't set padding.  Use pp_cxx_whitespace,
5765         pp_cxx_left_parent, pp_cxx_colon_colon and pp_cxx_star troughout.
5766         (dump_type_suffix): Use pp_cxx_right_paren, pp_cxx_left_bracket,
5767         pp_cxx_right_bracket, pp_cxx_identifier throughout,
5768         (dump_decl): Likewise.
5769         (dump_template_decl): Likewise.
5770         (dump_function_decl): Likewise.  Set padding as appropriate.
5771         (dump_parameters): Use pp_cxx_left_paren, pp_cxx_identifier and
5772         pp_cxx_right_paren.
5773         (dump_exception_spec): Likewise.
5774         (dump_function_name): Use pp_cxx_tree_identifier and
5775         pp_cxx_identifier.
5776         (dump_template_parms): Use pp_cxx_begin_template_argument_list and
5777         pp_cxx_end_template_argument_list.
5778         (dump_expr): Use pp_cxx_left_paren, pp_cxx_right_paren,
5779         pp_cxx_colon_colon, pp_cxx_identifier, pp_cxx_tree_identifier and
5780         pp_cxx_whitespace throughout.
5781         (dump_binary_op): Use pp_cxx_whitespace, pp_cxx_left_paren and
5782         pp_cxx_right_paren.
5783         (dump_unary_op): Likewise.
5784         (reinit_cxx_pp): New function.
5785         (type_as_string); Use it.
5786         (expr_as_string): Likewise.
5787         (decl_as_string); Likewise.
5788         (context_as_string): Likewise.
5789         (lang_decl_name): Likewise.
5790         (decl_to_string): Likewise.
5791         (expr_to_string): Likewise.
5792         (parm_to_string): Likewise.
5793         (type_to_string): Likewise.
5794         (args_to_string): Likewise.
5795         (cv_to_string): Likewise.
5796
5797 2004-06-26  Mark Mitchell  <mark@codesourcery.com>
5798
5799         * cp-tree.h (cp_cv_quals): New type.
5800         (cp_declarator): Use it instead of "tree" as appropriate.
5801         (grok_method_quals): Adjust prototype.
5802         (grokclassfn): Likewise.
5803         (do_friend): Likewise.
5804         * decl.c (grokfndecl): Use cp_cv_quals, not tree.
5805         (grokdeclarator): Likewise.
5806         * decl2.c (grok_method_quals): Likewise.
5807         (grokclassfn): Likewise.
5808         * friend.c (do_friend): Likewise.
5809         * method.c (implicitly_declare_fn): Adjust call to grokclassfn.
5810         * parser.c (make_call_declarator): Use cp_cv_quals, not tree.
5811         (make_pointer_declarator): Likewise.
5812         (make_reference_declarator): Likewise.
5813         (make_ptrmem_declarator): Likewise.
5814         (cp_parser_ptr_operator): Likewise.
5815         (cp_parser_cv_qualifier_seq_opt): Likewise.
5816         (cp_parser_cv_qualifier_opt): Remove.
5817         (cp_parser_new_declarator_opt): Adjust call to
5818         cp_parser_ptr_operator.
5819         (cp_parser_conversion_declaration_opt): Likewise.
5820         (cp_parser_declarator): Use cp_cv_quals, not tree.
5821         (cp_parser_direct_declarator): Likewise.
5822
5823 2004-06-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5824
5825         * call.c, cp-tree.h, cxx-pretty-print.c, decl.c, decl2.c:
5826         Rename DECL_STMT to DECL_EXPR.
5827         * init.c, name-lookup.c, parser.c, pt.c, semantics.c: Likewise.
5828         * cp-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted.
5829         * tree.c (cp_walk_subtrees): Don't call c_walk_subtrees.
5830
5831 2004-06-26  Jan Hubicka  <jh@suse.cz>
5832
5833         PR C++/14865
5834         * decl2.c (maybe_emit_vtables):  Always import_export_vtable for the
5835         reachability analysis.
5836
5837 2004-06-25  Mark Mitchell  <mark@codesourcery.com>
5838
5839         * cp-mudflap.c (mflang_flush_calls): Fix thinkos resulting from
5840         2004-06-23 change.
5841
5842 2004-06-25  Paul Brook  <paul@codesourcery.com>
5843
5844         * decl2.c (get_guard): Call targetm.cxx.guard_type.
5845         (get_guard_bits, get_guard_cond): Call targetm.cxx.guard_mask_bit.
5846
5847 2004-06-24  Mark Mitchell  <mark@codesourcery.com>
5848
5849         * decl.c (grokdeclarator): Restore error messages about __thread.
5850         * parser.c (cp_parser_decl_specifier_seq): Likewise.
5851
5852 2004-06-24  Jason Merrill  <jason@redhat.com>
5853
5854         PR c++/16115
5855         * decl.c (grokparms): Give the PARM_DECL reference type if the
5856         parameter is passed by invisible reference.
5857
5858 2004-06-24  Andreas Schwab  <schwab@suse.de>
5859
5860         * cp-tree.h (enum cp_storage_class): Remove trailing comma.
5861
5862 2004-06-23  Mark Mitchell  <mark@codesourcery.com>
5863
5864         * Make-lang.in (cp/lex.o): Do not depend on cp/lex.h.
5865         (cp/decl.o): Likewise.
5866         (cp/decl2.o): Likewise.
5867         (cp/pt.o): Likewise.
5868         (cp/semantics.o): Likewise.
5869         * config-lang.in (gtfiles): Do not reference cp/lex.h.
5870         * class.c: Do not include lex.h.
5871         (add_implicitly_declared_members): Do not use
5872         adding_implicit_members.
5873         (check_bases_and_members): Do not talk about grok_x_components.
5874         * cp/cp-tree.h (adding_implicit_members): Remove.
5875         (cp_storage_class): New type.
5876         (cp_decl_spec): Likewise.
5877         (cp_decl_specifier_seq): Likewise.
5878         (cp_parameter_declarator): Use it for the decl_specifiers field.
5879         (check_tag_decl): Adjust prototype.
5880         (shadow_tag): Likewise.
5881         (groktypename): Likewise.
5882         (start_decl): Likewise.
5883         (start_function): Likewise.
5884         (start_method): Likewise.
5885         (grok_x_components): Remove.
5886         (grokfield): Adjust prototype.
5887         (grokbitfield): Likewise.
5888         (finish_member_class_template): Remove.
5889         * decl.c: Do not include lex.h.
5890         (adding_implicit_members): Do not define.
5891         (check_tag_decl): Do not use trees to represent decl-specifiers.
5892         (shadow_tag): Likewise.
5893         (groktypename): Likewise.
5894         (start_decl): Likewise.
5895         (grokvardecl): Likewise.
5896         (grokdeclarator): Likewise.
5897         (grokparms): Likewise.
5898         (start_function): Likewise.
5899         (start_method): Likewise.
5900         * decl.h (grokdeclarator): Adjust prototype.
5901         * decl2.c: Do not include lex.h.
5902         (grok_x_components): Remove.
5903         (grokfield): Do not use trees to represent decl-specifiers.
5904         (grokbitfield): Likewise.
5905         * lex.c: Do not include lex.h.
5906         * lex.h: Remove.
5907         * parser.c: Include target.h.
5908         (clear_decl_specs): New function.
5909         (cp_parser_translation_unit): Do not use trees to represent
5910         decl-specifiers.
5911         (cp_parser_postfix_expression): Likewise.
5912         (cp_parser_new_type_id): Likewise.
5913         (cp_parser_condition): Likewise.
5914         (cp_parser_simple_declaration): Likewise.
5915         (cp_parser_decl_specifier_seq): Likewise.
5916         (cp_parser_function_specifier_opt): Likewise.
5917         (cp_parser_conversion_type_id): Likewise.
5918         (cp_parser_template_parameter): Likewise.
5919         (cp_parser_explicit_instantiation): Likewise.
5920         (cp_parser_type_specifier): Likewise.
5921         (cp_parser_simple_type_specifier): Likewise.
5922         (cp_parser_init_declarator): Likewise.
5923         (cp_parser_type_id): Likewise.
5924         (cp_parser_type_specifier_seq): Likewise.
5925         (cp_parser_parameter_declaration): Likewise.
5926         (cp_parser_member_declaration): Likewise.
5927         (cp_parser_exception_declaration): Likewise.
5928         (cp_parser_function_definition_from_specifiers_and_declarator):
5929         Likewise.
5930         (cp_parser_single_declaration): Likewise.
5931         (cp_parser_save_member_function_body): Likewise.
5932         (cp_parser_friend_p): Likewise.
5933         (cp_parser_set_storage_class): New function.
5934         (cp_parser_set_decl_spec_type): Likewise.
5935         * pt.c: Do not include lex.h.
5936         * semantics.c: Likewise.
5937         (finish_member_class_template): Remove.
5938
5939 2004-06-23  Roger Sayle  <roger@eyesopen.com>
5940
5941         * call.c (build_cxx_call): Don't call expand_tree_builtin.  No
5942         longer take both "args" and "convert_args" as arguments.
5943         (build_op_delete_call): Update call to build_cxx_call.
5944         (build_over_call): Likewise, update call to build_cxx_call.
5945         * cp-tree.h (build_cxx_call): Update funtion prototype.
5946         * typeck.c (build_function_call): Don't call expand_tree_builtin.
5947         * rtti.c (throw_bad_cast): Update call to build_cxx_call.
5948         (throw_bad_typeid): Likewise.
5949         (build_dynamic_cast_1): Likewise.
5950
5951 2004-06-22  Richard Henderson  <rth@redhat.com>
5952
5953         * class.c (build_vfn_ref): Take a pointer not object.  Build
5954         an OBJ_TYPE_REF.
5955         (cp_fold_obj_type_ref): New.
5956         * call.c (build_over_call): Update build_vfn_ref call.
5957         * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): New.
5958         * cp-tree.h (cp_fold_obj_type_ref): Declare.
5959
5960 2004-06-21  Jason Merrill  <jason@redhat.com>
5961
5962         PR c++/16112
5963         * cp-gimplify.c (cp_gimplify_init_expr): Look through
5964         CLEANUP_POINT_EXPR.
5965
5966 2004-06-21  Mark Mitchell  <mark@codesourcery.com>
5967
5968         * cp-tree.def (NEW_EXPR): Add a fourth slot.
5969         * cp-tree.h (PARMLIST_ELLIPSIS_P): Remove.
5970         (TREE_PARMLIST): Likewise.
5971         (CALL_DECLARATOR_PARMS): Likewise.
5972         (CALL_DECLARATOR_QUALS): Likewise.
5973         (CALL_DECLARATOR_EXCEPTION_SPEC): Likewise.
5974         (cp_declarator_kind): New type.
5975         (cp_parameter_declarator): Likewise.
5976         (cp_declarator): Likewise.
5977         (cp_error_declarator): Likewise.
5978         (no_parameters): Likewise.
5979         (groktypename): Change prototype.
5980         (start_decl): Likewise.
5981         (start_handler_parms): Likewise.
5982         (get_scope_of_declarator): Likewise.
5983         (start_function): Likewise.
5984         (start_preparsed_function): New function.
5985         (start_function): Change prototype.
5986         (start_method): Likewise.
5987         (grokfield): Likewise.
5988         (grokbitfield): Likewise.
5989         (build_new): Likewise.
5990         (make_pointer_declarator): Remove.
5991         (make_reference_declarator): Likewise.
5992         (make_call_declarator): Likewise.
5993         (set_quals_and_spec): Likewise.
5994         (process_template_parm): Change prototype.
5995         (begin_function_definition): Remove.
5996         (finish_parmlist): Remove.
5997         * decl.c (groktypename): Do not use trees to represent
5998         declarators.
5999         (start_decl): Likewise.
6000         (start_handler_parms): Remove.
6001         (get_scope_of_declarator): Reimplement.
6002         (grokdeclarator): Do not use trees to represent declarators.
6003         (grokparms): Likewise.
6004         (start_function): Likewise.
6005         (start_method): Likewise.
6006         (build_void_list_mode): Do not use TREE_PARMLIST.
6007         * decl.h (grokdeclarator): Change prototype.
6008         * decl2.c (grok_method_quals): Robustify.
6009         (grok_x_components): Do not use trees to represent declarators.
6010         (grokfield): Likewise.
6011         (grokbitfield): Likewise.
6012         (start_objects): Build FUNCTION_DECLs, not declarators.
6013         (start_static_storage_duration_function): Likewise.
6014         * init.c (build_new): Simplify.
6015         * lex.c (make_pointer_declarator): Remove.
6016         (make_reference_declarator): Likewise.
6017         (make_call_declarator): Likewise.
6018         (set_quals_and_spec): Likewise.
6019         * method.c (use_thunk): Use start_preparsed_function.
6020         (synthesize_method): Likewise.
6021         (implicitly_declare_fn): Build FUNCTION_DECLs, not declarators.
6022         * optimize.c (maybe_clone_body): Use start_preparsed_function.
6023         * parser.c (cp_error_declarator): New variable.
6024         (declarator_obstack): Likewise.
6025         (alloc_declarator): New function.
6026         (make_declarator): Likewise.
6027         (make_id_declarator): Likewise.
6028         (make_pointer_declarator): Likewise.
6029         (make_reference_declarator): Likewise.
6030         (make_ptrmem_declarator): Likewise.
6031         (make_call_declarator): Likewise.
6032         (make_array_declarator): Likewise.
6033         (no_parameters): New variable.
6034         (make_parameter_declarator): Likewise.
6035         (cp_parser_check_for_definition_in_return_type): Do not use trees
6036         to represent declarators.
6037         (cp_parser_translation_unit): Likewise.
6038         (cp_parser_new_expression): Likewise.
6039         (cp_parser_new_type_id): Likewise.
6040         (cp_parser_new_declarator_opt): Likewise.
6041         (cp_parser_direct_new_declarator): Likewise.
6042         (cp_parser_condition): Likewise.
6043         (cp_parser_declaration_statement): Likewise.
6044         (cp_parser_declaration): Likewise.
6045         (cp_parser_conversion_type_id): Likewise.
6046         (cp_parser_conversion_declarator_opt): Likewise.
6047         (cp_parser_template_parameter_list): Likewise.
6048         (cp_parser_template_parameter): Likewise.
6049         (cp_parser_explicit_instantiation): Likewise.
6050         (cp_parser_init_declarator): Likewise.
6051         (cp_parser_declarator): Likewise.
6052         (cp_parser_direct_declarator): Likewise.
6053         (cp_parser_type_id): Likewise.
6054         (cp_parser_parameter_declaration_clause): Likewise.
6055         (cp_parser_parameter_declaration_list): Likewise.
6056         (cp_parser_parameter_declaration): Likewise.
6057         (cp_parser_member_declaration): Likewise.
6058         (cp_parser_exception_declaration): Likewise.
6059         (cp_parser_check_declarator_template_parameters): Likewise.
6060         (cp_parser_function_definition_from_specifiers_and_declarator):
6061         Likewise.
6062         (cp_parser_save_member_function_body): Likewise.
6063         * pt.c (process_template_parm): Add is_non_type parameter.
6064         (convert_template_argument): Adjust call to groktypename.
6065         (tsubst_call_declarator_parms): Remove use of TREE_PARMLIST.
6066         (tsubst): Do not expect declarators.
6067         (tsubst_copy_and_build): Adjust NEW_EXPR case to handle additional
6068         argument.
6069         (instantiate_decl): Use start_preparsed_function.
6070         * semantics.c (begin_function_definition): Remove.
6071         (finish_parmlist): Remove.
6072         * cp-mudflap.c (mflang_flush_calls): Build FUNCTION_DECLs, not
6073         declarators.
6074
6075 2004-06-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6076
6077         * call.c (build_vfield_ref): Add new operand for COMPONENT_REF.
6078         (build_new_method_call): Likewise.
6079         * decl.c (local_variable_p_walkfn): Don't walk into types.
6080         * decl2.c (grok_array_decl): Add new operands for ARRAY_REF.
6081         (build_anon_union_vars): Add new operand for COMPONENT_REF.
6082         * init.c (buld_new): Add new operand for ARRAY_REF.
6083         * method.c (do_build_copy_constructor): New op for COMPONENT_REF.
6084         (do_build_assign_ref): Likewise.
6085         * parser.c (cp_parser_direct_new_declarator): Add new operands
6086         for ARRAY_REF.
6087         (cp_parser_direct_declarator): Likewise.
6088         * pt.c (tsubst): Likewise.
6089         (tsubst_copy, tsubst_copy_and_build): Likewise; also add new operand
6090         for COMPONENT_REF.
6091         * semantics.c (finish_non_static_data_member): Add new operand
6092         for COMPONENT_REF.
6093         * typeck.c (build_class_member_access_expr): Likewise.
6094         (build_class_member_access_expr, finish_class_member_access_expr):
6095         Likewise.
6096         (build_ptrmemfunc_access_expr): Likewise.
6097         (build_array_ref): Add new operands for ARRAY_REF.
6098         * typeck2.c (split_nonconstant_init_1): Likewise; COMPONENT_REF too.
6099         * tree.c (count_trees_r, no_linkage_helper): Don't walk in types.
6100
6101 2004-06-21  Richard Henderson  <rth@redhat.com>
6102
6103         * dump.c (cp_dump_tree): Don't use dump_next_stmt.
6104         * parser.c (cp_parser_jump_statement): Update commentary.
6105         * pt.c (tsubst_expr): Use RETURN_EXPR.
6106         * semantics.c (finish_return_stmt): Likewise.
6107         (finalize_nrv_r): Likewise.
6108         * typeck.c, typeck2.c: Update file start commentary.
6109
6110 2004-06-21  Richard Henderson  <rth@redhat.com>
6111
6112         * semantics.c (finish_expr_stmt): Call verify_sequence_points.
6113
6114 2004-06-20  Richard Henderson  <rth@redhat.com>
6115
6116         * cp-tree.h (add_decl_stmt): Declare.
6117         * pt.c (tsubst_copy): Abort for CLEANUP_POINT_EXPR.
6118         * semantics.c (maybe_cleanup_point_expr): New.
6119         (add_decl_stmt, finish_expr_stmt, finish_return_stmt,
6120         finish_for_expr, finish_switch_cond): Use it.
6121         (finalize_nrv_r): Don't build an EXPR_STMT.  Don't frob TREE_CHAIN.
6122
6123 2004-06-20  Richard Henderson  <rth@redhat.com>
6124
6125         * cp-tree.def (CLEANUP_STMT, IF_STMT): Move from c-common.def.
6126         * cp-gimplify.c (gimplify_if_stmt): Move from c-gimplify.c.
6127         (cp_gimplify_expr): Call it.
6128         (gimplify_cleanup_stmt): Move from c-gimplify.c.
6129         (cp_genericize): New.
6130         * decl.c (finish_function): Call it.
6131         * cp-tree.h (cp_stmt_codes): Add CLEANUP_STMT, IF_STMT.
6132         (CLEANUP_BODY, CLEANUP_EXPR, CLEANUP_DECL): Move from c-common.h.
6133         (IF_COND, THEN_CLAUSE, ELSE_CLAUSE): Likewise.
6134         (cp_genericize): Declare.
6135         * cxx-pretty-print.c (pp_cxx_statement): Add CLEANUP_STMT, IF_STMT.
6136         * dump.c (cp_dump_tree): Likewise.
6137         * semantics.c (push_cleanup): Move from c-semantics.c.
6138
6139 2004-06-20  Zack Weinberg  <zack@codesourcery.com>
6140
6141         * cp-lang.c (has_c_linkage): Implement.
6142
6143         * cp-tree.h (set_mangled_name_for_decl): Don't prototype.
6144         * decl.c (duplicate_decls): Use COPY_DECL_RTL.
6145         (builtin_function_1): Don't call make_decl_rtl.
6146         (build_cp_library_fn): Don't call set_mangled_name_for_decl.
6147         (grokvardecl): Don't call mangle_decl.
6148         * except.c (nothrow_libfn_p): Look at DECL_NAME, not
6149         DECL_ASSEMBLER_NAME.
6150         * method.c (set_mangled_name_for_decl): Delete.
6151         * name-lookup.c (pushdecl): When a local extern shadows a
6152         file-scope declaration of the same object, give both DECLs the
6153         same DECL_UID.
6154         * typeck.c (cxx_mark_addressable): Don't set TREE_ADDRESSABLE
6155         on DECL_ASSEMBLER_NAME.
6156
6157 2004-06-19  Richard Henderson  <rth@redhat.com>
6158
6159         * cp-gimplify.c: Remove unnecessary prototypes.
6160         (cp_gimplify_stmt): Merge into ...
6161         (cp_gimplify_expr): ... here.  Move to end of file.  Handle
6162         stmts_are_full_exprs_p frobbing.
6163         * cp-tree.h (cp_gimplify_stmt): Remove.
6164         * pt.c (tsubst_expr): Merge prep_stmt and unify.
6165         * tree.c (init_tree): Don't set lang_gimplify_stmt.
6166
6167 2004-06-18  Richard Henderson  <rth@redhat.com>
6168
6169         PR c++/16034
6170         * semantics.c (begin_cond): New.
6171         (finish_cond): Rewrite to handle template DECL_STMTs specially.
6172         Assume that non-template decls go land before the conditional.
6173         (simplify_loop_decl_cond): Likewise.
6174         (begin_if_stmt, finish_if_stmt_cond, begin_while_stmt,
6175         finish_while_stmt_cond, finish_for_init_stmt, finish_for_cond,
6176         begin_switch_stmt, finish_switch_cond): Update to match.
6177
6178 2004-06-17  Jason Merrill  <jason@redhat.com>
6179
6180         PR c++/16015
6181         * semantics.c (simplify_aggr_init_expr): Don't return the slot.
6182         (finish_stmt_expr_expr): Update type after conversions.
6183         (finish_stmt_expr): Wrap initializer in CLEANUP_POINT_EXPR.
6184         Handle void initializer.
6185         * tree.c (build_cplus_new): Make AGGR_INIT_EXPRs void.
6186
6187 2004-06-17  Geoffrey Keating  <geoffk@apple.com>
6188
6189         * class.c (build_clone): Don't call defer_fn, let mark_used do it.
6190         * cp-tree.h (defer_fn): Delete.
6191         * decl2.c (defer_fn): Delete.
6192         (finish_file): Simplify deferred_fns loops; check that
6193         only used inline functions get into deferred_fns.
6194         (mark_used): Inline previous contents of defer_fn.
6195
6196 2004-06-16  Richard Henderson  <rth@redhat.com>
6197
6198         * cp-tree.h (COMPOUND_STMT_TRY_BLOCK, COMPOUND_STMT_BODY_BLOCK): Kill.
6199         (BIND_EXPR_TRY_BLOCK, BIND_EXPR_BODY_BLOCK): New.
6200         * cxx-pretty-print.c (pp_cxx_function_definition): Move handling
6201         of CTOR_INITIALIZER ...
6202         (pp_cxx_statement): ... here.
6203         * decl.c (begin_function_body): Don't set COMPOUND_STMT_BODY_BLOCK.
6204         (finish_function): Use alloc_stmt_list to zap entire function.
6205         * parser.c (cp_parser_compound_statement): Update commentary.
6206         * pt.c (tsubst_expr): Use BIND_EXPR instead of COMPOUND_STMT.
6207         * semantics.c (begin_compound_stmt, finish_compound_stmt): Likewise.
6208         (finish_stmt_expr): Don't look through COMPOUND_STMT.
6209
6210 2004-06-16  Geoffrey Keating  <geoffk@apple.com>
6211
6212         * pt.c (mark_decl_instantiated): Don't call defer_fn.
6213
6214 2004-06-16  Richard Henderson  <rth@redhat.com>
6215
6216         * parser.c (cp_parser_labeled_statement): Update commentary.
6217         * pt.c (tsubst_expr): Use CASE_LABEL_EXPR.
6218         * tree.c (mark_local_for_remap_r): Likewise.
6219
6220 2004-06-16  Richard Henderson  <rth@redhat.com>
6221
6222         * parser.c (cp_parser_asm_definition): Update commentary.
6223         * pt.c (tsubst_expr): Use ASM_EXPR.
6224         * semantics.c (finish_asm_stmt): Likewise.
6225
6226 2004-06-16  Richard Henderson  <rth@redhat.com>
6227
6228         * decl.c (finish_destructor_body): Use LABEL_EXPR.
6229         * parser.c (cp_parser_statement): Update commentary.
6230         * pt.c (tsubst_expr): Use LABEL_EXPR, GOTO_EXPR.
6231         * semantics.c (finish_goto_stmt, finish_label_stmt): Likewise.
6232         * tree.c (mark_local_for_remap_r): Likewise.
6233
6234 2004-06-16  Richard Henderson  <rth@redhat.com>
6235
6236         PR c++/16012
6237         * semantics.c (begin_for_stmt, begin_for_stmt): Do put the init
6238         statement in FOR_INIT_STMT for templates.
6239
6240 2004-06-15  Richard Henderson  <rth@redhat.com>
6241
6242         * call.c (initialize_reference): Don't build CLEANUP_STMT here.
6243         * cp-gimplify.c (cp_gimplify_stmt): Remove next_p argument.
6244         (genericize_try_block): Use gimplify_stmt.
6245         (genericize_catch_block, genericize_eh_spec_block): Likewise.
6246         (cp_gimplify_init_expr): Remove STMT_EXPR special case.
6247         (gimplify_must_not_throw_expr): Update voidify_wrapper_expr call.
6248         * cp-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove.
6249         (cp_tree_chain_matters_p): Remove.
6250         * cp-tree.h (COMPOUND_STMT_TRY_BLOCK): New.
6251         (COMPOUND_STMT_BODY_BLOCK): New.
6252         (STATEMENT_LIST_NO_SCOPE, STATEMENT_LIST_TRY_BLOCK): New.
6253         (EXPR_STMT_STMT_EXPR_RESULT): New.
6254         (building_stmt_tree): Check cur_stmt_list.
6255         (tf_stmt_expr_cmpd, tf_stmt_expr_body): Remove.
6256         (BCS_NO_SCOPE, BCS_TRY_BLOCK, BCS_FN_BODY): New.
6257         * decl.c (poplevel): Use pop_stmt_list for minding cleanups.
6258         (cp_finish_decl): Use push_cleanup.
6259         (start_function, finish_function): Use statement lists.
6260         (finish_stmt): Do nothing.
6261         * except.c (begin_eh_spec_block): Use statement lists.
6262         (check_handlers_1, check_handlers): Likewise.
6263         * init.c (construct_virtual_base): Don't add extra compound stmts.
6264         (build_vec_init): Likewise.
6265         * name-lookup.c (maybe_push_cleanup_level): Use statement lists.
6266         * name-lookup.h (struct cp_binding_level): Add statement_list.
6267         * parser.c (cp_parser_statement): Take the STMT_EXPR node, not a bool.
6268         (cp_parser_labeled_statement, cp_parser_expression_statement,
6269         cp_parser_statement_seq_opt): Likewise.
6270         (cp_parser_compound_statement): Likewise.  Take bool for try block.
6271         (cp_parser_selection_statement): Tidy if processing.
6272         (cp_parser_already_scoped_statement): Rewrite to do what it says.
6273         * pt.c (tsubst_copy): Move STMT_EXPR to tsubst_expr.
6274         (tsubst_expr): Rewrite STMT_EXPR processing.  Handle STATEMENT_LIST.
6275         Mind COMPOUND_STMT_TRY_BLOCK, EXPR_STMT_STMT_EXPR_RESULT.
6276         * semantics.c (do_poplevel, do_pushlevel): Use statement lists.
6277         (finish_cond): New, rewritten from FINISH_COND.
6278         (simplify_loop_decl_cond): New.
6279         (finish_expr_stmt): Avoid nested EXPR_STMTs.
6280         (begin_if_stmt, finish_if_stmt_cond, finish_then_clause,
6281         begin_else_clause, finish_else_clause, finish_if_stmt,
6282         begin_while_stmt, finish_while_stmt_cond, finish_while_stmt,
6283         begin_do_stmt, finish_do_body, begin_for_stmt, finish_for_init_stmt,
6284         finish_for_cond, finish_for_stmt, begin_switch_stmt,
6285         finish_switch_cond, finish_switch_stmt, begin_try_block,
6286         finish_try_block, finish_cleanup_try_block, finish_function_try_block,
6287         finish_handler_sequence, finish_function_handler_sequence,
6288         begin_handler, finish_handler_parms, finish_handler,
6289         begin_stmt_expr, finish_stmt_expr_expr, finish_stmt_expr): Rewrite
6290         using statement lists.
6291         (begin_compound_stmt): Replace has_no_scope argument with flags.
6292         Update all callers.  Use statement lists.
6293         (finish_compound_stmt): Likewise.
6294         (finish_decl_cleanup, finish_eh_cleanup): Use push_cleanup.
6295         (current_scope_stmt_stack): Remove.
6296         (simplify_aggr_init_expr): Don't muck with TREE_CHAIN.
6297         * typeck2.c (split_nonconstant_init_1, split_nonconstant_init):
6298         Rewrite with statement lists.
6299
6300 2004-06-15  Alexandre Oliva  <aoliva@redhat.com>
6301
6302         * parser.c: Change all assignments of c_lex_string_translate
6303         to true and false to 1 and 0.
6304         (cp_lexer_read_token): Convert type of the translated string.
6305         (cp_parser_skip_to_closing_parentheses): Preserve original
6306         value of c_lex_string_translate, and set it to -1 while
6307         running.
6308         (cp_parser_cache_group): Likewise.
6309         (cp_parser_cache_group_1): Renamed.
6310         (cp_parser_asm_operand_list): Remove redundant setting of
6311         c_lex_string_translate.
6312         (cp_parser_primary_expression) [CPP_STRING, CPP_WSTRING]:
6313         Handle chained strings.
6314
6315 2004-06-12  Andrew Pinski  <apinski@apple.com>
6316
6317         PR c++/14639
6318         Revert:
6319         2004-06-02  Andrew Pinski  <pinskia@physics.uc.edu>
6320
6321                 * cp-tree.h: Fix typo.
6322
6323                 * cp-tree.h: Include cgraph.h
6324                 (DECL_NEEDED_P): Use cgraph_*node on the decl instead of
6325                 TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.
6326
6327 2004-06-12  Jason Merrill  <jason@redhat.com>
6328
6329         PR tree-optimization/14107
6330         * decl.c (finish_function): Warn about no return in all functions.
6331
6332 2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
6333
6334         * cp-tree.h (struct language_function): Remove cannot_inline.
6335         * decl.c (save_function_data): cannot_inline is no more.
6336         (cxx_push_function_context): Likewise.
6337         * decl2.c (start_objects, start_static_storage_duration_function):
6338         Reset DECL_INLINE, set DECL_UNINLINABLE.
6339
6340 2004-06-14  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
6341
6342         PR c++/15967
6343         * search.c (lookup_field): Propagate the ambiguity list.
6344         (lookup_fnfields): Likewise.
6345
6346 2004-06-14  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
6347
6348         PR c++/15947
6349         * parser.c (cp_parser_template_name): Ctors/dtors never need a
6350         template keyword to disambiguate.
6351
6352 2004-06-14  Mark Mitchell  <mark@codesourcery.com>
6353
6354         PR c++/15096
6355         * decl.c (grokdeclarator): Ignore pointer-to-members when
6356         computing template depth.
6357
6358         PR c++/14930
6359         * name-lookup.c (pushtag): Do not try to put class declarations in
6360         explicit specialization scopes.
6361
6362 2004-06-11  Andrew Pinski  <pinskia@physics.uc.edu>
6363
6364         * decl.c (grokdeclarator): Do not depend on C99's _Bool's behavior.
6365
6366 2004-06-11  Mark Mitchell  <mark@codesourcery.com>
6367
6368         PR c++/15862
6369         * name-lookup.c (unqualified_namespace_lookup): Do not ignore type
6370         bindings for undeclared built-ins.
6371
6372 2004-06-11  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
6373
6374         * typeck2.c (abstract_virtual_errors): Reword diagnostics, make them
6375         appear at the correct location.
6376
6377 2004-06-10  Jason Merrill  <jason@redhat.com>
6378
6379         PR c++/15875
6380         Revert:
6381         2004-06-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6382         * init.c (build_offset_ref): Build SCOPE_REF with non-null
6383         TREE_TYPE for non-dependent names.
6384         * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
6385         unknown_type_node as its TREE_TYPE.
6386         * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
6387         * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
6388         (dump_expr) <SCOPE_REF case>: Likewise.
6389
6390 2004-06-10  Mark Mitchell  <mark@codesourcery.com>
6391
6392         PR c++/15227
6393         * parser.c (cp_parser_direct_declarator): Robustify.
6394
6395         PR c++/15877
6396         * pt.c (tsubst_copy): Use decl_constant_value on enumeration
6397         constants in non-dependent contexts.
6398
6399         PR c++/14211
6400         PR c++/15076
6401         * typeck.c (build_static_cast): Wrap casts in NON_LVALUE_EXPR when
6402         necessary.
6403
6404 2004-06-10  Jakub Jelinek  <jakub@redhat.com>
6405
6406         PR c++/14791
6407         * decl.c (duplicate_decls): Handle fileptr_type_node arguments
6408         specially.
6409
6410 2004-06-09  Mark Mitchell  <mark@codesourcery.com>
6411
6412         Revert:
6413         PR c++/15815
6414         2004-06-07  Mark Mitchell  <mark@codesourcery.com>
6415         * lex.c (handle_pragma_interface): Deprecate.
6416         (handle_pragma_implementation): Likewise.
6417
6418 2004-06-09  Andrew Pinski  <pinskia@physics.uc.edu>
6419
6420         * g++spec.c (lang_specific_driver): Remove check for -lm
6421         and -lmath when check it see if it was the math library.
6422
6423 2004-06-08  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
6424
6425         PR c++/7841
6426         * parser.c (cp_parser_direct_declarator): Reject constructor named
6427         as qualified template-id.
6428
6429 2004-06-07  Mark Mitchell  <mark@codesourcery.com>
6430
6431         PR c++/15815
6432         * lex.c (handle_pragma_interface): Deprecate.
6433         (handle_pragma_implementation): Likewise.
6434
6435 2004-06-07  Mark Mitchell  <mark@codesourcery.com>
6436
6437         PR c++/15766
6438         * parser.c (cp_parser_iteration_statement): Fix typo in error
6439         message.
6440
6441         PR c++/14777
6442         * pt.c (tsubst_default_argument): Do not defer access checks
6443         while substituting into the default argument.
6444
6445         PR c++/15554
6446         * pt.c (tsubst_copy): Do not try to substitute for an enumeration
6447         constant in a non-dependent context.
6448
6449         PR c++/15057
6450         * except.c (build_throw): Ensure that temp_expr has been
6451         initialized.
6452
6453 2004-06-06  Roger Sayle  <roger@eyesopen.com>
6454
6455         * cp/cp-tree.h (lvalue_or_else): Add function prototype.
6456
6457 2004-06-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
6458
6459         PR c++/15503
6460         * parser.c (cp_parser_mem_initializer_id): Gracefully reject
6461         'typename', and accept 'template'.
6462
6463 2004-06-03  Andrew Pinski  <pinskia@physics.uc.edu>
6464             Jan Hubicka  <jh@suse.cz>
6465
6466         PR c++/14639
6467         * method.c (use_think): Do not mark thunk as referenced.
6468
6469 2004-06-03  Matt Austern  <austern@apple.com>
6470
6471         PR c++/15428
6472         * decl2.c (maybe_emit_vtables): If TARGET_WEAK_NOT_IN_ARCHIVE_TOC
6473         is nonzero, and if we see a noninline definition of a key method,
6474         make the vtables nonweak.
6475
6476 2004-06-02  Matt Austern  <austern@apple.com>
6477
6478         * cp-tree.h (instantiate_decl): new boolean parameter,
6479         undefined_ok. Current behavior is equivalent to its being 0.
6480         * decl2.c (mark_used): Add new argument when calling instantiate_decl
6481         * pt.c (mark_decl_instantiated): Unconditionally make
6482         instantiations explicit unconditionally
6483         (do_decl_instantiation): Don't call SET_DECL_EXPLICIT_INSTANTIATION,
6484         since mark_decl_instantiated now does it.
6485         (instantiate_class_member): New.  Instantiate a member of an
6486         explicitly instantiated class template.
6487         (do_type_instantiation): Explicitly instantiate members of an
6488         explicitly instantiated class template.
6489         (instantiate_decl): if undefined_ok is nonzero, and if we're
6490         trying to explicitly instantiated a template with no definition,
6491         change it to an implicit instantiation.
6492         (instantiate_pending_templates): Add new argument to instantiate_decl.
6493         * tree.c (cp_cannot_inline_tree_fn): Likewise.
6494
6495 2004-06-02  Andrew Pinski  <pinskia@physics.uc.edu>
6496
6497         * cp-tree.h: Fix typo.
6498
6499         * cp-tree.h: Include cgraph.h
6500         (DECL_NEEDED_P): Use cgraph_*node on the decl instead of
6501         TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.
6502
6503 2004-06-01  Jason Merrill  <jason@redhat.com>
6504
6505         PR c++/15142
6506         * call.c (call_builtin_trap): Remove type parm.
6507         (convert_arg_to_ellipsis): Change a non-POD argument to integer type.
6508         (build_x_va_arg): Dereference a null pointer for a non-POD argument.
6509
6510 2004-06-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6511
6512         PR c++/13092
6513         * init.c (build_offset_ref): Build SCOPE_REF with non-null
6514         TREE_TYPE for non-dependent names.
6515         * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
6516         unknown_type_node as its TREE_TYPE.
6517         * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
6518         * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
6519         (dump_expr) <SCOPE_REF case>: Likewise.
6520
6521 2004-06-01  Richard Henderson  <rth@redhat.com>
6522             Andrew Pinski  <pinskia@physics.uc.edu>
6523
6524         * lex.c (reswords): Rename "__offsetof" to "__builtin_offsetof".
6525         * parser.c (struct cp_parser): Remove in_offsetof.
6526         (cp_parser_new): Don't set it.
6527         (cp_parser_unary_expression): Don't check it.
6528         (cp_parser_postfix_open_square_expression): Split out from ...
6529         (cp_parser_postfix_expression): ... here.
6530         (cp_parser_postfix_dot_deref_expression): Likewise.
6531         (cp_parser_builtin_offsetof): New.
6532         (cp_parser_primary_expression): Use it.
6533
6534 2004-06-01  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
6535
6536         PR c++/14932
6537         * parser.c (cp_parser_postfix_expression): Allow subscript
6538         operator in offsetof.
6539
6540 2004-05-31  Mark Mitchell  <mark@codesourcery.com>
6541
6542         PR c++/15701
6543         * friend.c (add_friend): Do not try to perform access checks for
6544         functions from dependent classes.
6545
6546 2004-05-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6547
6548         * cxx-pretty-print.c (pp_cxx_colon_colon): Expor.
6549         (pp_cxx_begin_template_argument_list): Turn into a function.
6550         (pp_cxx_end_template_argument_list): Likewise.
6551         (pp_cxx_separate_with): Define.
6552         (pp_cxx_unqualified_id): Tidy.
6553         (pp_cxx_primary_expression): Likewise.
6554         (pp_cxx_postfix_expression): Likewise.
6555         (pp_cxx_expression): Likewise.
6556         (pp_cxx_simple_type_specifier): Likewise.
6557         (pp_cxx_type_specifier_seq): Likewise.
6558         (pp_cxx_parameter_declaration_clause): Likewise.
6559         (pp_cxx_exception_specification): Likewise.
6560         (pp_cxx_direct_declarator): Likewise.
6561         (pp_cxx_type_id): Likewise.
6562         * cxx-pretty-print.h (pp_cxx_whitespace): Export from
6563         cxx-pretty-print.c.
6564         (pp_cxx_left_paren): Likewise.
6565         (pp_cxx_right_paren): Likewise.
6566         (pp_cxx_left_brace): Likewise.
6567         (pp_cxx_right_brace): Likewise.
6568         (pp_cxx_left_bracket): Likewise.
6569         (pp_cxx_right_bracket): Likewise.
6570         (pp_cxx_dot): Likewise.
6571         (pp_cxx_identifier): Likewise.
6572         (pp_cxx_tree_identifier): Likewise.
6573         (pp_cxx_ampersand): New macro.
6574         (pp_cxx_star): Likewise.
6575         (pp_cxx_arrow): Likewise.
6576         (pp_cxx_semicolon): Likewise.
6577         (pp_cxx_complement): Likewise.
6578         (pp_cxx_begin_template_argument_list): Declaree.
6579         (pp_cxx_end_template_argument_list): Likewise.
6580         (pp_cxx_colon_colon): likewise.
6581
6582 2004-05-31  Eric Botcazou  <ebotcazou@libertysurf.fr>
6583
6584         * parser.c (cp_parser_simple_type_specifier): Explicitly test
6585         against NULL_TREE.
6586
6587 2004-05-31  Kazu Hirata  <kazu@cs.umass.edu>
6588
6589         * call.c, class.c, cp-tree.def, decl2.c, name-lookup.c, pt.c,
6590         typeck.c: Fix comment formatting.
6591
6592 2004-05-30  Andrew Pinski  <pinskia@physics.uc.edu>
6593
6594         * cp-lang.c (cp_expand_decl): Remove.
6595         (LANG_HOOKS_EXPAND_DECL): Use c_expand_decl.
6596
6597 2004-05-30  Andreas Jaeger  <aj@suse.de>
6598
6599         * lang-specs.h: Add missing initializers for .ii.
6600
6601 2004-05-28  Aldy Hernandez  <aldyh@redhat.com>
6602
6603         * decl.c (cp_make_fname_decl): Free return value from
6604         fname_as_string.
6605
6606 2004-05-28  Mark Mitchell  <mark@codesourcery.com>
6607
6608         PR c++/15083
6609         * decl2.c (delete_sanity): Set TREE_SIDE_EFFECTS on a DELETE_EXPR,
6610         even in a templat.e
6611         * init.c (build_new): Likewise.
6612
6613         PR c++/15640
6614         * name-lookup.c (arg_assoc): Robustify.
6615
6616         PR c++/15471
6617         * typeck.c (unary_complex_lvalue): Use context_for_name_lookup
6618         when determining the scope to use for a pointer to member.
6619         (lookup_anon_field): Give it external linkage.
6620         * cp-tree.h (lookup_anon_field): Declare it.
6621         * expr.c (cplus_expand_constant): Use it.
6622
6623 2004-05-28  Mark Mitchell  <mark@codesourcery.com>
6624
6625         PR c++/14668
6626         * parser.c (cp_parser_simple_type_specifier): Call
6627         maybe_note_name_used_in_class.
6628
6629 2004-05-28  Tom Marshall  <tmarshall@real.com>
6630
6631         PR c++/15214
6632         * class.c (finish_struct_1): Warn only if the dtor is non-private or
6633         the class has friends.
6634
6635 2004-05-27  Adam Nemet  <anemet@lnxw.com>
6636
6637         PR c++/12883
6638         * decl.c (complete_array_type): Set TYPE_NEEDS_CONSTRUCTING and
6639         TYPE_HAS_NONTRIVIAL_DESTRUCTOR based on the underlying type.
6640
6641 2004-05-24  Geoffrey Keating  <geoffk@apple.com>
6642
6643         * method.c (implicitly_declare_fn): Don't call defer_fn; abort
6644         if it might be needed.
6645         * pt.c (mark_decl_instantiated): Only call defer_fn if
6646         the function actually needs processing in finish_file.
6647         * decl2.c (finish_file): Add check that elements in
6648         deferred_fns_used are really needed there.  Remove unnecessary
6649         test of DECL_SAVED_TREE.
6650
6651 2004-05-23  Paolo Bonzini  <bonzini@gnu.org>
6652
6653         * Make-lang.in: No need to specify $(LIBCPP).
6654
6655 2004-05-23  Mark Mitchell  <mark@codesourcery.com>
6656
6657         PR c++/15044
6658         * parser.c (cp_parser_class_head): Robustify.
6659
6660         PR c++/15317
6661         * parser.c (cp_parser_decl_specifier_seq): Correct error in
6662         comment.
6663         (cp_parser_constructor_declarator_p): Treat attributes
6664         as decl-specifiers.
6665
6666         PR c++/15329
6667         * typeck.c (build_unary_op): Do not attempt to resolve casts to
6668         base classes in templates.
6669
6670 2004-05-23  Mark Mitchell  <mark@codesourcery.com>
6671
6672         PR c++/15165
6673         * pt.c (instantiate_template): Robustify.
6674
6675 2004-05-23  Mark Mitchell  <mark@codesourcery.com>
6676
6677         PR c++/15025
6678         * decl.c (xref_tag): Issue errors about redeclaring template
6679         classes as non-template classes.
6680
6681 2004-05-23  Mark Mitchell  <mark@codesourcery.com>
6682
6683         PR c++/14821
6684         * name-lookup.c (supplement_binding): Allow redefinitions of
6685         namespace aliases.
6686
6687         PR c++/14883
6688         * parser.c (cp_parser_template_argument): Robustify.
6689
6690 2004-05-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6691
6692         * class.c (alter_access): Use %E format specifier to print an
6693         identifier node.  Avoid looking at the IDENTIFIER_POINTER.
6694         (push_lang_context): Likewise.
6695         * decl.c (lookup_label): Likewise.
6696         (grokdeclarator): Likewise.
6697         * parser.c (cp_parser_check_for_invalid_template_id): Likewise.
6698         * pt.c (do_type_instantiation): Likewise.
6699         * tree.c (handle_java_interface_attribute): Likewise.
6700         (handle_com_interface_attribute): Likewise.
6701         (handle_init_priority_attribute): Likewise.
6702
6703 2004-05-22  Mark Mitchell  <mark@codesourcery.com>
6704
6705         PR c++/15285
6706         PR c++/15299
6707         * pt.c (build_non_dependent_expr): Expand the set of tree nodes
6708         recognized as overloaded functions.
6709
6710 2004-05-22  Mark Mitchell  <mark@codesourcery.com>
6711
6712         PR c++/15507
6713         * class.c (layout_nonempty_base_or_field): Do not try to avoid
6714         layout conflicts for unions.
6715
6716         PR c++/15542
6717         * typeck.c (build_x_unary_op): Instantiate template class
6718         specializations before looking for "operator &".
6719
6720         PR c++/15427
6721         * typeck.c (complete_type): Layout non-dependent array types, even
6722         in templates.
6723
6724         PR c++/15287
6725         * typeck.c (build_unary_op): Do not optimize "&x[y]" when in a
6726         template.
6727
6728 2004-05-22  Roger Sayle  <roger@eyesopen.com>
6729
6730         * name-lookup.c (check_for_out_of_scope_variable): Avoid ICE by
6731         returning when TREE_TYPE is error_mark_node.
6732         * typeck.c (require_complete_type): Return error_mark_node if
6733         value's type is an error_mark_node.
6734
6735 2004-05-20  Andrew Pinski  <pinskia@physics.uc.edu>
6736
6737         * optimize.c (calls_setjmp_r): Remove.
6738         (calls_setjmp_p): Remove.
6739         * cp-tree.c (calls_setjmp_p): Remove.
6740         * decl.c (finish_function): Do not call calls_setjmp_p.
6741
6742 2004-05-18  Zack Weinberg  <zack@codesourcery.com>
6743
6744         * decl.c (cp_finish_decl): Use mark_decl_referenced.
6745         * decl2.c (maybe_make_one_only): Likewise.
6746         * method.c (use_thunk): Likewise.
6747
6748 2004-05-18  Jason Merrill  <jason@redhat.com>
6749
6750         * class.c (build_base_path): Tidy a bit.
6751
6752 2004-05-14  Geoffrey Keating  <geoffk@apple.com>
6753
6754         * name-lookup.c (struct scope_binding): New.
6755         (EMPTY_SCOPE_BINDING): New.
6756         (lookup_using_namespace): Take a scope_binding instead of a
6757         cxx_binding.
6758         (qualified_lookup_using_namespace): Likewise.
6759         (cxx_binding_clear): Delete.
6760         (do_nonmember_using_decl): Use a scope_binding instead of a
6761         cxx_binding.
6762         (lookup_tag): Don't call select_decl.
6763         (ambiguous_decl): Don't return anything (and change callers to match).
6764         Take a scope_binding as the second parameter.
6765         (lookup_namespace_name): Use a scope_binding instead of a
6766         cxx_binding.
6767         (unqualified_namespace_lookup): Likewise.
6768         (lookup_qualified_name): Likewise.
6769         (select_decl): Take a scope_binding instead of a cxx_binding.
6770         Use macros rather than hand-coding tests for type-ness.
6771
6772 2004-05-13  Diego Novillo  <dnovillo@redhat.com>
6773
6774         * cp-gimplify.c: Rename from cp-simplify.c.
6775         * Make-lang.in, optimize.c: Update.
6776
6777 2004-05-13  Diego Novillo  <dnovillo@redhat.com>
6778
6779         Merge from tree-ssa-20020619-branch.  See
6780         ChangeLog.tree-ssa for details.
6781
6782         * Make-lang.in, call.c, class.c, cp-lang.c, cp-tree.def,
6783         cp-tree.h, cvt.c, decl.c, decl2.c, error.c, except.c,
6784         expr.c, init.c, name-lookup.h, optimize.c, parser.c,
6785         pt.c, rtti.c, semantics.c, tree.c, typeck.c, typeck2.c:
6786         Merged.
6787         * cp-mudflap.c: New file.
6788         * cp-simplify.c:: New file.
6789
6790 2004-05-03  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
6791
6792         PR c++/14389
6793         * decl2.c (check_classfn): For member templates, compare also the
6794         template parameters to match the declaration.
6795         * cp-tree.h: Adjust declaration of check_classfn.
6796         * decl.c (start_decl, grokfndecl): Adjust callers of check_classfn.
6797         * friend.c (do_friend): Likewise.
6798         * pt.c (tsubst_friend_function): Likewise.
6799
6800 2004-05-01  Zack Weinberg  <zack@codesourcery.com>
6801
6802         * decl.c (reshape_init): Do not apply TYPE_DOMAIN to a VECTOR_TYPE.
6803         Instead, dig into the representation type to find the array bound.
6804
6805 2004-04-30  Jason Merrill  <jason@redhat.com>
6806
6807         Refer to base members using COMPONENT_REFs where possible.
6808         * class.c (build_simple_base_path): New fn.
6809         (build_base_path): Use it for non-virtual base references.
6810         (layout_class_type): Change base fields to their real type
6811         after layout is done.
6812         * cp-tree.h (IS_FAKE_BASE_TYPE): New macro.
6813         * cp-lang.c (cxx_get_alias_set): Use it.
6814
6815 2004-04-30  Kazu Hirata  <kazu@cs.umass.edu>
6816
6817         * class.c, cp-tree.h, decl.c, decl2.c, pt.c, rtti.c: Fix
6818         comment typos.
6819
6820 2004-04-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
6821
6822         PR c++/15064
6823         * parser.c (cp_parser_postfix_expression): typeid operator cannot be
6824         used in integral constant expressions.
6825
6826 2004-04-22  Mark Mitchell  <mark@codesourcery.com>
6827
6828         * init.c (build_aggr_init): Fix accidental use of C99 construct in
6829         previous change.
6830
6831         * class.c (initialize_array): Don't set TREE_HAS_CONSTRUCTOR on
6832         braced initializer.
6833         * cp-tree.h (BRACE_ENCLOSED_INITIALIZER_P): New macro.
6834         * decl.c (reshape_init): Use it.
6835         * init.c (perform_member_init): Remove redundant condition.
6836         (build_aggr_init): Adjust to handle brace-enclosed initializers
6837         correctly.
6838         (expand_default_init): Use BRACE_ENCLOSED_INITIALIZER_P.
6839
6840         * parser.c (cp_parser_initializer_clause): Do not set
6841         TREE_HAS_CONSTRUCTOR on the initializer.
6842         * rtti.c (tinfo_base_init): Likewise.
6843         (generic_initializer): Likewise.
6844         (ptr_initializer): Likewise.
6845         (ptm_initializer): Likewise.
6846         (class_initializer): Likewise.
6847         (get_pseudo_ti_init): Likewise.
6848         * typeck2.c (digest_init): Use BRACE_ENCLOSED_INITIALIZER_P.
6849
6850 2004-04-22  Alan Modra  <amodra@bigpond.net.au>
6851
6852         * name-lookup.c (anonymous_namespace_name): Make static.
6853
6854 2004-04-19  Roger Sayle  <roger@eyesopen.com>
6855
6856         PR middle-end/14531
6857         * class.c (build_base_path): Call fold whilst building the NULL
6858         pointer check expression trees.
6859
6860 2004-04-15  Bryce McKinlay  <mckinlay@redhat.com>
6861
6862         * init.c (build_new_1): Don't use type size argument for Java
6863         _Jv_AllocObject call.
6864
6865 2004-04-09  Danny Smith  <dannysmith@users.sourceforge.net>
6866
6867         * method.c (make_alias_for_thunk): Remove preprocessor guard on
6868         declaration and definition.
6869
6870 2004-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
6871
6872         PR c++/14808
6873         * method.c (use_thunk): Test TARGET_USE_LOCAL_THUNK_ALIAS_P rather
6874         than ASM_OUTPUT_DEF.
6875
6876 2004-04-08  Jakub Jelinek  <jakub@redhat.com>
6877
6878         * decl2.c (mark_used): Don't segfault if cfun != NULL but
6879         current_function_decl == NULL.
6880
6881 2004-04-05  Nathan Sidwell  <nathan@codesourcery.com>
6882
6883         PR c++/3518
6884         * pt.c (check_cv_quals_for_unify): Ignore bogus CV quals at outer
6885         level.
6886
6887 2004-04-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6888
6889         * init.c (decl_constant_value): Don't look at DECL_INITIAL
6890         of PARM_DECL.
6891         * tree.c (bot_manip, build_min): Don't look at TREE_CONSTANT
6892         or TREE_SIDE_EFFECTS of a type.
6893
6894 2004-04-02  Nathan Sidwell  <nathan@codesourcery.com>
6895
6896         PR c++/14007
6897         * pt.c (check_cv_quals_for_unify): Correct logic for disallowed
6898         cv-qualifier unification.
6899         * tree.c (cp_build_qualified_type_real): Renable DR295 logic.
6900
6901 2004-04-02  Jan Hubicka  <jh@suse.cz>
6902
6903         * cp-lang. (LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Define.
6904         * cp-tree.h (cp_update_decl_after_saving): Declare.
6905         * tree.c (cp_update_decl_after_saving): Define.
6906
6907 2004-04-01  Mark Mitchell  <mark@codesourcery.com>
6908
6909         PR c++/14803
6910         * typeck.c (get_delta_difference): Call fold before returning the
6911         value.
6912
6913 2004-04-01  Richard Henderson  <rth@redhat.com>
6914
6915         PR c++/14804
6916         * decl.c (cp_finish_decl): Preserve TREE_READONLY more often.
6917         * typeck2.c (split_nonconstant_init): Clear TREE_READONLY.
6918
6919 2004-04-01  Mark Mitchell  <mark@codesourcery.com>
6920
6921         PR c++/14810
6922         * name-lookup.c (maybe_push_cleanup_level): Robustify.
6923
6924 2004-04-01  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6925
6926         * class.c (VTT_TOP_LEVEL_P): Use unsigned_flag directly.
6927
6928 2004-03-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6929
6930         * call.c (joust): Use TYPE_UNSIGNED, not TREE_UNSIGNED.
6931         * class.c (check_bitfield_decl): Likewise.
6932         * cvt.c (type_promotes_to): Likewise.
6933         * decl.c (finish_enum): Likewise.
6934         * mangle.c (write_builtin_type): Likewise.
6935         * semantics.c (finish_switch_cond, finish_unary_op_expr): Likewise.
6936         * typeck.c (type_after_usual_arithmetic_conversions): Likewise.
6937         (build_binary_op): Likewise.
6938
6939 2004-03-31  Jan Hubicka  <jh@suse.cz>
6940
6941         * tree.h (optimize_function): Kill prototype.
6942         * optimize.c (dump_function, optimize_function, dump_finction): Kill.
6943         * semantics.c (expand_body): Kill.
6944
6945 2004-03-30  Mark Mitchell  <mark@codesourcery.com>
6946
6947         PR c++/14724
6948         * decl.c (start_decl_1): Do not decide whether or not to create a
6949         new cleanup level until after the type has been completed.
6950
6951         PR c++/14763
6952         * pt.c (tsubst_default_argument): Clear current_function_decl.
6953
6954 2004-03-30  Zack Weinberg  <zack@codesourcery.com>
6955
6956         * name-lookup.c, parser.c: Use new shorter form of GTY markers.
6957
6958 2004-03-29  Zack Weinberg  <zack@codesourcery.com>
6959
6960         * error.c (dump_function_name): If T's DECL_LANG_SPECIFIC
6961         is null, just print the literal name and return.
6962
6963 2004-03-25  Kazu Hirata  <kazu@cs.umass.edu>
6964
6965         * cxx-pretty-print.c: Fix comment typos.
6966
6967 2004-03-24  Kazu Hirata  <kazu@cs.umass.edu>
6968
6969         * cxx-pretty-print.c, cxx-pretty-print.h, decl.h, friend.c:
6970         Update copyright.
6971
6972 2004-03-23  Ziemowit Laski  <zlaski@apple.com>
6973
6974         * Make-lang.in (cp/mangle.o): Depend on $(TARGET_H).
6975         * mangle.c (write_type): Add call to 'mangle_fundamental_type'
6976         target hook.
6977
6978 2004-03-23  Zack Weinberg  <zack@codesourcery.com>
6979
6980         PR 12267, 12391, 12560, 13129, 14114, 14133
6981         * cp-lang.c (c_reset_state): Delete.
6982         (push_file_scope, pop_file_scope): New stubs.
6983         * parser.c (c_parse_file): Call sorry() here if called more than once.
6984
6985 2004-03-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6986
6987         * typeck.c (build_c_cast): Only look at TREE_CONSTANT_OVERFLOW
6988         for INTEGER_CST.
6989
6990 2004-03-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6991
6992         * cxx-pretty-print.c (pp_cxx_parameter_declaration_clause): Declare.
6993
6994 2004-03-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6995
6996         * error.c (enum pad): Remove.
6997         (dump_qualifiers): Likewise.
6998         (dump_type): Replace dump_qualifiers with pp_cxx_cv_qualifier_seq.
6999         (dump_aggr_type): Likewise.
7000         (dump_type_suffix): Likewise.
7001         (dump_simple_decl): Likewise.
7002         (dump_function_decl): Likewise.
7003         (cv_to_string): Likewise.
7004         (dump_type_prefix): Likewise.  Adjust return void.
7005         * cxx-pretty-print.c (pp_cxx_cv_qualifier_seq): Move to
7006         cxx_pretty_print.h.
7007         (pp_cxx_template_keyword_if_needed): Document.
7008         (pp_cxx_qualified_id): Document case FUNCTION_DECL.  Tidy.
7009         (pp_cxx_expression): Handle NON_DEPENDENT_EXPR and
7010         MUST_NOT_THROW_EXPR.
7011
7012 2004-03-21  Mark Mitchell  <mark@codesourcery.com>
7013
7014         PR c++/14616
7015         * decl.c (cp_finish_decl): Compute the size of arrays declared in
7016         templates, if their type is non-dependent.
7017
7018 2004-03-19  Mark Mitchell  <mark@codesourcery.com>
7019
7020         * call.c (build_op_delete_call): Do not forget the placement
7021         arguments when iterating through mutiple delete operators.
7022
7023         * cp-tree.h (svaed_scope): Remove last_parms.
7024         (NEW_DELETE_OPNAME_P): New macro.
7025         (last_function_parms): Remove.
7026         (do_friend): Adjust prototype.
7027         * decl.c (grokparms): Return the PARM_DECLs directly, rather than
7028         using last_function_parms.
7029         (grokfndecl): Take the PARM_DECLs as an argument, rather than
7030         using last_function_parms.
7031         (grokdeclarator): Adjust accordingly.  Do not form METHOD_TYPEs
7032         for class-specific operator new and operator delete.
7033         (grok_op_properties): Do not look for allocation functions with
7034         METHOD_TYPEs.
7035         (start_function): Use DECL_ARGUMENTS instead of
7036         last_function_parms.
7037         * decl.h (last_function_parms): Do not declare.
7038         * decl2.c (grokclassfn): Do not use last_function_parms.
7039         * friend.c (do_friend): Remove parmdecls parameter.
7040         * name-lookup.c (push_to_top_level): Do not save last_function_parms.
7041         (pop_from_top_level): Do not restore it.
7042         * pt.c (check_explicit_specialization): Do not adjust
7043         last_function_parms.
7044
7045         * name-lookup.c (do_local_using_decl): Create a local binding for
7046         types brought in via using declarations.
7047
7048         * name-lookup.c (lookup_arg_dependent): Handle block-scope
7049         function declarations correctly.
7050
7051         * semantics.c (finish_id_expression): Correct handling of
7052         conversion operators to dependent types.
7053
7054         * typeck.c (lookup_destructor): Allow the use of destructors from
7055         base classes.
7056
7057 2004-03-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7058
7059         * cxx-pretty-print.c (pp_cxx_unqualified_id): Use
7060         TEMPLATE_TYPE_PARM_INDEX instead of TYPE_FIELDS.
7061         * search.c (dfs_unuse_fields): Add two more TREE_CODES that mean
7062         the field is named TEMPLATE_TYPE_PARM_INDEX.
7063
7064 2004-03-19  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7065
7066         PR c++/14545
7067         * parser.c (cp_parser_functional_cast): A cast to anything
7068         but integral or enumaration type is not an integral constant
7069         expression.
7070         * pt.c (value_dependent_expression_p): Handle cast expressions
7071         without operands (such as "int()").
7072
7073 2004-03-18  Mark Mitchell  <mark@codesourcery.com>
7074
7075         * semantics.c (finish_pseudo_destructor_expr): Allow differing
7076         cv-qualification between the type named by the
7077         pseudo-destructor-name and the object-type.
7078
7079         * search.c (accessible_base_p): Handle non-proper bases.
7080
7081         * name-lookup.c (do_nonmember_using_decl): If a using declaration
7082         refers to a single overloaded function, set the type of the
7083         function.
7084         * tree.c (lvalue_type): Simplify.
7085         * typeck.c (type_unknown_p): Do not assume all OVERLOADs have an
7086         unknown type.
7087         (build_unary_op): Handle OVERLOADs with known types.
7088
7089         * decl.c (duplicate_decls): Do not destroy DECL_ARGUMENTS for
7090         function templates.
7091
7092         * parser.c (cp_parser_postfix_expression): Handle the use of
7093         "typename" in non-dependent contexts.  Convert appropriately when
7094         when using a qualified name after "->" or ".".
7095
7096         * call.c (conditional_conversion): Honor the requirement that some
7097         conversions refer to the original object.
7098
7099 2004-03-18  Mark Mitchell  <mark@codesourcery.com>
7100
7101         * call.c (build_conditional_expr): Do not call force_rvalue for
7102         operands of void_type when the conditional expression itself has
7103         void type.
7104         * name-lookup.c (pushdecl): Don't consider a declaration of a
7105         function named "main" to be an overload of a type named "main".
7106         * parser.c (cp_parser_template_name): Perform name lookup when the
7107         template name is proceeded by "template" if the qualifying scope
7108         is non-dependent.
7109         * typeck.c (composite_pointer_type_r): Correctly handle
7110         pointer-to-member types.
7111         (build_const_cast): Likewise.
7112
7113 2004-03-18  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7114
7115         * cp-tree.def (TEMPLATE_TYPE_PARM, TYPEOF_TYPE): Update comments.
7116         * cp-tree.h (NEW_EXPR_USE_GLOBAL, DELETE_EXPR_USE_GLOBAL): Add check.
7117         (DELETE_EXPR_USE_VEC, COMPOUND_EXPR_OVERLOADED): Likewise.
7118         (KOENIG_LOOKUP_P, PTRMEM_OK_P, TEMPLATE_TYPE_PARM_INDEX): Likewise.
7119         (TYPENAME_TYPE_FULLNAME): Add check and use type.values.
7120         (TYPEOF_TYPE_EXPR): New macro.
7121         * class.c (finish_struct_bits): Use TYPE_VFIELD and TYPE_METHODS.
7122         * error.c (dump_type): Use TYPEOF_TYPE_EXPR.
7123         * pt.c (tsubst): Likewise.
7124         * semantics.c (finish_typeof): Likewise.
7125         * search.c (dfs_unuse_fields): Handle TYPENAME_TYPE, TYPEOF_TYPE,
7126         and TEMPLATE_TYPE_PARM.
7127         * typeck.c (comptypes): Use TYPE_ORIG_SIZE_TYPE, not TYPE_DOMAIN.
7128         (build_array_ref): Use TYPE_DOMAIN, not TYPE_VALUES.
7129
7130 2004-03-16  Mark Mitchell  <mark@codesourcery.com>
7131
7132         PR c++/14586
7133         * cp-tree.h (build_new_op): Change prototype.
7134         (build_x_binary_op): Likewise.
7135         * call.c (build_new_op): Add overloaded_p parameter.
7136         * decl2.c (grok_array_decl): Adjust call to build_new_op.
7137         * parser.c (cp_parser_binary_expression): Note that uses of
7138         overloaded operators prevents an expression from being considered
7139         an integral constant.
7140         * pt.c (tsubst_copy_and_build): Adjust calls to build_new_op and/or
7141         build_x_binary_op.
7142         * semantics.c (finish_call_expr): Likewise.
7143         * typeck.c (rationalize_conditional_expr): Likewise.
7144         (build_x_indirect_ref): Likewise.
7145         (build_x_binary_op): Likewise.
7146         (build_x_unary_op): Likewise.
7147         (build_x_compound_expr): Likewise.
7148         (build_modify_expr): Likewise.
7149         * typeck2.c (build_x_arrow): Likewise.
7150
7151 2004-03-15  Kazu Hirata  <kazu@cs.umass.edu>
7152
7153         * cp-lang.c, ptree.c: Update copyright.
7154
7155 2004-03-13  Mark Mitchell  <mark@codesourcery.com>
7156
7157         PR c++/14550
7158         * parser.c (cp_parser_non_integral_constant_expression): Encode
7159         more of the idiom that surrounded calls to this function within
7160         the function itself
7161         (cp_parser_primary_expression): Adjust accordingly.
7162         (cp_parser_postfix_expression): Likewise.
7163         (cp_parser_unary_expression): Likewise.
7164         (cp_parser_cast_expression): Likewise.
7165         (cp_parser_assignment_expression): Likewise.
7166         (cp_parser_expression): Likewise.
7167         (cp_parser_new_expression): Note that new-expressions are not
7168         allowed in integral constant expressions.
7169         (cp_parser_delete_expression): Likewise.
7170
7171 2004-03-12  Matt Austern  <austern@apple.com>
7172
7173         * decl2.c (maybe_make_one_only): Look at
7174         TARGET_EXPLICIT_INSTANTIATION_ONE_ONLY when deciding whether
7175         to make an explicit instantiation weak.
7176         * method.c (use_thunk): Make sure we call comdat_linkage
7177         when appropriate.
7178         * pt.c (do_type_instantiation): On systems where weak symbols
7179         don't go in a static archive's TOC, explicit instantiation of a
7180         class must imply *explicit* instantiation of its memeber.
7181
7182 2004-03-11  Kazu Hirata  <kazu@cs.umass.edu>
7183
7184         * call.c, cp-tree.h, pt.c: Fix comment typos.
7185
7186 2004-03-10  Mark Mitchell  <mark@codesourcery.com>
7187
7188         PR c++/14510
7189         * decl.c (xref_tag): Disregard non-type declarations when
7190         looking up a tagged type.
7191
7192 2004-03-09  Nathan Sidwell  <nathan@codesourcery.com>
7193
7194         PR c++/14397
7195         * call.c (convert_like_real): Build a const qualified temporary,
7196         when testing ctor access.
7197
7198 2004-03-09  Mark Mitchell  <mark@codesourcery.com>
7199
7200         * call.c (initialize_reference): Fix typo.
7201
7202 2004-03-09  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7203
7204         PR c++/14409
7205         * pt.c (determine_specialization): For member templates, match also
7206         constness.
7207
7208         PR c++/14448
7209         * parser.c (cp_parser_initializer_clause): Fold initializer if it is
7210         non-dependent.
7211         * pt.c (tsubst_copy_and_build): Handle NOP_EXPRs.
7212
7213 2004-03-09  Mark Mitchell  <mark@codesourcery.com>
7214
7215         PR c++/14230
7216         * call.c (initialize_reference): Handle initializers that are
7217         class-member access expressions applies to rvalues.
7218
7219 2004-03-09  Mark Mitchell  <mark@codesourcery.com>
7220
7221         PR c++/14432
7222         * name-lookup.c (supplement_binding): Ignore functions that are
7223         marked DECL_ANTICIPATED.
7224
7225 2004-03-08  Mark Mitchell  <mark@codesourcery.com>
7226
7227         PR c++/14401
7228         * class.c (check_field_decls): Complain about non-static data
7229         members of reference type in unions.  Propagate
7230         CLASSTYPE_REF_FIELDS_NEED_INIT and
7231         CLASSTYPE_READONLY_FIELDS_NEED_INIT from the types of non-static
7232         data members.
7233         * init.c (perform_member_init): Complain about mbmers with const
7234         type that are not explicitly initialized.
7235
7236 2004-03-08  Mark Mitchell  <mark@codesourcery.com>
7237
7238         * class.c (check_methods): Don't use IDENTIFIER_ERROR_LOCUS.
7239         * cp-tree.h (DECL_INVALID_OVERRIDER_P): New macro.
7240         (lang_identifier): Remove implicit_decl and error_locus.
7241         (IDENTIFIER_IMPLICIT_DECL): Remove.
7242         (SET_IDENTIFIER_IMPLICTI_DECL): Likewise.
7243         (IDENTIFIER_ERROR_LOCUS): Likewise.
7244         (SET_IDENTIFIER_ERROR_LOCUS): Likewise.
7245         (TYPE_ASSEMBLER_NAME_STRING): Likewise.
7246         (TYPE_ASSEMBLER_NAME_LENGTH): Likewise.
7247         (implicitly_declare): Remove.
7248         * decl.c (warn_extern_redeclared_static): Remove check of
7249         IDENTIFIER_IMPLICIT_DECL.
7250         (duplicate_decls): Don't check IDENTIFIER_ERROR_LOCUS.
7251         (implicitly_declare): Remove.
7252         (grok_ctor_properties): Don't set IDENTIFIER_ERROR_LOCUS.
7253         (start_function): Don't check IDENTIFIER_IMPLICIT_DECL.
7254         (start_method): Don't check IDENTIFIER_ERROR_LOCUS.
7255         * lex.c (unqualified_name_lookup_error): Create a dummy VAR_DECL
7256         in the innermost scope, rather than at namespace scope.
7257         * name-lookup.c (push_local_binding): Give it external linkage.
7258         (pushdecl): Remove dead code.
7259         * name-lookup.h (push_local_binding): Declare it.
7260         * ptree.c (cxx_print_identifier): Don't print
7261         IDENTIFIER_IMPLICIT_DECL or IDENTIFIER_ERROR_LOCUS.
7262         * search.c (check_final_overrider): Use DECL_INVALID_OVERRIDER_P,
7263         not IDENTIFIER_ERROR_LOCUS.
7264         * typeck.c (build_function_call): Remove dead code.
7265
7266 2004-03-08  Jason Merrill  <jason@redhat.com>
7267
7268         PR c++/13170
7269         * decl.c (xref_tag): Remove attribute handling.
7270         * cp-tree.h: Adjust prototype.
7271         * decl.c, parser.c, rtti.c: Adjust callers.
7272         * parser.c (cp_parser_class_head): Pass back attributes in the
7273         class head.
7274         (cp_parser_class_specifier): Adjust.
7275
7276 2004-03-08  Matt Austern  <austern@apple.com>
7277
7278         PR debug/14079
7279         * name-lookup.c (add_decl_to_level): Add extern variables, as well
7280         as static, to static_decls array.
7281
7282 2004-03-05  Jason Merrill  <jason@redhat.com>
7283
7284         * tree.c (list_hash_pieces): s/TYPE_HASH/TREE_HASH/.
7285
7286 2004-03-04  Geoffrey Keating  <geoffk@apple.com>
7287
7288         * decl.c (grokfndecl): Update old incorrect comment.
7289         (grokvardecl): Diagnose C++ variables of type with no linkage.
7290
7291 2004-03-01  Mark Mitchell  <mark@codesourcery.com>
7292
7293         PR c++/14369
7294         * pt.c (build_non_dependent_expr): Do not create a
7295         NON_DEPENDENT_EXPR for a THROW_EXPR.
7296
7297 2004-03-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
7298
7299         PR c++/14369
7300         * error.c (dump_expr): Handle THROW_EXPR.
7301
7302 2004-03-01  Mark Mitchell  <mark@codesourcery.com>
7303
7304         PR c++/14360
7305         * parser.c (cp_parser_postfix_expression): Do not perform Koenig
7306         lookup if ordinary name-lookup finds a non-function.
7307         * pt.c (tsubst_copy_and_build): Likewise.
7308
7309         PR c++/14361
7310         * parser.c (cp_parser_late_parsing_default_args): Check that there
7311         are no extra tokens after the end of the default-argument
7312         expression.
7313
7314 2004-03-01  Mark Mitchell  <mark@codesourcery.com>
7315
7316         PR c++/14324
7317         * lex.c (retrofit_lang_decl): Treat entities with no linkage as
7318         having C++ linkage for name-mangling purposes.
7319
7320         PR c++/14260
7321         * parser.c (cp_parser_direct_declarator): Recognize constructor
7322         declarators that use a template-id to name the class being
7323         constructed.
7324
7325         PR c++/14337
7326         * pt.c (tsubst_qualified_id): Handle dependent qualifying scopes.
7327         (tsubst_expr): Do not call tsubst_copy, even when
7328         processing_template_decl.
7329
7330 2004-03-01  Jeff Law  <law@redhat.com>
7331
7332         * init.c (build_vec_delete_1): Convert 2nd argument to NE_EXPR to
7333         the proper type.
7334
7335 2004-02-29  Mark Mitchell  <mark@codesourcery.com>
7336
7337         PR c++/14138
7338         * name-lookup.h (push_scope): Change prototype.
7339         * name-lookup.c (push_scope): Do not reenter the current class
7340         scope.
7341         * decl.c (grokfndecl): Check return code from push_scope before
7342         calling pop_scope.
7343         * decl2.c (check_classfn): Likewise.
7344         * parser.c (cp_parser_conversion_function_id): Likewise.
7345         (cp_parser_init_declarator): Likewise.
7346         (cp_parser_direct_declarator): Likewise.
7347         (cp_parser_class_specifier): Likewise.
7348         (cp_parser_class_head): Likewise.
7349         (cp_parser_lookup_name): Likewise.
7350         (cp_parser_constructor_declarator_p): Likewise.
7351         * pt.c (instantiate_class_template): Likewise.
7352         (resolve_typename_type): Likewise.
7353
7354 2004-02-29  Mark Mitchell  <mark@codesourcery.com>
7355
7356         PR c++/14267
7357         * typeck.c (build_modify_expr): Remove more of the cast-as-lvalue
7358         extension.
7359
7360         PR debug/12103
7361         * class.c (update_vtable_entry_for_fn): Do not go through
7362         covariance machinery if the type returned by an overrider is the
7363         same as the original.
7364
7365 2004-02-29  Kazu Hirata  <kazu@cs.umass.edu>
7366
7367         * call.c: Fix a comment typo.
7368
7369 2004-02-27  Ziemowit Laski  <zlaski@apple.com>
7370
7371         * tree.c (pod_type_p): Treat VECTOR_TYPEs as PODs.
7372
7373 2004-02-26  Mark Mitchell  <mark@codesourcery.com>
7374
7375         PR c++/14278
7376         * parser.c (cp_parser_parameter_declaration_list): Commit
7377         to fewer tentative parses.
7378
7379 2004-02-26  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7380
7381         PR c++/14284
7382         * pt.c (dependent_type_p_r): A template template parameter is a
7383         dependent type.
7384
7385 2004-02-26  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7386
7387         PR c++/14246
7388         * mangle.c (write_template_arg_literal): Don't rely on identity for
7389         boolean constants.
7390
7391 2004-02-24  Jason Merrill  <jason@redhat.com>
7392
7393         * tree.c (build_exception_variant): Use check_qualified_type.
7394
7395 2004-02-23  Zack Weinberg  <zack@codesourcery.com>
7396             Kazu Hirata  <kazu@cs.umass.edu>
7397
7398         * decl.c (cxx_init_decl_processing): Don't check
7399         flag_writable_strings.
7400
7401 2004-02-23  Andrew Pinski  <pinskia@physics.uc.edu>
7402
7403         PR c++/14156
7404         * typeck.c (maybe_warn_about_returning_address_of_location):
7405         Change check for VAR_DECL to use DECL_P instead.
7406
7407 2004-02-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7408
7409         PR c++/14250
7410         * cvt.c (build_expr_type_conversion): Type must be complete before
7411         looking up for conversions.
7412
7413 2004-02-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7414
7415         PR c++/14143
7416         * name-lookup.c (arg_assoc_class): Don't look into template
7417         arguments if it is not a primary template.
7418
7419 2004-02-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7420
7421         PR c++/12007
7422         * method.c (use_thunk): Always clone function argument tree.
7423
7424 2004-02-20  Mark Mitchell  <mark@codesourcery.com>
7425
7426         PR c++/14199
7427         * pt.c (tsubst_copy): Call mark_used for a PARM_DECL.
7428
7429         PR c++/14173
7430         * semantics.c (begin_class_definition): Set TYPE_PACKED correctly
7431         for all type variants.
7432
7433 2004-02-19  Mark Mitchell  <mark@codesourcery.com>
7434
7435         PR c++/13927
7436         * decl.c (duplicate_decls): Return error_mark_node for invalid
7437         redeclarations.
7438         * name-lookup.c (push_namespace): Ignore the return value from
7439         pushdecl.
7440         * pt.c (push_template_decl_real): Robustify.
7441
7442         PR c++/14186
7443         * name-lookup.c (push_class_level_binding): Do not complain about
7444         adding a binding for a member whose name is the same as the
7445         enclosing class if the member is located in a base class of the
7446         current class.
7447
7448 2004-02-19  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7449
7450         PR c++/14181
7451         * parser.c (cp_parser_new_expression): Parse an ill-formed
7452         direct-new-declarator after a parenthesized type-id to emit good
7453         diagnostic.
7454
7455 2004-02-18  Kazu Hirata  <kazu@cs.umass.edu>
7456
7457         * cp-tree.def, cvt.c: Update copyright.
7458
7459 2004-02-17  Mark Mitchell  <mark@codesourcery.com>
7460
7461         PR c++/11326
7462         * cp-tree.h (abi_version_at_least): Remove.
7463         * mangle.c: Include flags.h.
7464
7465 2004-02-15  Mark Mitchell  <mark@codesourcery.com>
7466
7467         PR c++/13971
7468         * call.c (build_conditional_expr): Handle conversions between
7469         class types which result in differently cv-qualified type
7470         variants.
7471
7472         PR c++/14086
7473         * class.c (delete_duplicate_fields_1): Remove.
7474         (delete_duplicate_fields): Likewise.
7475         (finish_struct_anon): Remove check for members with the same name
7476         as their enclosing class.
7477         (check_field_decls): Do not call duplicate_fields.
7478         * decl.c (grokdeclarator): Remove check for static data members
7479         with the same name as their enclosing class.
7480         * name-lookup.c (push_class_level_binding): Check for members with
7481         the same name as their enclosing class.
7482
7483 2004-02-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>
7484
7485         PR c++/14085
7486         * error.c (dump_decl): Handle TEMPLATE_TYPE_PARM.
7487
7488 2004-02-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7489
7490         PR c++/13635
7491         * pt.c (push_template_decl_real): Make sure DECL_TI_ARGS of DECL
7492         has full set of arguments.
7493
7494 2004-02-13  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7495
7496         PR c++/13927
7497         * error.c (dump_decl) <ALIAS_DECL>: Dump as simple declarations.
7498
7499 2004-02-13  Mark Mitchell  <mark@codesourcery.com>
7500
7501         PR c++/14122
7502         * cp-tree.h (delete_sanity): Change prototype.
7503         * decl2.c (delete_sanity): Make doing_vec a bool, not an int.
7504         Remove dead code.  Adjust code to warn about deleting an array.
7505         * typekc.c (decay_conversion): Use build_address and build_nop.
7506
7507         PR c++/14108
7508         * search.c (accessible_p): Do not check access in thunks.
7509
7510         PR c++/14083
7511         * call.c (build_conditional_expr): Call force_rvalue on the
7512         non-void operand in the case that one result is a throw-expression
7513         and the other is not.
7514
7515 2004-02-13  Ian Lance Taylor  <ian@wasabisystems.com>
7516
7517         PR c++/9851
7518         * parser.c (cp_parser_pseudo_destructor_name): Check for errors on
7519         the type name and look ahead for ::~, and bail out early with a
7520         better error message if the parse is going to fail.
7521
7522 2004-02-12  Mark Mitchell  <mark@codesourcery.com>
7523
7524         * call.c (conversion_kind): New type.
7525         (conversion_rank): Likewise.
7526         (conversion): Likewise.
7527         (CONVERSION_RANK): New macro.
7528         (conversion_obstack): New variable.
7529         (obstack_initialized): Likewise.
7530         (z_candidate): Change type of convs and second_conv.
7531         (candidate_warning): New type.
7532         (IDENTITY_RANK): Remove.
7533         (EXACT_RANK): Likewise.
7534         (PROMO_RANK): Likewise.
7535         (STD_RANK): Likewise.
7536         (PBOOL_RANK): Likewise.
7537         (USER_RANK): Likewise.
7538         (ELLIPSIS_RANK): Likewise.
7539         (BAD_RANK): Likewise.
7540         (ICS_RANK): Likewise.
7541         (ICS_STD_RANK): Likewise.
7542         (ICS_USER_FLAG): Likewise.
7543         (ICS_ELLIPSIS_FLAG): Likewise.
7544         (ICS_THIS_FLAG): Likewise.
7545         (ICS_BAD_FLAG): Likewise.
7546         (NEED_TEMPORARY_P): Likewise.
7547         (CHECK_COPY_CONSTRUCTOR_P): Likewise.
7548         (USER_CONV_CAND): Likewise.
7549         (USER_CONV_FN): Likewise.
7550         (conversion_obstack_alloc): New function.
7551         (alloc_conversion): Likewise.
7552         (validate_conversion_obstack): Likewise.
7553         (alloc_conversions): Likewise.
7554         (build_conv): Adjust to deal with new conversion data structures.
7555         (build_identity_conv): New function.
7556         (build_ambiguous_conv): Likewise.
7557         (standard_conversion): Adjust to deal with new conversion data
7558         structures.
7559         (convert_class_to_reference): Likewise.
7560         (direct_reference_binding): Likewise.
7561         (reference_binding): Likewise.
7562         (implicit_conversion): Likewise.
7563         (add_candidate): Likewise.
7564         (add_function_candidate): Likewise.
7565         (add_conv_candidate): Likewise.
7566         (build_builtin_candidate): Likewise.
7567         (print_z_candidate): Likewise.
7568         (merge_conversion_sequences): Likewise.
7569         (build_user_type_conversion_1): Likewise.
7570         (build_user_type_conversion): Likewise.
7571         (build_new_function_call): Likewise.
7572         (build_object_call): Likewise.
7573         (conditional_conversion): Likewise.
7574         (build_conditional_expr): Likewise.
7575         (build_new_op): Likewise.
7576         (build_op_delete_call): Likewise.
7577         (convert_like_real): Likewise.
7578         (build_over_call): Likewise.
7579         (build_new_method_call): Likewise.
7580         (is_subseq): Likewise.
7581         (maybe_handle_implicit_object): Likewise.
7582         (maybe_handle_ref_bind): Likewise.
7583         (compare_ics): Likewise.
7584         (source_type): Likewise.
7585         (add_warning): Likewise.
7586         (joust): Likewise.
7587         (can_convert_arg): Likewise.
7588         (can_convert_arg_bad): Likewise.
7589         (perform_implicit_conversion): Likewise.
7590         (perform_direct_initialization_if_possible): Likewise.
7591         (initialize_reference): Likewise.
7592         * cp-lang.c (cp_tree_size): Do not handle WRAPPER.
7593         * cp-tree.def (WRAPPER): Likewise.
7594         (IDENTITY_CONV): Remove.
7595         (LVALUE_CONV): Likewise.
7596         (QUAL_CONV): Likewise.
7597         (STD_CONV): Likewise.
7598         (PTR_CONV): Likewise.
7599         (PMEM_CONV): Likewise.
7600         (BASE_CONV): Likewise.
7601         (REF_BIND): Likewise.
7602         (USER_CONV): Likewise.
7603         (AMBIG_CONV): Likewise.
7604         (RVALUE_CONV): Likewise.
7605         * cp-tree.h (tree_wrapper): Remove.
7606         (WRAPPER_ZC): Remove.
7607         (lang_tree_node): Remove wrapper.
7608         (LOOKUP_SPECULATIVELY): Remove.
7609         (build_op_delete_call): Adjust prototype.
7610         (validate_conversion_obstack): Declare.
7611         (build_zc_wrapper): Remove.
7612         * cvt.c (convert_to_reference): Remove dead code.
7613         (ocp_convert): Likewise.
7614         * decl.c (redeclaration_error_message): Correct handling of
7615         templates.
7616         (finish_destructor_body): Do not use LOOKUP_SPECULATIVELY.
7617         (cp_tree_node_structure): Remove WRAPPER case.
7618         * decl2.c (finish_file): Call validate_conversion_obstack.
7619         * init.c (build_new_1): Remove use of LOOKUP_SPECULATIVELY.
7620         (build_op_delete_call): Likewise.
7621         (build_x_delete): Likewise.
7622         (build_delete): Adjust call to build_op_delete_call.
7623         * pt.c (tsubst_friend_declaration): Adjust code to determine
7624         whether or not a friend template is a definition.
7625         (tsubst_decl): Clear DECL_INITIAL for new FUNCTION_DECLs.
7626         * tree.c (build_zc_wrapper): Remove.
7627
7628 2004-02-12  Zack Weinberg  <zack@codesourcery.com>
7629
7630         * cp-lang.c: Don't define LANG_HOOKS_BUILTIN_TYPE_DECLS.
7631         * cp-tree.h: Don't declare cxx_builtin_type_decls.
7632         * decl.c (builtin_type_decls, cxx_builtin_type_decls): Delete.
7633         (record_builtin_type): Call debug_hooks->type_decl on the TYPE_DECL.
7634
7635 2004-02-10  Mark Mitchell  <mark@codesourcery.com>
7636
7637         * typeck.c (lookup_destructor): Fix typo in error message.
7638
7639 2004-02-09  Kazu Hirata  <kazu@cs.umass.edu>
7640
7641         * call.c, parser.c, tree.c: Fix comment typos.
7642
7643 2004-02-07  Zack Weinberg  <zack@codesourcery.com>
7644
7645         Bug 13856
7646         * optimize.c (maybe_clone_body): Don't update DECL_ESTIMATED_INSNS.
7647         * decl.c (duplicate_decls, start_function): Likewise.
7648
7649 2004-02-07  Zack Weinberg  <zack@codesourcery.com>
7650
7651         * name-lookup.c (pushdecl): Issue shadow warnings directly.
7652         * parser.c (free_parser_stacks): Delete.
7653
7654 2004-02-07  Kazu Hirata  <kazu@cs.umass.edu>
7655
7656         * rtti.c: Update copyright.
7657
7658 2004-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7659
7660         PR c++/14033
7661         * decl.c (require_complete_types_for_parms): Do not insert
7662         error_mark_node in the parameter list.
7663
7664 2004-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7665
7666         PR c++/14028
7667         * parser.c (cp_parser_enclosed_template_argument_list): Emit straight
7668         error when terminator can not be found.
7669
7670 2004-02-05  Kelley Cook  <kcook@gcc.gnu.org>
7671
7672         Make-lang.in (po-generated):  Delete.
7673
7674 2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>
7675
7676         * call.c (type_passed_as): Replace PROMOTE_PROTOTYPES with
7677         targetm.calls.promote_prototypes.
7678
7679 2004-02-05  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
7680
7681         PR middle-end/13750
7682         Revert:
7683         2004-01-15  Geoffrey Keating  <geoffk@apple.com>
7684         PR pch/13361
7685         * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
7686         (handle_pragma_implementation): Likewise.
7687
7688 2004-02-05  Mark Mitchell  <mark@codesourcery.com>
7689
7690         PR c++/13714
7691         * typeck.c (lookup_destructor): Tweak error message.
7692
7693 2004-02-05  Jan Hubicka  <jh@suse.cz>
7694
7695         * tree.c (cp_cannot_inline_tree_fn):  Allow inlining of comdat
7696         functions.
7697
7698 2004-02-05  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7699
7700         PR c++/14008
7701         * parser.c (cp_parser_diagnose_invalid_typename): Removed parsing
7702         code, only emits the diagnostic now. Added lookup of the identifier
7703         and support for qualified ids.
7704         (cp_parser_parse_and_diagnose_invalid_type_name): New function.
7705         Parse an (invalid) type name as id-expression within a declarator.
7706         (cp_parser_simple_declaration): Use it.
7707         (cp_parser_member_declaration): Likewise.
7708         (cp_parser_make_typename_type): New function. Handle errors through
7709         cp_parser_diagnose_invalid_typename.
7710         (cp_parser_elaborated_type_specifier): Use it.
7711
7712 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
7713
7714         PR c++/13932
7715         * call.c (convert_like_real): Use "converting" rather than
7716         "argument" as the descriptive keyword to
7717         dubious_conversion_warnings.
7718         * typeck.c (convert_for_assignment): Do not call
7719         dubious_conversion_warnings.
7720
7721 2004-02-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7722
7723         PR c++/13086
7724         * init.c (build_delete): Emit a more informative error message in
7725         case of an incomplete type, and on the correct source line.
7726
7727 2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>
7728
7729         * error.c, search.c: Update copyright.
7730
7731 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
7732
7733         PR c++/9941
7734         * rtti.c (tinfo_base_init): Use import_export_tinfo to decide the
7735         linkage for the typeinfo name string.
7736
7737 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
7738
7739         PR c++/13969
7740         * cp-tree.h (fold_non_dependent_expr): New function.
7741         * parser.c (cp_parser_fold_non_dependent_expr): Remove.
7742         (cp_parser_template_argument): Use fold_non_dependent_expr.
7743         (cp_parser_direct_declarator): Likewise.
7744         * pt.c (fold_non_dependent_expr): New function.
7745         (convert_nontype_argument): Use it.
7746         (tsubst_qualified_id): Simplify.
7747         (tsubst_copy_and_build): Likewise.
7748
7749 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
7750
7751         * decl.c (cxx_push_function_context): Do not set
7752         current_function_is_thunk.
7753         * method.c (use_thunk): Set CALL_FROM_THUNK on the call to the
7754         actual function.
7755
7756 2004-02-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7757
7758         PR c++/13997
7759         * pt.c (more_specialized_class): Increase processing_template_decl
7760         while partial ordering.
7761
7762 2004-02-03  Mark Mitchell  <mark@codesourcery.com>
7763
7764         PR c++/13925
7765         * decl.c (start_function): Do not call pushdecl for any
7766         instantiation or specialization of a primary template.
7767
7768 2004-02-03  Mark Mitchell  <mark@codesourcery.com>
7769
7770         PR c++/13950
7771         * parser.c (cp_parser_class_name): Robustify.
7772
7773         PR c++/13970
7774         * parser.c (cp_parser_cache_group): Do not consume the EOF token.
7775
7776         PR c++/14002
7777         * semantics.c (finish_id_expression): Do not return an
7778         IDENTIFIER_NODE when lookup finds a PARM_DECL.
7779
7780 2004-02-03  Mark Mitchell  <mark@codesourcery.com>
7781
7782         PR c++/13978
7783         * pt.c (build_non_dependent_expr): Do not build
7784         NON_DEPENDENT_EXPRs for FUNCTION_DECLs or TEMPLATE_DECLs.
7785
7786         PR c++/13968
7787         * semantics.c (finish_id_expression): Do not return an
7788         IDENTIFIER_NODE when lookup finds a VAR_DECL.
7789
7790         PR c++/13975
7791         * parser.c (cp_parser_simple_declaration): When skipping to the
7792         end of the statement swallow the terminating semicolon.
7793
7794 2004-02-02  Mark Mitchell  <mark@codesourcery.com>
7795
7796         PR c++/13113
7797         * init.c (build_offset_ref): Improve error recovery for invalid
7798         uses of non-static member functions.
7799
7800         PR c++/13854
7801         * cp-tree.h (cp_build_type_attribute_variant): New function.
7802         * class.c (build_clone): Use cp_build_type_attribute_variant.
7803         * decl.c (duplicate_decls): Likewise.
7804         * pt.c (copy_default_args_to_explicit_spec): Likewise.
7805         (tsubst_function_type): Likewise.
7806         * tree.c (build_exception_variant): Check attributes before
7807         concluding that two types are the same.
7808         (cp_build_type-attribute_variant): New method.
7809         * typeck.c (merge_types): Use cp_build_type_attribute_variant.
7810
7811         PR c++/13907
7812         * call.c (convert_class_to_reference): Keep better track of
7813         pedantically invalid user-defined conversions.
7814
7815 2004-02-01  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7816
7817         PR c++/13957
7818         * pt.c (tsubst_qualified_id): Improved error message when a type
7819         is expected but not found.
7820
7821 2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>
7822
7823         * class.c: Fix comment typos.
7824         * decl.c: Likewise.
7825         * error.c: Likewise.
7826         * parser.c: Likewise.
7827         * pt.c: Likewise.
7828         * search.c: Likewise.
7829         * typeck.c: Likewise.
7830
7831 2004-01-30  Richard Henderson  <rth@redhat.com>
7832
7833         PR c++/13693
7834         * method.c (use_thunk): Don't force_target_expr for void thunks.
7835         * tree.c (build_target_expr_with_type): Assert non-void type.
7836         (force_target_expr): Likewise.
7837
7838 2004-01-30  Michael Matz  <matz@suse.de>
7839
7840         * parser.c (cp_parser_labeled_statement): Accept case ranges.
7841
7842 2004-01-30  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7843
7844         DR206
7845         PR c++/13813
7846         * decl.c (grokdeclarator): Check immediatly type completeness for
7847         non-dependent types.
7848
7849 2004-01-30  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7850
7851         PR c++/13683
7852         * call.c (convert_arg_to_ellipsis): Don't emit a warning if within
7853         a sizeof expression.block
7854
7855 2004-01-29  Mark Mitchell  <mark@codesourcery.com>
7856
7857         PR c++/13883
7858         * mangle.c (write_encoding): Correct encoding of member template
7859         constructors.
7860
7861 2004-01-28  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7862
7863         * parser.c (cp_parser_template_id): Parse tentatively `[:' after a
7864         template name as it was `<::' (digraph typo).
7865         (cp_parser_nth_token_starts_template_argument_list_p): New function.
7866         (cp_parser_id_expression): Use it.
7867         (cp_parser_nested_name_specifier_opt): Likewise.
7868         (cp_parser_template_name): Likewise.
7869         (cp_parser_class_name): Likewise.
7870         (cp_lexer_get_preprocessor_token): Use c_lex_with_flags.
7871
7872 2004-01-28  Mark Mitchell  <mark@codesourcery.com>
7873
7874         PR c++/13791
7875         * typeck.c (merge_types): Do not merge attributes into
7876         TYPENAME_TYPEs.
7877
7878         PR c++/13736
7879         * parser.c (cp_parser_direct_declarator): Do not prevent
7880         backtracking inside a parenthesized declarator.
7881         (cp_parser_parameter_declaration): Fix typo in comment.
7882
7883 2004-01-28  Jan Hubicka  <jh@suse.cz>
7884
7885         * semantics.c (expand_body)  Do emit_associated_thunks before
7886         expansion.
7887
7888 2004-01-27  Devang Patel  <dpatel@apple.com>
7889
7890         * name-lookup.c: Include "debug.h"
7891         (do_namespace_alias): Invoke debug_hooks to emit debug info
7892         for namespace alias.
7893         (do_local_using_decl): Invoke debug_hooks to emit debug info
7894         for using decl.
7895         (do_class_using_decl): Same.
7896         (do_toplevel_using_decl): Same.
7897         (do_using_directive): Same.
7898         (cp_emit_debug_info_for_using): New function.
7899         * Make-lang.in (cp/parser.o): Depend on debug.h
7900         (cp/name-lookup.o): Same.
7901
7902 2004-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7903
7904         * cp-tree.h (language_function, lang_type_header): Use
7905         BOOL_BITFIELD.
7906         * name-lookup.h (cp_binding_level): Likewise.
7907
7908 2004-01-26  Mark Mitchell  <mark@codesourcery.com>
7909
7910         PR c++/13663
7911         * semantics.c (finish_for_expr): Check for unresolved overloaded
7912         functions.
7913
7914         * class.c (add_method): Just check processing_template_decl to
7915         determine whether or not we are within a template.
7916         * decl2.c (maybe_retrofit_in_chrg): Likewise.
7917         * init.c (decl_constant_value): Check the type of the declaration,
7918         not TREE_READONLY.
7919         * name-lookup.c (maybe_push_to_top_level): Rename to ...
7920         (push_to_top_level): ... this.
7921         * name-lookup.h (maybe_push_to_top_level): Do not declare it.
7922         * pt.c (push_template_decl_real): Reorder condition for speed.
7923         (convert_template_argument): Use dependency-checking functions in
7924         place of uses_template_parms.
7925         (lookup_template_class): Avoid calling uses_template_parms more
7926         than once.
7927         (uses_template_parms): Reimplement, using dependency-checking
7928         functions.
7929         (instantiate_class_template): Use push_to_top_level, not
7930         maybe_push_to_top_level.
7931         (type_unification_real): Simplify.
7932         (type_dependent_expression_p): Handle OFFSET_REFs and
7933         TEMPLATE_DECLs.
7934         (any_dependent_template_arguments_p): Handle multiple levels of
7935         template argument.
7936         * semantics.c (expand_or_defer_fn): Do not check
7937         uses_template_parms for template instantiations.
7938         * typeck.c (comptypes): Avoid calling cp_type_quals.
7939
7940 2004-01-25  Mark Mitchell  <mark@codesourcery.com>
7941
7942         PR c++/13833
7943         * call.c (build_over_call): Do not convert arguments when
7944         processing a template.
7945         * pt.c (build_non_dependent_expr): Do not build a
7946         NON_DEPENDENT_EXPR for arithmetic constants.
7947
7948 2004-01-25  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7949
7950         PR c++/13810
7951         * parser.c (cp_parser_type_parameter): When cp_parser_id_expression
7952         returns a TYPE_DECL. no further lookup is required.
7953         * semantics.c (check_template_template_default_arg): A TYPE_DECL
7954         is invalid. Rework to give better diagnostics.
7955
7956 2004-01-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7957
7958         PR c++/13797
7959         * pt.c (instantiate_class_template): Add an error_mark_node
7960         check.
7961         (tsubst_decl) <TEMPLATE_DECL case>: Likewise.
7962
7963 2004-01-23  Andrew Pinski  <pinskia@physics.uc.edu>
7964
7965         PR c++/13701
7966         * decl.c (finish_function): Move the call to
7967         finish_fname_decls below the call to
7968         finish_eh_spec_block.
7969
7970 2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>
7971
7972         * optimize.c, typeck2.c: Update copyright.
7973
7974 2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>
7975
7976         * Make-lang.in, call.c, class.c, decl2.c, except.c, expr.c,
7977         init.c, mangle.c, typeck.c: Update copyright.
7978
7979 2004-01-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
7980
7981         * parser.c (cp_parser_class_specifier): Prevent garbage collection.
7982
7983 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
7984
7985         * Make-lang.in: Replace $(docdir) with doc.
7986         (c++.info, c++.srcinfo): Dummy entry.
7987         (c++.man, c++.srcman): New rules.
7988         (c++.install-man): Revamp rule.
7989
7990 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
7991
7992         * Make-lang.in (CXX_INSTALL_NAME, GXX_INSTALL_NAME,
7993         CXX_TARGET_INSTALL_NAME, GXX_TARGET_INSTALL_NAME): Define via a
7994         immediate $(shell) instead of deferred backquote.
7995
7996 2004-01-19  Mark Mitchell  <mark@codesourcery.com>
7997
7998         PR c++/13651
7999         * parser.c (cp_parser_postfix_expression): When encountering
8000         incomplete type on left-hand side of "->" or ".", treat the entire
8001         expression as erroneous.
8002
8003         PR c++/13592
8004         * call.c (build_field_call): Remove.
8005         (n_build_method_call): Likewise.
8006         (build_method_call): Likewise.
8007         (build_new_method_call): Do not call build_field_call.
8008         * class.c (n_build_method_call): Remove.
8009         (print_class_statistics): Do not print it.
8010         * cp-tree.h (build_method_call): Remove declaration.
8011         (finish_object_call_expr): Likewise.
8012         (build_new_1): Do not use build_method_call.
8013         * parser.c (cp_parser_postfix_expression): Use finish_call_expr
8014         when the function appearing on the right-hand-side of "." or "->"
8015         is not actually a function.
8016         * pt.c (tsubst_copy_and_build): Likewise.
8017         * semantics.c (finish_object_call_expr): Remove.
8018
8019 2004-01-18  Mark Mitchell  <mark@codesourcery.com>
8020
8021         PR c++/13710
8022         * pt.c (tsubst): Use finish_typeof.
8023
8024 2004-01-18  Jason Merrill  <jason@redhat.com>
8025
8026         PR c++/11725
8027         * except.c (build_throw): In a template, set
8028         current_function_returns_abnormally.
8029
8030 2004-01-17  Fred Fish  <fnf@intrinsity.com>
8031
8032         PR c++/11895
8033         * decl.c (reshape_init): Handle VECTOR_TYPE like ARRAY_TYPE,
8034         except don't call array_type_nelts() with a VECTOR_TYPE.
8035
8036 2004-01-16  Jan Hubicka  <jh@suse.cz>
8037
8038         * mangle.c (write_mangled_name): Remove inline modifier.
8039
8040 2004-01-16  Mark Mitchell  <mark@codesourcery.com>
8041
8042         PR c++/13574
8043         * decl.c (compute_array_index_type): Fix grammar in comment.
8044         * init.c (build_zero_init): Handle zero-sized arrays correctly.
8045
8046         PR c++/13178
8047         * call.c (name_as_c_string): Print conversion operator names
8048         correctly.
8049
8050         PR c++/13478
8051         * call.c (initialize_reference): Pass -1 for inner parameter to
8052         convert_like_real.
8053
8054 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
8055
8056         PR c++/13407
8057         * parser.c (cp_parser_base_specifier): Check for an invalid
8058         keyword `typename' and emit an user-friendly error message.
8059
8060 2004-01-15  Geoffrey Keating  <geoffk@apple.com>
8061
8062         PR pch/13361
8063         * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
8064         (handle_pragma_implementation): Likewise.
8065
8066 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
8067
8068         PR c++/9259
8069         * typeck.c (build_class_member_access_expr): Allow to access members
8070         of the currently open class.
8071         (finish_class_member_access_expr): Likewise.
8072
8073 2004-01-15  Alexandre Oliva  <aoliva@redhat.com>
8074
8075         PR c++/13659
8076         * name-lookup.c (validate_nonmember_using_decl): Take scope and
8077         name by value, instead of computing them.
8078         (do_local_using_decl, do_toplevel_using_decl): Add scope and name
8079         arguments.  Pass them to validate_nonmember_using_decl.
8080         * name-lookup.h (do_local_using_decl): Adjust.
8081         (do_toplevel_using_decl): Likewise.
8082         * parser.c (cp_parser_using_declaration): Likewise.
8083         * pt.c (tsubst_expr): Likewise.
8084
8085 2004-01-15  Alexandre Oliva  <aoliva@redhat.com>
8086
8087         PR c++/13594
8088         PR c++/13658
8089         * name-lookup.c (qualified_lookup_using_namespace): Search
8090         strongly-associated namespaces first, and only then try other
8091         namespaces.
8092
8093 2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>
8094
8095         * Make-lang.in (c++.srcextra): Dummy entry.
8096
8097 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
8098
8099         PR c++/8856
8100         * parser.c (cp_parser_template_name): Don't try to parse a
8101         conversion-function-id, as it cannot be a template-name.
8102         (cp_parser_simple_type_specifier): Check for invalid template-ids
8103         even after a built-in type.
8104
8105 2004-01-14  Jan Hubicka  <jh@suse.cz>
8106
8107         PR c++/12850
8108         * pt.c (instantiate_decl):  Do not increase function_depth.
8109
8110 2004-01-14  Danny Smith  <dannysmith@users,sourceforge.net>
8111
8112         PR c++/9021
8113         PR c++/11005
8114         * parser.c (cp_parser_elaborated_type_specifier): Warn about
8115         attributes and discard.
8116         * decl.c (xref_tag): Don't overwite existing attributes with
8117         NULL_TREE.
8118
8119 2004-01-14  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
8120
8121         PR c++/12335
8122         * parser.c (cp_parser_lookup_name): Return error_mark_node if there
8123         is no destructor while looking up a BIT_NOT_EXPR.
8124
8125 2004-01-13  Ian Lance Taylor  <ian@wasabisystems.com>
8126
8127         * cxxfilt.c: Remove unused file.
8128
8129 2004-01-14  Jan Hubicka  <jh@suse.cz>
8130
8131         Partial fix to PR c++/12850
8132         * decl2.c (mark_used): Do not proactively instantiate templates
8133         when compiling in unit-at-a-time or not optimizing.
8134         * optimize.c (maybe_clone_body): Do not increase function depth.
8135
8136 2004-01-13  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
8137
8138         PR c++/13474
8139         * pt.c (tsubst) <INTEGER_TYPE>: Remove obsolete array index tweaking.
8140
8141 2004-01-12  Steven Bosscher  <stevenb@suse.de>
8142
8143         PR c++/13558
8144         * parser.c (cp_parser_member_declaration): Any non-type is also
8145         not a class or a function.
8146
8147 2004-01-12  Jason Merrill  <jason@redhat.com>
8148
8149         PR c++/12815
8150         * class.c (build_base_path): Do not mark vtable references as
8151         TREE_CONSTANT.
8152         (build_vtbl_ref_1): Likewise.
8153
8154 2004-01-12  Richard Henderson  <rth@redhat.com>
8155
8156         PR opt/10776
8157         * typeck2.c (split_nonconstant_init_1, split_nonconstant_init): New.
8158         (store_init_value): Use it.
8159         * decl.c (check_initializer): Expect full initialization code
8160         from store_init_value.
8161         * init.c (expand_aggr_init_1): Likewise.
8162         * decl2.c (maybe_emit_vtables): Abort if runtime init needed.
8163
8164 2004-01-12  Mark Mitchell  <mark@codesourcery.com>
8165
8166         * class.c (layout_class_type): For non-POD class types, also copy
8167         the DECL_SIZE and DECL_MODE of fields to the base class type.
8168
8169 2004-01-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8170
8171         PR c++/13289
8172         * pt.c (instantiate_decl): Set DECL_TEMPLATE_INSTANTIATED before
8173         calling regenerate_decl_from_template.
8174
8175 2004-01-12  Scott Brumbaugh  <scottb.lists@verizon.net>
8176
8177         PR c++/4100
8178         * parser.c (cp_parser_decl_specifier_seq): Add check for a friend
8179         decl-specifier occurring along with a class definition.
8180
8181 2004-01-12  Ian Lance Taylor  <ian@wasabisystems.com>
8182
8183         * parser.c (cp_parser_decl_specifier_seq): Add parenthetical
8184         clauses to comments describing declares_class_or_enum.
8185         (cp_parser_type_specifier): Set *declares_class_or_enum to 0, not
8186         false.
8187
8188 2004-01-12  Jan Hubicka  <jh@suse.cz>
8189
8190         * pt.c (for_each_template_parm): Do not check for duplicates.
8191         (for_each_template_parm): Use walk_tree duplicate checking code.
8192
8193 2004-01-11  Ian Lance Taylor  <ian@wasabisystems.com>
8194
8195         PR c++/3478
8196         * parser.c (cp_parser_decl_specifier_seq): If the first decl_spec
8197         is error_mark_node, don't add any more decl_specs.
8198         (cp_parser_init_declarator): After committing to a declaration, if
8199         the decl_specifiers start with error_mark_node, issue an error and
8200         change the type to "int".
8201
8202 2004-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>
8203
8204         PR bootstrap/7817
8205         * Make-lang.in: Copy gcc.1 to g++.1 rather than using .so.
8206
8207 2004-01-10  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
8208
8209         DR 337
8210         PR c++/9256
8211         * pt.c (tsubst): Substitution must fail if we are attempting to
8212         create an array with element type that is an abstract class type.
8213         * decl.c (cp_finish_decl): Strip pointers and array types recursively
8214         before calling abstract_virtuals_error.
8215
8216 2004-01-09  Alexandre Oliva  <aoliva@redhat.com>
8217
8218         * name-lookup.c (qualified_lookup_using_namespace): Consider
8219         strong using directives even if we've already found a binding.
8220
8221 2004-01-09  Mark Mitchell  <mark@codesourcery.com>
8222
8223         * cp-tree.h (cxx_expand_expr): Change prototype.
8224         * expr.c (cxx_expand_expr): Add alt_rtl parameter.
8225
8226 2004-01-08  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
8227
8228         PR c++/12573
8229         * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
8230         looking into them recursively. They can be there because of the
8231         new __offsetof__ extension.
8232
8233 2004-01-07  Zack Weinberg  <zack@codesourcery.com>
8234
8235         * parser.c (cp_parser_save_member_function_body): Mark the
8236         definition static.
8237
8238 2004-01-05  Mark Mitchell  <mark@codesourcery.com>
8239
8240         PR c++/13057
8241         * class.c (build_clone): Copy type attributes from the original
8242         function to the clone.
8243
8244         PR c++/12815
8245         * class.c (build_vtbl_ref_1): Do not unconditionally mark vtable
8246         references as constant.
8247
8248         PR c++/12132
8249         * parser.c (cp_parser_explicit_instantiation): Improve error
8250         recovery.
8251         (cp_parser_require): Improve indication of the error location.
8252
8253         PR c++/13451
8254         * parser.c (cp_parser_class_head): Reorder logic to check for
8255         invalid qualification.
8256
8257 2004-01-04  Mark Mitchell  <mark@codesourcery.com>
8258
8259         PR c++/13157
8260         * name-lookup.c (lookup_using_namespace): Remove spacesp
8261         parameter.
8262         (unqualified_namespace_lookup): Likewise.
8263         (lookup_qualified_name): Adjust accordingly.
8264         (lookup_name_real): Likewise.
8265         (lookup_arg_dependent): Do not eliminate the namespace of the
8266         functions found by unqualified name lookup unless that is the
8267         current namespace.
8268
8269 2004-01-04  Andrew Pinski  <pinskia@physics.uc.edu>
8270
8271         * semantics.c (push_deferring_access_checks): Fix format.
8272         (resume_deferring_access_checks): Likewise.
8273         (stop_deferring_access_checks): Likewise.
8274         (pop_deferring_access_checks): Likewise.
8275         (get_deferred_access_checks): Likewise.
8276         (pop_to_parent_deferring_access_checks): Likewise.
8277         (perform_deferred_access_checks): Likewise.
8278         (perform_or_defer_access_check): Likewise.
8279
8280 2004-01-04  Richard Henderson  <rth@redhat.com>
8281
8282         * call.c (build_over_call): Don't create a save_expr of an
8283         aggregate, but rather its address.
8284
8285 2004-01-04  Mark Mitchell  <mark@codesourcery.com>
8286
8287         PR c++/13529
8288         * parser.c (cp_parser_postfix_expression): Allow "." to appear in
8289         an offsetof expression.
8290
8291         * parser.c (cp_parser_parameter_declaration): Fix comment.
8292
8293         PR c++/12226
8294         * call.c (CHECK_COPY_CONSTRUCTOR_P): New macro.
8295         (reference_binding): Set it when appropriate.
8296         (build_temp): New function, split out from ...
8297         (convert_like_real): ... here.  Honor CHECK_COPY_CONSTRUCTOR_P.
8298         (initialize_reference): Likewise.
8299
8300         PR c++/13536
8301         * parser.c (cp_parser): Add in_type_id_in_expr_p.
8302         (cp_parser_new): Initialize it.
8303         (cp_parser_postfix_expression): Set it.
8304         (cp_parser_sizeof_operand): Likewise.
8305         (cp_parser_parameteR_declaration): Do not commit early to tenative
8306         parsers when in_type_id_in_expr_p is set.
8307
8308 2004-01-03  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8309
8310         PR c++/13094
8311         * parser.c (cp_parser_template_argument): Don't call
8312         make_unbound_class_template directly.
8313         (cp_parser_lookup_name): Don't extract TEMPLATE_DECL from
8314         UNBOUND_CLASS_TEMPLATE tree node.
8315
8316 2004-01-02  Richard Sandiford  <rsandifo@redhat.com>
8317
8318         PR target/12729
8319         * method.c (use_thunk): Pass the CALL_EXPR through force_target_expr.
8320
8321 2004-01-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8322
8323         PR c++/13520
8324         * cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): New macro.
8325         (DECL_FUNCTION_TEMPLATE_P): Use it.
8326         (DECL_CLASS_TEMPLATE_P): Likewise.
8327         * parser.c (cp_parser_lookup_name): Add is_template parameter.
8328         (cp_parser_type_parameter): Adjust call to cp_parser_lookup_name.
8329         (cp_parser_template_name): Likewise.
8330         (cp_parser_elaborated_type_specifier): Likewise.
8331         (cp_parser_namespace_name): Likewise.
8332         (cp_parser_class_name): Likewise.
8333         (cp_parser_lookup_name_simple): Likewise.
8334
8335 See ChangeLog.3 for earlier changes.