OSDN Git Service

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