OSDN Git Service

PR c++/18093
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2004-10-26  Mark Mitchell  <mark@codesourcery.com>
2
3         PR c++/18093
4         * search.c (current_scope): Return the innermost non-block scope,
5         not the innermost non-block, non-namespace scope.
6         (at_namespace_scope_p): Adjust accordingly.
7         (dfs_accessible_post): Do not pass namespaces to is_friend.
8         (dfs_walk_once_accessible_r): Likewise.
9         * decl.c (grokvardecl): Adjust call to current_scope.
10         (build_enumerator): Likewise.
11         * parser.c (cp_parser_using_declaration): Likewise.
12         (cp_parser_direct_declarator): Use at_namespace_scope_p instead of
13         current_scope.
14         (cp_parser_class_head): Adjust call to current_scope.
15         * name-lookup.c (do_namespace_alias): Set the DECL_CONTEXT for the
16         alias.
17
18         PR c++/18020
19         * pt.c (tusbst_copy_and_build): Resolve enumeration constants to
20         their underlying values.
21
22         PR c++/18161
23         * typeck.c (build_binary_op): Honor build_type, even when in a
24         template.
25
26 2004-10-26  Nathan Sidwell  <nathan@codesourcery.com>
27
28         * parser.c (cp_lexer_get_preprocessor_token): Remove unneeded
29         padding token checking.
30
31 2004-10-25  Andrew Pinski  <pinskia@physics.uc.edu>
32
33         PR c++/18121
34         * decl.c (grokdeclarator) <case cdk_array>: Remove the call
35         layout_type as it is already done by create_array_type_for_decl.
36
37 2004-10-22  Nathan Sidwell  <nathan@codesourcery.com>
38
39         PR c++/18095
40         * parser.c (eof_token): Make const, correctly initialize rid and
41         location fields.
42         (struct cp_lexer): Replace buffer_end pointer with buffer_length
43         count. Adjust.
44         (cp_lexer_new_main): Directly grow lexer's buffer here.  Don't
45         zero it out.
46         (cp_lexer_new_from_tokens): Adjust.
47         (cp_lexer_grow_buffer): Remove.
48         (cp_lexer_peek_nth_token, cp_lexer_consume_token,
49         cp_lexer_purge_token): Add const casts.
50
51 2004-10-21  Mark Mitchell  <mark@codesourcery.com>
52
53         PR c++/18073
54         PR c++/10841
55         * cp-tree.h (convert_to_base): Change prototype.
56         (build_ptrmemfunc): Likewise.
57         (convert_ptrmem): New function.
58         * call.c (struct conversion): Adjust documentation for base_p.
59         (standard_conversion): Set base_p for ck_pmem conversions as
60         appropriate.
61         (convert_like_real): Use convert_to_base for ck_pmem and ck_ptr
62         conversions.
63         * class.c (convert_to_base): Handle both pointers and objects.
64         Add nonnull parameter.
65         (build_vfield_ref): Adjust call to convert_to_base.
66         * cvt.c (cp_convert_to_pointer): Adjust call to build_ptrmemfunc.
67         (convert_force): Likewise.
68         * typeck.c (build_unary_op): Likewise.
69         (convert_ptrmem): New function.
70         (build_static_cast_1): Use it.
71         (build_reinterpret_cast): Allow conversions to vector types.
72         (get_delta_difference): Add c_cast_p parameter.
73         (build_ptrmemfunc): Likewise.  Adjust calls to
74         get_delta_difference.
75
76 2004-10-21  Andrew Pinski  <pinskia@physics.uc.edu>
77
78         PR c++/13560
79         * error.c (cp_error_at): Output the context as it might be
80         different file as the other location.
81
82 2004-10-21  Kazu Hirata  <kazu@cs.umass.edu>
83
84         * typeck.c: Fix a comment typo.
85
86 2004-10-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
87
88         PR c++/13495
89         * decl.c (make_unbound_class_template): Add PARM_LIST parameter.
90         * cp-tree.h (make_unbound_class_template): Adjust prototype.
91         * parser.c (cp_parser_lookup_name): Adjust call to
92         make_unbound_class_template.
93         (cp_parser_single_declaration): Handle member class of class
94         template as template friend parsing correctly.
95         * friend.c (is_friend): Call is_specialization_of_friend for
96         template friend class.
97         (make_friend_class): Handle member class of class template as
98         template friend.
99         * pt.c (is_specialization_of_friend): Likewise.
100         (instantiate_class_template): Likewise.
101         (tsubst): Adjust call to make_unbound_class_template.
102
103 2004-10-20  Nathan Sidwell  <nathan@codesourcery.com>
104
105         * typeck.c (composite_pointer_type): Add comment about DR 195
106         (build_reinterpret_cast_1): Add for_reinterpret_cast_p parameter.
107         Allow function pointer conversions that DR195 suggests.
108         (build_reinterpret_cast, build_c_cast): Update
109         build_reinterpret_cast_1 calls. 
110
111 2004-10-20  Kazu Hirata  <kazu@cs.umass.edu>
112
113         * call.c, typeck.c: Fix comment typos.
114
115 2004-10-20  Nathan Sidwell  <nathan@codesourcery.com>
116
117         * parser.c (cp_token_position): New typedef. Define VEC thereof.
118         (struct cp_lexer): Allow buffer and buffer_end to be NULL. Make
119         next_token and last_token cp_token_position. Make saved_tokens a
120         VEC(cp_token_position).
121         (eof_token): New static variable.
122         (CP_SAVED_TOKENS_SIZE): Rename to ...
123         (CP_SAVED_TOKEN_STACK): ... here.
124         (cp_lexer_new_main): Adjust main lexer creation and buffer
125         filling.
126         (cp_lexer_new_from_tokens): Do not copy the tokens, merely point
127         to the parent buffer.  Do not append eof token.
128         (cp_lexer_destroy): Only free buffer if non-NULL. Free token
129         stack.
130         (cp_lexer_next_token, cp_lexer_prev_token): Remove.
131         (cp_lexer_token_position, cp_lexer_token_at): New.
132         (cp_lexer_saving_tokens): Adjust. Make inline.
133         (cp_lexer_advance_token, cp_lexer_token_difference): Remove.
134         (cp_lexer_peek_token_emit_debug_info): Fold into ...
135         (cp_lexer_peek_token): ... here.
136         (cp_lexer_peek_nth_token): Don't peek past EOF.
137         (cp_lexer_consume_token): Set next_token to eof_token, if reaching
138         EOF.
139         (cp_lexer_purge_token): Adjust eof setting.
140         (cp_lexer_purge_tokens_after): Likewise.
141         (cp_lexer_save_tokens): Push next_token directly.
142         (cp_lexer_commit_tokens): Adjust.
143         (cp_lexer_rollback_tokens): Pop next_token directly.
144         (cp_parser_check_for_invalid_template_id): Adjust token purging.
145         (cp_parser_translation_unit): Do not consume the EOF.
146         (cp_parser_nested_name_specifier_opt): Adjust token purging.
147         (cp_parser_template_id, cp_parser_template_name): Likewise.
148
149 2004-10-19  Mark Mitchell  <mark@codesourcery.com>
150
151         PR c++/14035
152         * call.c (struct conversion): Add base_p.
153         (convert_like): Add c_cast_p argument.
154         (convert_like_with_conversion): Likewise.
155         (build_conv): Clear base_p.
156         (standard_conversion): Set it, for derived-to-base conversions.
157         (convert_like_real): Add c_cast_p parameter.  Handle pointer
158         conversions directly rather than relying on ocp_convert.
159         (perform_direct_initialization_if_possible): Add c_cast_p
160         parameter.
161         * cp-tree.h (perform_direct_initialization_if_possible): Change
162         prototype.
163         (convert_member_func_to_ptr): New function.
164         * typeck.c (check_for_casting_away_constness): Add diag_fn
165         parameter.
166         (build_static_cast_1): New function, split out from ...
167         (build_static_cast): ... here.  Use build_static_cast_1.
168         (build_reinterpret_cast_1): New function, split out from ...
169         (build_reinterpret_cast): ... here.  Use build_reinterpret_cast_1.
170         (build_const_cast_1): New function, split out from ...
171         (build_const_cast): ... here.  Use build_const_cast_1.
172         (build_c_cast): Rewrite to use build_const_cast_1,
173         build_static_cast_1, and build_reinterpret_cast_1.
174         (convert_member_func_to_ptr): New function.
175
176 2004-10-19  Paolo Bonzini  <bonzini@gnu.org>
177
178         PR c++/18047
179         * parser.c (enum cp_parser_prec): Give relational expressions
180         a higher precedence than equality expressions.
181
182 2004-10-15  Nathan Sidwell  <nathan@codesourcery.com>
183
184         * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Adjust lookup_base call.
185         (ACCESSIBLY_UNIQUELY_DERIVED_P): Remove.
186         (PUBLICLY_UNIQUELY_DERIVED_P): Adjust lookup_base call.
187         (enum base_access): Reorganize.
188         (accessible_base_p, accessible_p): Add consider_local_p parameter.
189         * call.c (standard_conversion): Update comment about
190         DERIVED_FROM_P.
191         (enforce_access): Adjust accessible_p call.
192         (build_over_call): Adjust accessible_base_p call.
193         * class.c (convert_to_base): Adjust lookup_base call.
194         (build_vtbl_ref_1): Likewise.
195         (warn_about_ambiguous_bases): Likewise. Add early exit.
196         * cvt.c (convert_to_pointer_force) Adjust lookup_base call.
197         * search.c (accessible_base_p): Add consider_local_p parameter.
198         (lookup_base): Pass consider_local_p to accessible_base_p call.
199         (friend_accessible_p): Check whether scope is a class member.
200         Remove unnecessary class template check.
201         (accessible_p): Add consider_local_p parameter. Use it.
202         (adjust_result_of_qualified_name_lookup): Adjust lookup_base call.
203         * tree.c (maybe_dummy_object): Likewise.
204         * typeck.c (comp_except_type): Use PUBLICLY_UNIQUELY_DERIVED_P.
205         (build_class_member_access_expr): Adjust lookup_base call.
206         * typeck2.c (binfo_or_else): Likewise.
207         * rtti.c (build_dynamic_cast_1): Access can consider friendship
208         and current scope.
209
210 2004-10-17  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
211
212         PR c++/17743
213         * decl2.c (grokfield): Apply attributes also to TYPE_DECLs.
214
215 2004-10-16  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
216
217         PR c++/10479
218         * parser.c (cp_parser_parenthesized_expression_list): Fold
219         non-dependent expressions in attribute lists.
220
221 2004-10-15  Mark Mitchell  <mark@codesourcery.com>
222
223         PR c++/17042
224         * decl.c (declare_global_var): Use the return value from pushdecl.
225
226         PR c++/14667
227         * parser.c (cp_parser_simple_declaration): Do not diagnose invalid
228         type names if we have already found a valid type.
229         (cp_parser_member_declaration): Likewise.
230         
231         PR c++/17916
232         * parser.c (cp_parser_member_specification_opt): Handle
233         CPP_PRAGMA.
234
235 2004-10-15  Kazu Hirata  <kazu@cs.umass.edu>
236
237         * dump.c, g++spec.c, repo.c: Update copyright.
238
239 2004-10-15  Kazu Hirata  <kazu@cs.umass.edu>
240
241         * decl.c: Fix a comment typo.
242
243 2004-10-13  Andrew Pinski  <pinskia@physics.uc.edu>
244
245         PR c++/16301
246         * name-lookup.c (parse_using_directive): If we have a
247         error_mark_node, do not set the decl namespace associations
248         on it.
249
250 2004-10-14  Mark Mitchell  <mark@codesourcery.com>
251
252         PR c++/17976
253         * decl.c (cp_finish_decl): Do not call expand_static_init more
254         than once for a single variable.
255
256 2004-10-14  Matt Austern  <austern@apple.com>
257
258         * Make-lang.in (pt.o): depends on pointer-set.h
259         * cp-tree.h (cp_walk_subtrees): Last argument is pointer_set_t* now.
260         * pt.c (struct pair_fn_data): Use pointer_set_t, not htab_t
261         (for_each_template_parm): Convert from htab_t to pointer_set_t.
262         * tree.c (cp_walk_subtrees): Last argument is pointer_set_t* now.
263         
264 2004-10-13  Andrew Pinski  <pinskia@physics.uc.edu>
265
266         PR c++/17661
267         * semantics.c (finish_for_expr): Convert expression to void
268         so that we don't create temporaries for a?b:c.
269
270 2004-10-13  Kazu Hirata  <kazu@cs.umass.edu>
271
272         * search.c: Fix a comment typo.
273
274 2004-10-12  Nathan Sidwell  <nathan@codesourcery.com>
275
276         * class.c (dfs_modify_vtables): Simplify condition. Return
277         dfs_skip_bases as appropriate.
278         (modify_all_vtables): Walk in pre-order.
279         * search.c (dfs_walk_all, dfs_walk_once_r,
280         dfs_walk_once_accessible_r): Assert post order function never
281         returns dfs_skip_bases.
282
283         * search.c (struct lookup_base_data_s): New.
284         (lookup_base_r): Replace with ...
285         (dfs_lookup_base): ... this.
286         (lookup_base): Use dfs_walk_all.
287
288 2004-10-12  Kazu Hirata  <kazu@cs.umass.edu>
289
290         * search.c: Fix comment typos.
291
292 2004-10-11  Mark Mitchell  <mark@codesourcery.com>
293
294         PR c++/15786
295         * parser.c (cp_parser_declarator): Add member_p parameter. 
296         (cp_parser_condition): Adjust calls to cp_parser_declarator.
297         (cp_parser_explicit_instantiation): Likewise.
298         (cp_parser_init_declarator): Likewise.
299         (cp_parser_direct_declarator): Add member_p parameter.  Do not
300         parse tentatively when parsing the parameters to a member.
301         (cp_parser_type_id): Adjust calls to cp_parser_declarator.
302         (cp_parser_parameter_declaration): Likewise.
303         (cp_parser_member_declaration): Likewise.
304         (cp_parser_exception_declaration): Likewise.
305
306         PR c++/17936
307         * cp-tree.h (CLASSTYPE_TEMPLATE_SPECIALIZATION): Add a comment.
308         * pt.c (optimize_specialization_lookup_p): Do not optimize lookups
309         for members of partial or explicit specializations.
310
311         PR c++/17929
312         * decl2.c (finish_anon_union): Robustify.
313
314 2004-10-11  Nathan Sidwell  <nathan@codesourcery.com>
315
316         * cp-tree.h (get_dynamic_cast_base_type): Rename to ...
317         (dcast_base_hint): ... here.
318         * rtti.c (build_dynamic_cast_1): Use dcast_base_hint.
319         * search.c (struct dcast_data_s): New.
320         (dynamic_cast_base_recurse): Remove. Replace with ...
321         (dfs_dcast_hint_pre, dfs_dcast_base_post): ... these. New.
322         (get_dynamic_cast_base_type): Rename to ...
323         (dcast_base_hint): ... here.  Use dfs_walk_once_accessible.
324         (accessible_r): Remove.
325         (dfs_accessible_post): New, broken out of accessible_r.
326         (accessible_p): Use dfs_walk_once_accessible.
327         (dfs_walk_once_accessible_r): New. From accessible_r.
328         (dfs_walk_once_accessible): New. From acessible_p.
329
330         * cp-tree.h (SAME_BINFO_TYPE_P): New.
331         * class.c (build_base_path): Use SAME_BINFO_TYPE_P to compare
332         binfo types.
333         (convert_to_base_statically, determine_primary_bases,
334         update_vtable_entry_for_fn, dfs_modify_vtables, build_vtt_inits,
335         dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group,
336         accumulate_vtbl_inits, dfs_accumulate_vtbl_inits,
337         build_vtbl_initializer, add_vcall_offset_vtbl_entries_1): Likewise.
338         * init.c (expand_member_init): Likewise.
339         * search.c (lookup_base_r, dynamic_cast_base_recurse,
340         binfo_via_virtual, copied_binfo, binfo_for_vbase,
341         original_binfo): Likewise.
342         * tree.c (copy_binfo): Likewise.
343
344 2004-10-11  Kazu Hirata  <kazu@cs.umass.edu>
345
346         * semantics.c: Fix comment typos.
347
348 2004-10-10  Andrew Pinski  <pinskia@physics.uc.edu>
349
350         PR c++/17554
351         part of c++/17657
352         middle-end/17703
353         * semantics.c (maybe_cleanup_point_expr): Call
354         fold_build_cleanup_point_expr.
355         (maybe_cleanup_point_expr_void): New function.
356         (add_decl_expr): Call maybe_cleanup_point_expr_void.
357         (finish_expr_stmt): Likewise.
358         (finish_return_stmt): Likewise.
359         (finish_for_expr): Likewise.
360         (finish_asm_stmt): Likewise.
361         * typeck.c (condition_conversion): Call
362         fold_build_cleanup_point_expr.
363
364 2004-10-10  Andrew Pinski  <pinskia@physics.uc.edu>
365
366         PR c++/17907
367         * semantics.c (add_decl_expr): If the decl has a size which
368         has side effects then the decl expression needs a cleanup point.
369
370 2004-10-10  Mark Mitchell  <mark@codesourcery.com>
371
372         PR c++/17393
373         * decl.c (grokdeclarator): Robustify error-recovery on invalid
374         declarations.
375
376 2004-10-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
377
378         Convert diagnostics to use quoting flag q 7/n
379         * typeck.c (composite_pointer_type_r, composite_pointer_type, 
380         cxx_sizeof_or_alignof_type, cxx_sizeof_or_alignof_expr, 
381         string_conv_p, build_class_member_access_expr, 
382         build_class_member_access_expr, lookup_destructor, 
383         finish_class_member_access_expr, build_indirect_ref, 
384         get_member_function_from_ptrfunc, build_function_call, 
385         convert_arguments, build_binary_op, pointer_diff, build_unary_op, 
386         check_for_casting_away_constness, build_static_cast, 
387         build_reinterpret_cast, build_const_cast, build_c_cast, 
388         build_modify_expr, get_delta_difference, build_ptrmemfunc, 
389         dubious_conversion_warnings, convert_for_assignment, 
390         convert_for_initialization, 
391         maybe_warn_about_returning_address_of_local, check_return_expr): 
392         Use quoting marks.
393
394         * typeck2.c (error_not_base_type, readonly_error, 
395         abstract_virtuals_error, cxx_incomplete_type_diagnostic, 
396         store_init_value, digest_init, build_x_arrow, 
397         build_m_component_ref, require_complete_eh_spec_types): Likewise.
398
399         * tree.c (cp_build_qualified_type_real, 
400         handle_java_interface_attribute, handle_init_priority_attribute):
401         Likewise.
402
403         * semantics.c (finish_asm_stmt, finish_non_static_data_member, 
404         finish_pseudo_destructor_expr, 
405         check_template_template_default_arg, begin_class_definition, 
406         finish_base_specifier, qualified_name_lookup_error, 
407         finish_id_expression, finish_typeof): Likewise.
408
409         * search.c (lookup_base, check_final_overrider,
410         look_for_overrides_r): Likewise.
411
412         * rtti.c (get_tinfo_decl, build_dynamic_cast_1): Likewise.
413
414 2004-10-09  Mark Mitchell  <mark@codesourcery.com>
415
416         PR c++/17867
417         * error.c (dump_expr): Correct handling of AGGR_INIT_EXPRs using a
418         constructor.
419
420         PR c++/17670
421         * init.c (build_new): Correct comments.
422         * parser.c (cp_parser_new_expression): Use NULL_TREE for nelts in
423         the non-array case.
424
425         PR c++/17821
426         * parser.c (cp_parser_postfix_dot_deref_expression): If the
427         pseduo-destructor-name production does not work, fall back to the
428         ordinary production.
429
430         PR c++/17826
431         * tree.c (cp_tree_equal): Handle a BASELINK.
432
433         PR c++/17524
434         * cp-tree.h (check_var_type): New function.
435         * decl.c (check_var_type): New function, split out from ...
436         (grokdeclarator): ... here.
437         * pt.c (tsubst_decl): Use check_var_type.
438
439         PR c++/17685
440         * decl.c (grokdeclarator): Disallow declarations of operators as
441         non-functions.
442         
443 2004-10-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
444
445         PR c++/17868
446         * error.c (dump_expr): Add missing case for RDIV_EXPR.
447
448 2004-10-08  Kazu Hirata  <kazu@cs.umass.edu>
449
450         * pt.c, search.c: Fix comment typos.
451
452 2004-10-08  Nathan Sidwell  <nathan@codesourcery.com>
453
454         * cp-tree.h (dfs_walk, dfs_walk_real, dfs_unmark, markedp,
455         unmarkedp): Remove.
456         (dfs_skip_bases, dfs_walk_all, dfs_walk_once): New.
457         * class.c (struct find_final_overrider_data): Remove most_derived,
458         vpath_list and vpath fields.  Add path field.
459         (dfs_find_final_ocerrider_1): Add DEPTH parameter. Adjust.
460         (dfs_find_final_overrider): Rename to ...
461         (dfs_find_final_overrider_pre): ... here. Adjust.
462         (dfs_find_final_overrider_post): Adjust.
463         (dfs_find_final_overrider_q): Fold into
464         dfs_find_final_overrider_pre.
465         (find_final_overrider): Adjust dfs searching.
466         (dfs_modify_vtables): Don't mark binfo here.
467         (modify_all_vtables): Use dfs_walk_once.
468         (build_vtt_inits): Likwise. Use dfs_walk_all.
469         (dfs_build_secondary_vptr_vtt_inits): Don't mark binfo here.
470         Return dfs_skip_bases as appropriate.
471         (dfs_fixup_binfo_vtbls): Return dfs_skip_bases as appropriate.
472         * init.c (dfs_initialized_vtbl_ptrs): Return dfs_skip_bases as
473         appropriate. Don't mark binfo here.
474         (initialize_vtbl_ptrs): Use dfs_walk_once.
475         * search.c (struct vbase_info): Remove unused struct.
476         (access_in_type): Use dfs_walk_once.
477         (dfs_access_in_type): Don't mark binfo here.
478         (dfs_accessible_queue_p, dfs_accessible_p) Remove.
479         Fold into ...
480         (accessible_r): ... here. New. Specialize dfs_walk_once.
481         (accessible_p): Use accessible_r.
482         (lookup_field_queue_p): Remove. Fold into ...
483         (lookup_field_r): ... here. Adjust.
484         (lookup_member): Use dfs_walk_all.
485         (dfs_walk_real, dfs_walk): Replace with ...
486         (dfs_walk_all, dfs_walk_once): ... these.
487         (dfs_walk_once_r, dfs_unmark_r): Workers for dfs_walk_once.
488         (dfs_unmark, unmarkedp, markedp): Remove.
489         (dfs_get_pure_virtuals): Don't mark binfo here.
490         (get_pure_virtuals): Use dfs_walk_once.
491         (dfs_debug_unmarked_p): Remove. Fold into ...
492         (dfs_debug_mark): ... here.
493         (note_debug_info_needed): Use dfs_walk_all.
494
495 2004-10-07  Andrew Pinski  <pinskia@physics.uc.edu>
496
497         * pt.c (tsubst_expr) <case ASM_EXPR>: Look passed the
498         CLEANUP_POINT_EXPR to get the asm expression.
499
500 2004-10-07  Mark Mitchell  <mark@codesourcery.com>
501
502         * cp-tree.h (ICS_USER_FLAG): Remove comment about obsolete flag.
503         (DECL_MEMBER_TEMPLATE_P): New macro.
504         (is_member_template): Remove.
505         (class_method_index_for_fn): New function.
506         * pt.c (build_over_call): Use DECL_MEMBER_TEMPLATE_P.
507         * class.c (finish_struct_methods): Remove out-of-date comment.
508         * decl.c (copy_fn_p): Use DECL_MBMER_TEMPLATE_P.
509         * decl2.c (check_classfn): Use DECL_MEMBER_TEMPLATE_P and
510         class_method_index_for_fn.
511         * pt.c (is_member_template): Remove.
512         (is_member_template_class): Likewise.
513         (optimize_specialization_lookup_p): New function.
514         (retrieve_specialization): Optimize lookups for members that are
515         not member templates.
516         (register_specialization): Adjust accordingly.
517         (build_template_decl): Add member_template_p parameter.  Set
518         DECL_MEMBER_TEMPLATE_P.
519         (process_partial_specialization): Adjust call to
520         retrieve_specialization.
521         (push_template_decl_real): Determine whether the template is a
522         member template.
523         (lookup_template_class): Use retrieve_specialization.
524         (tsubst_decl): Adjust call to retrieve_specialization.
525         (tsubst_exception_specification): New function.
526         (tsubst): Use it.
527         (tsubst_copy): Use DECL_MEMBER_TEMPLATE_P.
528         (instantiate_template): Adjust call to retrieve_specialization.
529         (regenerate_decl_from_template): Do not actually generate a new
530         DECL.
531         (instantiate_decl): Adjust call to retrieve_specialization.
532         (class_method_index_for_fn): New method.
533
534 2004-10-07  Andrew Pinski  <pinskia@physics.uc.edu>
535
536         * parser.c (cp_parser_asm_definition): Look passed the
537         CLEANUP_POINT_EXPR to get the asm expression.
538
539 2004-10-06  Andrew Pinski  <pinskia@physics.uc.edu>
540
541         PR c++/17368
542         * semantics.c (finish_asm_stmt): Asm expressions need cleanup
543         also.
544
545 2004-10-05  Gabriel Dos Reis  <gdr@integrable-solutions.net>
546
547         Convert diagnostics to use quoting flag q 6/n
548         * pt.c (finish_member_template_decl, check_specialization_scope, 
549         maybe_process_partial_specialization, determine_specialization, 
550         check_explicit_specialization, maybe_check_template_type, 
551         process_partial_specialization, check_default_tmpl_args, 
552         push_template_decl_real, redeclare_class_template, 
553         convert_nontype_argument, coerce_template_parms, 
554         lookup_template_class, push_tinst_level, 
555         instantiate_class_template, tsubst_arg_types, 
556         tsubst_function_type, tsubst, tsubst_qualified_id, 
557         tsubst_copy_and_build, check_instantiated_args, 
558         do_decl_instantiation, do_type_instantiation, 
559         invalid_nontype_parm_type_p, check_specialization_namespace, 
560         convert_template_argument, determine_specialization, 
561         check_template_shadow, tsubst_decl 
562         instantiate_pending_templates): Use quoting marks.
563
564 2004-10-05  Nathan Sidwell  <nathan@codesourcery.com>
565
566         PR c++/17829
567         * parser.c (cp_parser_postfix_expression): Inhibit Koenig when
568         unqualified lookup finds a member function.
569
570 2004-10-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>
571
572         Convert diagnostics to use quoting flag q 5/n
573         * parser.c (cp_parser_name_lookup_error, 
574         cp_parser_diagnose_invalid_type_name, 
575         cp_parser_primary_expression, cp_parser_unqualified_id, 
576         cp_parser_nested_name_specifier_opt, cp_parser_labeled_statement, 
577         cp_parser_jump_statement, cp_parser_simple_declaration, 
578         cp_parser_decl_specifier_seq, cp_parser_mem_initializer_id, 
579         cp_parser_type_parameter, cp_parser_template_id, 
580         cp_parser_template_name, cp_parser_direct_declarator, 
581         cp_parser_parameter_declaration_list, cp_parser_class_head, 
582         cp_parser_base_specifier, cp_parser_lookup_name, 
583         cp_parser_late_parsing_default_args, 
584         cp_parser_optional_template_keyword 
585         cp_parser_elaborated_type_specifier, cp_parser_check_class_key, 
586         cp_parser_check_access_in_redeclaration): Use quoting marks.
587
588         * name-lookup.c (supplement_binding, pushdecl, 
589         check_for_out_of_scope_variable, validate_nonmember_using_decl, 
590         do_nonmember_using_decl, lookup_tag, set_decl_namespace, 
591         push_namespace, do_namespace_alias, do_using_directive, 
592         ambiguous_decl, lookup_namespace_name, add_function): Likewise.
593
594         * method.c (use_thunk): Likewise.
595
596         * lex.c (unqualified_name_lookup_error, 
597         unqualified_fn_lookup_error): Likewise.
598
599 2004-10-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>
600
601         Convert diagnostics to use quoting flag q 4/n
602         * except.c (decl_is_java_type, build_throw, 
603         is_admissible_throw_operand, check_handlers_1, check_handlers): 
604         Use quoting formats.
605         * friend.c (add_friend, make_friend_class, do_friend): Likewise.
606         * init.c (sort_mem_initializers, emit_mem_initializers, 
607         member_init_ok_or_else, expand_member_init, is_aggr_type, 
608         build_offset_ref, build_java_class_ref): Likewise.
609
610 2004-10-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
611
612         Convert diagnostics to use quoting flag q 3/n
613         * decl.c (pop_label, duplicate_decls, redeclaration_error_message,
614         redeclaration_error_message, lookup_label, check_goto,
615         make_typename_type, make_unbound_class_template,
616         fixup_anonymous_aggr, check_tag_decl, start_decl, start_decl_1, 
617         grok_reference_init, layout_var_decl, maybe_commonize_var, 
618         check_for_uninitialized_const_var, reshape_init_array, 
619         reshape_init, check_initializer, cp_finish_decl,
620         member_function_or_else, bad_specifiers, grokfndecl, grokvardecl, 
621         check_static_variable_definition, compute_array_index_type, 
622         create_array_type_for_decl, check_special_function_return_type, 
623         grokdeclarator, check_default_argument, grokparms, 
624         grok_ctor_properties, grok_op_properties, 
625         check_elaborated_type_specifier, xref_tag, finish_enum, 
626         build_enumerator, check_function_type, start_preparsed_function, 
627         store_parm_decls): Use quoting formats.
628         * decl2.c (grok_array_decl, delete_sanity, check_member_template, 
629         check_java_method, check_classfn, finish_static_data_member_decl, 
630         grokfield, grokbitfield, grok_function_init,
631         build_anon_union_vars, coerce_new_type, coerce_delete_type,
632         check_default_args): Likewise.
633         * parser.c (cp_parser_decl_specifier_seq): Likewise.
634
635 2004-10-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
636
637         Convert diagnostics to use quoting flag q 2/n
638         * class.c (build_base_path, add_method, alter_access,
639         handle_using_decl, check_bases,
640         maybe_warn_about_overly_private_class, find_final_overrider,
641         warn_hidden, finish_struct_anon, add_implicitly_declared_members,
642         check_bitfield_decl, check_field_decls, layout_empty_base,
643         build_base_field, check_methods, layout_virtual_bases,
644         warn_about_ambiguous_bases, layout_class_type, finish_struct_1,
645         resolve_address_of_overloaded_function, instantiate_type,
646         note_name_declared_in_class): Use format flag "q" for quoting.
647
648 2004-10-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
649
650         Convert diagnostics to use quoting flag q 1/n
651         * error.c (locate_error): Ignore quoting flag q.
652         * call.c (build_user_type_conversion_1, build_operator_new_call,
653         build_object_call, op_error, build_conditional_expr,
654         build_new_op, build_op_delete_call, enforce_access,
655         convert_like_real, convert_arg_to_ellipsis, build_x_va_arg,
656         convert_default_arg, build_over_call, build_new_method_call,
657         joust, perform_implicit_conversion, initialize_reference): Use the
658         quoting flag q.
659
660 2004-10-03  Andrew Pinski  <pinskia@physics.uc.edu>
661
662         PR c++/17797
663         * typeck.c (build_reinterpret_cast): Return if the inner type
664         is error_mark_node.
665
666 2004-10-01  Jan Hubicka  <jh@suse.cz>
667
668         * semantics.c (expand_body): Update call of tree_rest_of_compilation.
669
670 2004-09-30  Nathan Sidwell  <nathan@codesourcery.com>
671
672         * cp-tree.h (struct lang_decl): Shrink by reordering fields and
673         turning operator_code and fixed_offset into bitfields.
674
675 2004-09-29  Joseph S. Myers  <jsm@polyomino.org.uk>
676
677         * decl.c (duplicate_decls): Merge TREE_DEPRECATED.
678
679 2004-09-29  Jason Merrill  <jason@redhat.com>
680
681         PR tree-optimization/17697
682         * decl.c (duplicate_decls): Copy TREE_NOTHROW from newdecl to olddecl.
683
684 2004-09-28  Jason Merrill  <jason@redhat.com>
685
686         PR middle-end/17525
687         * class.c (build_base_field): Set TYPE_MODE.
688
689 2004-09-28  Roger Sayle  <roger@eyesopen.com>
690
691         PR driver/17537
692         * g++spec.c (lang_specific_driver): Unrecognized libraries, other
693         than -lc and -lm, may require linking against libstc++.
694
695 2004-09-28  Kazu Hirata  <kazu@cs.umass.edu>
696
697         * tree.c: Fix a comment typo.
698
699 2004-09-28  Nathan Sidwell  <nathan@codesourcery.com>
700
701         * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): Remove.
702         (struct secondary_vptr_vtt_init_data_s): New.
703         (build_vtt_inits): Adjust dfs_walkers.
704         (dfs_build_secondary_vptr_vtt_inits): Caller data is a
705         secondary_vptr_vtt_init_data_s structure. Adjust.
706         (dfs_ctor_vtable_bases_queue_p): Remove.
707         (dfs_fixup_binfo_vtbls): No need to clear BINFO_MARKED. Simplify.
708
709         * pt.c (struct get_template_base_data_s): Remove.
710         (get_template_base_r): Fold into get_template_base.
711         (get_template_base): Walk base binfos directly in inheritance
712         graph order.
713
714 2004-09-27  Mark Mitchell  <mark@codesourcery.com>
715
716         PR c++/17642
717         * cp-tree.h (fold_if_not_in_template): New function.
718         * call.c (build_conditional_expr): Use fold_if_not_in_template.
719         (build_cxx_call): Likewise.
720         * cvt.c (convert_to_complex): Likewise.
721         (ocp_convert): Likewise.
722         (convert): Likewise.
723         (convert_force): Likewise.
724         * decl.c (compute_array_index_type): Clear
725         processing_template_decl while folding array bounds.
726         * pt.c (convert_nontype_argument): Clear
727         processing_template_decl while processing non-type argument
728         initialization.
729         * tree.c (fold_if_not_in_template): New function.
730         * typeck.c (build_class_member_access_expr): Use
731         fold_if_not_in_template.
732         (build_array_ref): Likewise.
733         (build_binary_op): Likewise.  Do not try to optimize computations
734         when processing templates.
735         (cp_pointer_int_sum): Use fold_if_not_in_template.
736         (pointer_diff): Likewise.
737         (build_unary_op): Likewise.
738         (build_reinterpret_cast): Likewise.
739         (get_delta_difference): Likewise.
740         (expand_ptrmemfunc_cst): Likewise.
741         (dubious_conversion_warnings): Likewise.
742
743 2004-09-27  Matt Austern  <austern@apple.com>
744
745         * cp/parser.c (struct cp_token): New one-bit field , implicit_extern_c
746         (cp_lexer_get_preprocessor_token): Set implicit_extern_c for
747         tokens that come from headers that are implicitly extern "C".
748         (struct cp_parser): new one-bit field, implicit_extern_c.
749         (cp_parser_new): Set parser's implicit_extern_c to false.
750         (cp_parser_translation_unit): Pop lang context if we were in a
751         header that was implicitly extern "C".
752         (cp_parser_declaration_seq_opt): Push/pop lang context as
753         required by the token's and parser's implicit_extern_c.
754         
755 2004-09-27  Mark Mitchell  <mark@codesourcery.com>
756
757         PR c++/17585
758         * cp-tree.h (shared_member_p): Declare.
759         * search.c (shared_member_p): Give it external linkage.
760         * semantics.c (finish_qualified_id_expr): Use it.
761         (finish_id_expression): Likewise.
762
763         PR c++/17585
764         * semantics.c (finish_id_expression): Do not add "this->" to
765         static member functions.
766
767 2004-09-27  Nathan Sidwell  <nathan@codesourcery.com>
768
769         PR c++/17681
770         * error.c (dump_type): Change TREE_VEC case into TREE_BINFO.
771
772         * class.c (struct count_depth_data): Remove.
773         (dfs_depth_post, dfs_depth_q): Remove.
774         (find_final_overrider): Use number of vbase classes as depth
775         bound.
776         
777         * cp-tree.h (types_overlap_p): Remove.
778         * search.c (struct overlap_info): Remove.
779         (dfs_check_overlap, dfs_no_overlap_yet, types_overlap_p): Remove.
780         
781         * pt.c (GTB_VIA_VIRTUAL, GTB_IGNORE_TYPE): Remove.
782         (get_template_base_recursive): Remove. Replace with ...
783         (get_template_base_r): ... this.
784         (struct get_template_base_data_s): New.
785         (get_template_base): Use get_template_base_r via dfs_walk.  Always
786         return NULL on failure.
787         (unify): Remove error_mark_node check from get_template_base result.
788
789 2004-09-24  Paolo Bonzini  <bonzini@gnu.org>
790
791         * parser.c (cp_parser_expression_stack): Clarify why it is
792         an array of NUM_PREC_VALUES elements.
793         (cp_parser_binary_expression): Clarify why we do not need to
794         handle stack overflow.
795
796 2004-09-24  Nathan Sidwell  <nathan@codesourcery.com>
797
798         PR c++/16889
799         * search.c (lookup_field_queue_p): Correct check for hidden base.
800
801         * search.c (bfs_walk): Remove.
802         (lookup_member): Use dfs_walk_real.
803         (dfs_walk_real): Move and adjust documentation from bfs_walk.
804
805 2004-09-23  Zack Weinberg  <zack@codesourcery.com>
806
807         * decl.c (grokfndecl): If ::main is found not to return int,
808         correct it after issuing a diagnostic.
809         (grokdeclarator): If the incoming type was error_mark_node, do
810         not complain about declaring something with no type.
811         (start_function): Change check for ::main not returning int to
812         an assertion, as grokfndecl now catches this when the user did it.
813         * init.c (perform_member_init, sort_mem_initializers)
814         (emit_mem_initializers): Make most diagnostics be issued on
815         the line of current_function_decl, not whatever the current
816         input line is.
817         * parser.c (cp_lexer_peek_token_emit_debug_info): Surround
818         definition and declaration with #ifdef ENABLE_CHECKING.
819         Avoid unnecessary use of fprintf.
820         (cp_lexer_print_token, cp_lexer_debug_stream): Adjust stub
821         definitions to avoid warnings.
822         (cp_lexer_new_main): Add assertion that first token is not a
823         padding token.
824         (cp_lexer_new_from_token_array): Fold into ...
825         (cp_lexer_new_from_tokens): ... here.  Add assertion that
826         first token is not a padding token.
827         (cp_lexer_set_source_position_from_token): Move nearer to callers.
828         Remove unused lexer argument.
829         (cp_lexer_peek_token): Just print debugging report (if enabled)
830         and return lexer->next_token.
831         (cp_lexer_skip_purged_tokens): Delete.
832         (cp_lexer_next_token_is, cp_lexer_next_token_is_not): Make
833         inline, simplify bodies.
834         (cp_lexer_peek_nth_token): Add debugging report a la
835         cp_lexer_peek_token.
836         (cp_lexer_consume_token): Correct commentary.  Advance over
837         purged tokens here.  Set current source position here, from
838         token to be returned.  Avoid unnecessary use of fprintf.
839         (cp_lexer_purge_token): Advance next_token pointer over this and
840         subsequent purged tokens.
841         (cp_parser_error): Adjust source position to that of the
842         peeked token.
843         (cp_parser_push_lexer_for_tokens, cp_parser_pop_lexer): New functions.
844         (cp_parser_string_literal): Remove some excessive cleverness.
845         (cp_parser_enum_specifier): Call start_enum before consuming
846         the opening brace.
847         (cp_parser_member_declaration): Make the "extra semicolon"
848         diagnostic consistently-worded with the other place this is
849         diagnosed.  Explicitly set the diagnostic location to the
850         location of the offending semicolon.
851         (cp_parser_enclosed_template_argument_list): Use %</%> quoting
852         in diagnostics.  Do not use cp_parser_require.  Set location
853         of diagnostics about improper use of '>>' to location of
854         offending token.
855         (cp_parser_late_parsing_for_member):
856         Use cp_parser_push_lexer_for_tokens and cp_parser_pop_lexer.
857         (cp_parser_late_parsing_default_args): Likewise.  Manually
858         move some logic outside the loop.
859
860 2004-09-23  Andrew Pinski  <pinskia@physics.uc.edu>
861
862         PR c++/17618
863         * cvt.c (cp_convert_to_pointer): Return early when the type is
864         an error_mark_node.
865
866 2004-09-21 Fariborz Jahanian <fjahanian@apple.com>
867
868         PR c++/13989
869         PR c++/9844
870         * decl.c (grokfndecl): Add new argument "attrlist", use it
871         to call cplus_decl_attributes.
872         (start_function): Remove call to cplus_decl_attributes.
873         * cvt.c (ocp_convert): Add support to use type conversion
874         function to vector type.
875         * parser.c (cp_parser_conversion_type_id): Add attributes, if any,
876         to the parsed type.
877
878 2004-09-23  Paolo Bonzini  <bonzini@gnu.org>
879
880         PR c++/17596
881
882         * parser.c (cp_parser_token_tree_map_node,
883         cp_parser_pm_expression, cp_parser_additive_expression,
884         cp_parser_multiplicative_expression, cp_parser_shift_expression,
885         cp_parser_relational_expression, cp_parser_equality_expression,
886         cp_parser_and_expression, cp_parser_exclusive_or_expression,
887         cp_parser_inclusive_or_expression,
888         cp_parser_logical_and_expression,
889         cp_parser_logical_or_expression): Removed.
890         (enum cp_parser_prec, struct cp_parser_token_tree_map_node,
891         binops, binops_by_token): New.
892         (cp_parser_assignment_expression): Use cp_parser_binary_expression.
893         (cp_parser_new): Initialize binops_by_token.
894         (cp_parser_binary_expression): Rewritten.
895         (N_CP_TTYPES): New.
896
897 2004-09-23  Kazu Hirata  <kazu@cs.umass.edu>
898
899         * parser.c: Fix a comment typo.
900
901 2004-09-23  Nathan Sidwell  <nathan@codesourcery.com>
902
903         PR c++/17620
904         * decl.c (xref_basetypes): Look through typedefs before checking
905         for duplicate base.
906
907 2004-09-22  Nathan Sidwell  <nathan@codesourcery.com>
908
909         * cp-tree.h (unemitted_tinfo_decls): Make a VEC(tree).
910         * decl2.c (cp_finish_file): Adjust tinfo decl emission loop.
911         * rtti.c (unemitted_tinfo_decls): Make a VEC(tree).
912         (init_rtti_processing): Initialize it to something realistic.
913         (get_tinfo_decl): Adjust pushing the new decl.
914
915         * cp-tree.h (struct lang_type_class): Remove marked flags, add
916         diamond_shaped and repeated_base flags.  Reorder to keep 8-bit blocks.
917         (TYPE_MARKED_P): New.
918         (CLASSTYPE_DIAMOND_SHAPED_P, CLASSTYPE_REPEATED_BASE_P): New.
919         (CLASSTYPE_MARKED_N, SET_CLASSTYPE_MARKED_N,
920         CLEAR_CLASSTYPE_MARKED_N): Remove.
921         (CLASSTYPE_MARKED_*, SET_CLASSTYPE_MARKED_*,
922         CLEAR_CLASSTYPE_MARKED_*): Remove.
923         * decl.c (xref_basetypes): Use TYPE_MARKED_P. Determine diamond
924         shaped and repeated base properties.
925         * lex.c (cxx_make_type): Don't clear TYPE_ALIAS_SET.
926         * rtti.c (dfs_class_hint_mark, dfs_class_hint_unmark,
927         class_hint_flags): Remove.
928         (get_pseudo_ti_init): Use CLASSTYPE_REPEATED_BASE_P and
929         CLASSTYPE_DIAMOND_SHAPED_P.
930
931 2004-09-21  Ziemowit Laski  <zlaski@apple.com>
932
933         * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Moved here from
934         cp-objcp-common.h.
935         (objcp_tsubst_copy_and_build): Reformat function signature.
936         * cp-objcp-common.h (objcp_tsubst_copy_and_build): Likewise.
937         (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Moved to cp-lang.c.
938
939 2004-09-21  Zack Weinberg  <zack@codesourcery.com>
940
941         * parser.c (cp_lexer_peek_token, cp_lexer_consume_token):
942         Don't handle CPP_PRAGMA tokens specially.
943         (cp_lexer_handle_pragma): Use cp_lexer_consume_token.  Don't
944         purge the token; do clear token->value after processing.  Add
945         assertion at beginning that token->value is nonzero.
946         (cp_parser_statement, cp_parser_declaration_seq_opt): Handle
947         CPP_PRAGMA as a full statement or declaration in its own right.
948
949 2004-09-21  Matt Austern  <austern@apple.com>
950
951         PR c++/15049
952         * decl.c (grokvardecl): Accept declarations of global variables
953         using anonymous types.
954
955 2004-09-21  Roger Sayle  <roger@eyesopen.com>
956
957         PR c++/7503
958         * tree.c (lvalue_p_1):  Disallow MIN_EXPR and MAX_EXPR as lvalues
959         if either operand has side-effects.
960         * typeck.c (rationalize_conditional_expr): Assert that neither
961         operand of MIN_EXPR or MAX_EXPR has side-effects.
962         (build_modify_expr):  Add support for MIN_EXPR and MAX_EXPR.
963         Check that the "lhs" is a valid lvalue, i.e. that neither operand
964         of a MIN_EXPR or MAX_EXPR has a side-effect.
965
966 2004-09-21  Nathan Sidwell  <nathan@codesourcery.com>
967
968         * cp-tree.h (struct lang_type_header): Remove
969         uses_multiple_inheritance field.
970         (TYPE_USES_MULTIPLE_INHERITANCE): Remove.
971         (TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P): Remove.
972         (TYPE_USES_VIRTUAL_BASECLASSES): Remove.
973         (DECL_NEEDS_VTT_PARM_P): Use CLASSTYPE_VBASECLASSES.
974         (TYPE_CONTAINS_VPTR_P): Likewise.
975         * call.c (add_template_candidate_real): Use
976         CLASSTYPE_VBASECLASSES.
977         (build_special_member_call): Likewise.
978         * class.c (finish_struct_bits): Remove
979         TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P & TYPE_USES_VIRTUAL_BASECLASSES
980         bookkeeping.
981         (check_bases_and_members): Use TYPE_CONTAINS_VPTR_P.
982         (create_vtable_ptr): Remove TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P
983         bookkeeping.
984         (build_vtt_inits): Use CLASSTYPE_VBASECLASSES.
985         (accumulate_vtbl_inits, build_vbase_offset_vtbl_entries):
986         Likewise.
987         * decl.c (xref_basetypes): Remove TYPE_USES_MULTIPLE_INHERITANCE,
988         TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_USES_VIRTUAL_BASECLASSES
989         bookkeeping.
990         (cxx_maybe_build_cleanup): Use CLASSTYPE_VBASECLASSES.
991         * decl2.c (maybe_retrofit_in_chrg): Likewise.
992         * init.c (expand_member, push_base_cleanups): Likewise.
993         * pt.c (instantiate_class_template): Remove
994         TYPE_USES_MULTIPLE_INHERITANCE,
995         TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_USES_VIRTUAL_BASECLASSES
996         bookkeeping.
997         * ptree.c (cxx_print_type): Remove TYPE_USES_MULTIPLE_INHERITANCE
998         check.
999         * typeck2.c (process_init_constructor): Replace some sorrys with
1000         asserts.
1001
1002 2004-09-21  Andreas Tobler  <a.tobler@schweiz.ch>
1003
1004         * decl.c (reshape_init_array): Initialize max_index_cst to fix
1005         bootstrap failure.
1006
1007 2004-09-20  Mark Mitchell  <mark@codesourcery.com>
1008
1009         PR c++/17530
1010         * pt.c (tsubst): Fix parentheses to accomodate emacs.
1011         (tsubst_baselink): If we get a single function, mark it as used.
1012
1013 2004-09-20  Matt Austern <austern@apple.com>
1014             Zack Weinberg  <zack@codesourcery.com>
1015
1016         * decl.c (make_rtl_for_nonlocal_decl, start_preparsed_function):
1017         Apply lbasename to input_filename before passing to get_fileinfo.
1018         * semantics.c (begin_class_definition): Likewise.
1019         * lex.c (handle_pragma_interface): Apply get_fileinfo to the
1020         correct filename.  Rename variables to be less confusing.
1021         (handle_pragma_implementation): Likewise.  Disable "appears
1022         after file is included" diagnostic.
1023
1024         * parser.c (struct cp_token): Add in_system_header fiag.
1025         (CP_TOKEN_BLOCK_NUM_TOKENS, struct cp_token_block)
1026         (CP_TOKEN_BUFFER_SIZE, cp_token_cache_push_token)
1027         (CPP_NONE, cp_lexer_read_token): Delete.
1028         (struct cp_lexer): Remove first_token, string_tokens,
1029         main_lexer_p fields.  Clarify comments.
1030         (struct cp_token_cache): Now just a pair of pointers.
1031         (CP_LEXER_BUFFER_SIZE): New #define.
1032         (CPP_PURGED): New fake token type.
1033         (cp_lexer_new_from_token_array, cp_lexer_destroy)
1034         (cp_lexer_peek_token_emit_debug_info, cp_lexer_skip_purged_tokens)
1035         (cp_lexer_handle_pragma, cp_token_cache_new, cp_parser_string_literal):
1036         New functions.
1037         (cp_lexer_new_from_tokens): Now a simple wrapper around
1038         cp_lexer_new_from_token_array.
1039         (cp_lexer_set_source_position_from_token): Also update
1040         in_system_header.
1041         (cp_lexer_next_token, cp_lexer_prev_token, cp_lexer_advance_token):
1042         Don't wrap round.
1043         (cp_lexer_token_difference): Dont handle wrapping round.
1044         (cp_lexer_new_main): Enable pragma deferral and raw strings,
1045         read the entire translation unit through c_lex_with_flags into
1046         this lexer's buffer, then turn raw strings back off again.
1047         (cp_lexer_grow_buffer): Adjust for buffer no longer being circular.
1048         (cp_lexer_get_preprocessor_token): No need to handle not being
1049         the main lexer.  Set token->in_system_header too.
1050         (cp_lexer_peek_token): Skip purged tokens.  Feed pragma tokens
1051         to cp_lexer_handle_pragma.  No need to call cp_lexer_read_token.
1052         (cp_lexer_peek_nth_token): Likewise.
1053         (cp_lexer_purge_token): Mark the token PURGED, don't shift all
1054         the other tokens down.
1055         (cp_lexer_purge_tokens_after): Likewise.
1056         (cp_lexer_save_tokens, cp_lexer_rollback_tokens): Don't worry
1057         about there being no tokens.
1058         (cp_lexer_print_token): Revise to give useful information on
1059         all tokens.
1060         (struct cp_parser): Add field translate_strings_p.
1061         (cp_parser_new): Initialize it.
1062         (cp_parser_translation_unit): Destroy the lexer when done.
1063         (cp_parser_parameter_declaration): Restructure saving of
1064         default arguments.
1065         (cp_parser_save_member_function_body): Likewise.
1066         (cp_parser_check_for_invalid_template_id)
1067         (cp_parser_nested_name_specifier_opt, cp_parser_template_id):
1068         Adjust calls to cp_lexer_advance_token.
1069         (cp_parser_skip_to_closing_parenthesis, cp_parser_declaration):
1070         No need to fiddle c_lex_string_translate.
1071         (cp_parser_primary_expression, cp_parser_linkage_specification)
1072         (cp_parser_asm_definition, cp_parser_asm_specification_opt)
1073         (cp_parser_asm_operand_list, cp_parser_asm_clobber_list)
1074         Use cp_parser_string_literal.
1075         (cp_parser_attribute_list): Save and restore
1076         parser->translate_strings_p, not c_lex_string_translate.
1077         (cp_parser_cache_group): Delete.
1078         (cp_parser_cache_group_1): Rename cp_parser_cache_group.  Do
1079         not take a cache argument.
1080
1081 2004-09-20  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1082
1083         PR c++/14179
1084         * decl.c (reshape_init): Extract array handling into...
1085         (reshape_init_array): New function. Use integers instead of trees
1086         for indices. Handle out-of-range designated initializers.
1087
1088 2004-09-20  Steven Bosscher  <stevenb@suse.de>
1089
1090         * lex.c (cxx_init): Don't set the ridpointer for RID_NULL
1091         to null_node.
1092
1093 2004-09-19  Mark Mitchell  <mark@codesourcery.com>
1094
1095         * decl2.c (determine_visibility): Allow class visibility
1096         directives to override targetm.cxx.export_class_data.
1097
1098 2004-09-18  Kazu Hirata  <kazu@cs.umass.edu>
1099
1100         * call.c, semantics.c: Follow spelling conventions.
1101         * class.c: Fix a comment typo.
1102
1103 2004-09-16  Geoffrey Keating  <geoffk@apple.com>
1104
1105         PR pch/13361
1106         * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
1107         (handle_pragma_implementation): Likewise.
1108
1109 2004-09-17  Jeffrey D. Oldham  <oldham@codesourcery.com>
1110             Zack Weinberg  <zack@codesourcery.com>
1111
1112         * cp-tree.def: Use tree_code_class enumeration constants
1113         instead of code letters.
1114         * call.c, class.c, cp-gimplify.c, cp-lang.c, cxx-pretty-print.c
1115         * mangle.c, pt.c, semantics.c, tree.c, typeck.c:
1116         Update for new tree-class enumeration constants.
1117
1118 2004-09-16  Mark Mitchell  <mark@codesourcery.com>
1119
1120         PR c++/16002
1121         * parser.c (cp_parser_simple_declaration): Commit to tentative
1122         parses after seeing a decl-specifier.
1123         (cp_parser_simple_declaration): Eliminate spurious message.
1124         (cp_parser_init_declarator): Adjust error message.
1125
1126         PR c++/16029
1127         * lex.c (unqualified_name_lookup_error): Mark the dummy
1128         declaration as used.
1129
1130         PR c++/17501
1131         * parser.c (cp_parser_nested_name_specifier): Do not resolve
1132         typename types if the user explicitly said "typename".
1133
1134 2004-09-16  Andrew MacLeod  <amacleod@redhat.com>
1135
1136         * error.c (dump_decl): Make sure there is lang_specific info before
1137         checking for DTOR and CTOR decls.
1138
1139 2004-09-16  Nathan Sidwell  <nathan@codesourcery.com>
1140
1141         * class.c (copy_virtuals): Remove.
1142         (build_primary_vtable): Use copy_list directly.
1143         (build_secondary_vtable): Likewise.
1144         (update_vtable_entry_for_fn): Clear BV_CALL_INDEX here.
1145         (create_vtable_ptr): Likewise.
1146
1147 2004-09-16  Kazu Hirata  <kazu@cs.umass.edu>
1148
1149         * search.c: Follow spelling conventions.
1150
1151 2004-09-16  Nathan Sidwell  <nathan@codesourcery.com>
1152
1153         * cp-tree.h (struct lang_type_class): Make pure_virtuals a
1154         VEC(tree).
1155         (CLASSTYPE_INLINE_FRIENDS, CLASSTYPE_PURE_VIRTUALS): Update
1156         comments.
1157         * call.c (build_new_method_call): Don't confirm a pure virtual is
1158         in CLASSTYPE_PURE_VIRTUALS.  Reorder checks. Make it a warning.
1159         * class.c (check_methods): CLASSTYPE_INLINE_FRIENDS is a VEC(tree).
1160         (fixup_inline_methods, finish_struct): Likewise.
1161         * decl.c (finish_method): Likewise.
1162         * search.c (dfs_get_pure_virtuals, get_pure_virtuals):
1163         CLASSTYPE_PURE_VIRTUALS is a VEC(tree).
1164         * typeck2.c (abstract_virtuals_error): Likewise. Truncate the
1165         vector to avoid repeating the list in error messages.
1166
1167 2004-09-15  Mark Mitchell  <mark@codesourcery.com>
1168
1169         * cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Define.
1170         * cp-tree.h (cxx_comdat_group): Declare.
1171         * decl.c (cxx_comdat_group): New function.
1172
1173 2004-09-15  Nathan Sidwell  <nathan@codesourcery.com>
1174
1175         * search.c (get_pure_virtuals): Remove unused variables.
1176
1177         * cp-tree.h (struct lang_decl_flags): Remove
1178         needs_final_overrider.
1179         (DECL_NEEDS_FINAL_OVERRIDER_P): Remove.
1180         * decl.c (duplicate_decls): Do not copy DECL_NEEDS_FINAL_OVERRIDER_P.
1181         * class.c (finish_struct_bits): Correct comment about
1182         CLASSTYPE_PURE_VIRTUALS.
1183         * search.c (get_pure_virtuals): Remove useless loop.
1184
1185 2004-09-14  Mark Mitchell  <mark@codesourcery.com>
1186
1187         PR c++/17324
1188         * mangle.c (partially_mangled_name): New variable.
1189         (partially_mangled_name_len): Likewise.
1190         (save_partially_mangled_name): New function.
1191         (restore_partially_mangled_name): Likewise.
1192         (write_encoding): Save and restore partially mangled names around
1193         calls to get_mostly_instantiated_function_type.
1194         (write_unqualified_name): Likewise.
1195
1196 2004-09-14  Nathan Sidwell  <nathan@codesourcery.com>
1197
1198         * pt.c (unify): Replace gcc_unreachable with gcc_assert.
1199
1200 2004-09-13  Mark Mitchell  <mark@codesourcery.com>
1201
1202         PR c++/16162
1203         * parser.c (cp_parser_id_expression): Correct value for
1204         is_declarator.
1205         (cp_parser_nested_name_specifier_opt): Look through typenames as
1206         necessary.
1207         (cp_parser_template_name): Honor check_dependency_p.
1208
1209         PR c++/16716
1210         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
1211         Robustify.
1212
1213         PR c++/17327
1214         * pt.c (unify): Add ENUMERAL_TYPE case.  Replace sorry with
1215         gcc_unreacable.
1216
1217 2004-09-12  Richard Henderson  <rth@redhat.com>
1218
1219         PR c++/16254
1220         * semantics.c (maybe_cleanup_point_expr): Don't call fold.
1221         * typeck.c (condition_conversion): Likewise.
1222
1223 2004-09-11  Richard Henderson  <rth@redhat.com>
1224
1225         PR c++/17404
1226         * pt.c (cur_stmt_expr): Move from tsubst_expr.
1227         (tsubst_expr) <case STMT_EXPR>: Move ...
1228         (tsubst_copy_and_build): ... here.
1229
1230 2004-09-10  Zack Weinberg  <zack@codesourcery.com>
1231
1232         * cp-tree.h (interface_only, interface_unknown): Delete declarations;
1233         comment explaining them moved to c-common.h.
1234         * lex.c (interface_only, interface_unknown, extract_interface_info):
1235         Delete definitions.
1236         (cxx_finish): Don't reset interface_unknown.
1237         (handle_pragma_interface): Don't set interface_only and
1238         interface_unknown; just the like-named fields in finfo.
1239         (handle_pragma_implementation): Adjust comment.
1240         * decl2.c (cp_finish_file): Don't reset interface_only and
1241         interface_unknown.
1242         * method.c (synthesize_method): Don't reset interface_unknown or
1243         call extract_interface_info.
1244         * pt.c (pop_tinst_level): Don't call extract_interface_info.
1245         * decl.c (start_cleanup_fn): Don't save or restore interface_only
1246         and interface_unknown.
1247         (make_rtl_for_nonlocal_decl): Call get_fileinfo on input_filename
1248         and use the result instead of the interface_only/interface_unknown
1249         globals.
1250         (start_preparsed_function): Likewise.
1251         * lex.c (cxx_make_type): Likewise.
1252         * semantics.c (begin_class_definition): Likewise.
1253         (expand_body): Don't call extract_interface_info.
1254
1255 2004-09-10  Ziemowit Laski  <zlaski@apple.com>
1256
1257         * decl.c (objc_mark_locals_volatile): Make description of
1258         routine more descriptive; only mark VAR_DECLs at each
1259         binding level.
1260
1261 2004-09-10  Richard Henderson  <rth@redhat.com>
1262
1263         PR c++/17386
1264         * call.c (build_vfield_ref): Move...
1265         * class.c (build_vfield_ref): ... here.  Convert datum to the
1266         primary base containing the vptr.
1267         (make_new_vtable): Simplify build_primary_vtable arguments.
1268         (finish_struct_1): Do not duplicate TYPE_VFIELD.
1269         * typeck.c (build_class_member_access_expr): Don't warn for
1270         null object access to base fields.
1271
1272 2004-09-10  Ziemowit Laski  <zlaski@apple.com>
1273
1274         * decl.c (objc_get_current_scope, objc_mark_locals_volatile):
1275         New functions, to be called from ObjC++.
1276
1277 2004-09-10  Kazu Hirata  <kazu@cs.umass.edu>
1278
1279         * class.c, cp-tree.h, decl.c, decl2.c, mangle.c,
1280         name-lookup.h, parser.c, search.c, semantics.c, typeck2.c: Fix
1281         comment typos.
1282
1283 2004-09-09  Ziemowit Laski  <zlaski@apple.com>
1284
1285         * typeck.c (build_c_cast): Preserve the cast if casting
1286         to and from an Objective-C type.
1287
1288 2004-09-09  Ziemowit Laski  <zlaski@apple.com>
1289
1290         * Make-lang.in (cp/typeck.o): Depend on c-common.h.
1291         * typeck.c: Include c-common.h.
1292         (comptypes): For RECORD_TYPEs, call objc_comptypes() and
1293         return the result if nonnegative.
1294
1295 2004-09-09  Zack Weinberg  <zack@codesourcery.com>
1296
1297         * decl2.c (import_export_class)
1298         * lex.c (handle_pragma_interface):
1299         Test MULTIPLE_SYMBOL_SPACES with if, not #ifdef.
1300
1301 2004-09-08  Ziemowit Laski  <zlaski@apple.com>
1302
1303         * Make-lang.in (cp/semantics.o): Depend on c-common.h.
1304         * semantics.c: Include c-common.h.
1305         (finish_compound_stmt): Call objc_clear_super_receiver().
1306
1307 2004-09-08  Ziemowit Laski  <zlaski@apple.com>
1308
1309         * cp-tree.h (do_poplevel): New prototype.
1310         * semantics.c (do_poplevel): Make externally visible.
1311
1312 2004-09-08  Nathan Sidwell  <nathan@codesourcery.com>
1313
1314         * cp-tree.h (tree_pair_s): Define a GC'd vector.
1315         * name-lookup.h (cxx_saved_binding, cp_class_binding): Likewise.
1316         * semantics.c (deferred_access): Likewise.
1317
1318 2004-09-06  Daniel Jacobowitz  <dan@debian.org>
1319
1320         * semantics.c (expand_body): Assert that we are not nested.
1321
1322 2004-09-06  Zack Weinberg  <zack@codesourcery.com>
1323
1324         * decl.c (build_enumerator): Use add_double and int_fits_type_p
1325         instead of cp_build_binary_op, to avoid creating short-lived trees.
1326         * parser.c (cp_parse_type_specifier <RID_ENUM>): Use two-token
1327         lookahead instead of backtracking.  Move some code to avoid a
1328         conditional branch.
1329         (cp_parser_enum_specifier): Avoid duplication of effort with caller.
1330         Use cp_lexer_next_token_is/cp_lexer_next_token_is_not as appropriate.
1331         (cp_parser_enumerator_list, cp_parser_enumerator_definition):
1332         Use cp_lexer_next_token_is/cp_lexer_next_token_is_not as appropriate.
1333
1334 2004-09-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1335
1336         * decl.c (grok_declarator): Remove a redundant semicolon.
1337
1338         * parser.c (cp_parser_decl_specifier_seq, cp_parser_type_specifier):
1339         Correct comments describing function parameters.
1340
1341 2004-09-03  Matt Austern  <austern@apple.com>
1342         Compile speed improvement.
1343         * parser.c (cp_lexer_print_token): Only define if ENABLE_CHECKING set.
1344         Otherwise define a stub macro that expands to nothing.
1345         (cp_lexer_debugging_p): Only define if ENABLE_CHECKING set.  Otherwise
1346         define a stub macro that expands to 0.
1347         (cp_lexer_start_debugging): Only define if ENABLE_CHECKING set.
1348         (cp_lexer_stop_debugging): Likewise.
1349         (cp_lexer_debug_stream): Only define if ENABLE_CHECKING set.  Otherwise
1350         define a stub macro that expands to NULL.
1351         (cp_lexer_new_main): Only set debugging_p if ENABLE_CHECKING set.
1352         (cp_lexer_new_from_tokens): Likewise.
1353
1354 2004-09-03  Jan Hubicka  <jh@suse.cz>
1355
1356         * decl.c (finish_function): Clean out pointers we no longer need.
1357
1358 2004-09-03  Jan Beulich  <jbeulich@novell.com>
1359
1360         * g++spec.c (MATH_LIBRARY_PROFILE): Default to MATH_LIBRARY rather
1361         than "-lm".
1362
1363 2004-09-02  Paul Brook  <paul@codesourcery.com>
1364
1365         * decl2.c (determine_visibility): Only check data visibility
1366         for VAR_DECLS.
1367
1368 2004-08-31  Mark Mitchell  <mark@codesourcery.com>
1369
1370         * cp-tree.h (DECL_CONSTRUCTION_VTABLE_P): New macro.
1371         * class.c (build_ctor_vtbl_group): Set DECL_CONSTRUCTION_VTABLE_P.
1372         * decl2.c (determine_visibility): Honor
1373         TARGET_CXX_EXPORT_CLASS_DATA.
1374
1375         * class.c (key_method): Rename to ...
1376         (determine_key_method): ... this.
1377         (finish_struct_1): Adjust accordingly.
1378         * cp-tree.h (key_method): Declare.
1379         * decl2.c (maybe_emit_vtables): Determine the key method here if
1380         it has not already been done.
1381
1382 2004-08-31  Ziemowit Laski  <zlaski@apple.com>
1383
1384         * Make-lang.in (CXX_AND_OBJCXX_OBJS): Add cp/cp-objcp-common.o.
1385         (cp/cp-lang.o): Depend on debug.h, gtype-cp.h and cp/cp-objcp-common.h.
1386         (cp/cp-decl.c): Do not depend on gtype-cp.h.
1387         (cp/cp-objcp-common.o): New target.
1388         * cp-lang.c: Include debug.h, cp-objcp-common.h and gtype-cp.h.
1389         (cxx_get_alias_set, cxx_warn_unused_global_decl, cp_expr_size,
1390         cp_tree_size, cp_var_mod_type_p, cxx_initialize_diagnostics): Move
1391         prototypes and definitions to cp-objcp-common.h and cp-objcp-common.c,
1392         respectively.
1393         (LANG_HOOKS_TREE_SIZE, LANG_HOOKS_FINISH,
1394         LANG_HOOKS_CLEAR_BINDING_STACK, LANG_HOOKS_INIT_OPTIONS,
1395         LANG_HOOKS_INITIALIZE_DIAGNOSTICS, LANG_HOOKS_HANDLE_OPTION,
1396         LANG_HOOKS_HANDLE_FILENAME, LANG_HOOKS_MISSING_ARGUMENT,
1397         LANG_HOOKS_POST_OPTIONS, LANG_HOOKS_GET_ALIAS_SET,
1398         LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_EXPAND_EXPR,
1399         LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_PARSE_FILE,
1400         LANG_HOOKS_DUP_LANG_SPECIFIC_DECL, LANG_HOOKS_TRUTHVALUE_CONVERSION,
1401         LANG_HOOKS_SET_DECL_ASSEMBLER_NAME, LANG_HOOKS_MARK_ADDRESSABLE,
1402         LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
1403         LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
1404         LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_PRINT_ERROR_FUNCTION,
1405         LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, LANG_HOOKS_WRITE_GLOBALS,
1406         LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
1407         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
1408         LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE,
1409         LANG_HOOKS_ATTRIBUTE_TABLE, LANG_HOOKS_TREE_INLINING_WALK_SUBTREES,
1410         LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN,
1411         LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
1412         LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P,
1413         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
1414         LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P,
1415         LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN,
1416         LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN, LANG_HOOKS_EXPR_SIZE,
1417         LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR,
1418         LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION, LANG_HOOKS_MAKE_TYPE,
1419         LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE,
1420         LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
1421         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE, LANG_HOOKS_INCOMPLETE_TYPE_ERROR,
1422         LANG_HOOKS_TYPE_PROMOTES_TO, LANG_HOOKS_REGISTER_BUILTIN_TYPE,
1423         LANG_HOOKS_GIMPLIFY_EXPR, LANG_HOOKS_FOLD_OBJ_TYPE_REF): Move
1424         hooks to cp-objcp-common.h.
1425         (finish_file): New function.
1426         * cp-objcp-common.c: New file.
1427         * cp-objcp-common.h: New file.
1428         * cp-tree.h (cp_finish_file): New prototype.
1429         * decl.c: Do not include gtype-cp.h.
1430         * decl2.c (finish_file): Rename to cp_finish_file.
1431
1432 2004-08-31  Richard Henderson  <rth@redhat.com>
1433
1434         PR c++/17221
1435         * pt.c (tsubst_expr): Move OFFSETOF_EXPR handling ...
1436         (tsubst_copy_and_build): ... here.
1437
1438 2004-08-30  Mark Mitchell  <mark@codesourcery.com>
1439
1440         * cp-tree.h (initialize_artificial_var): Declare.
1441         * decl.c (initialize_artifical_var): New function.
1442         * class.c (initialize_array): Remove.
1443         (initialize_vtable): Use initialize_artificial_var.
1444         (build_vtt): Likewise.
1445         (build_ctor_vtbl_group): Likewise.
1446
1447 2004-08-30  Richard Henderson  <rth@redhat.com>
1448
1449         * class.c (build_base_path): Use build_address directly.
1450         * typeck.c (build_unary_op): Don't lower &a.b to pointer
1451         arithmetic directly.
1452         * typeck2.c (store_init_value): Don't assume !TREE_CONSTANT
1453         means !initializer_constant_valid_p.
1454
1455 2004-08-30  Richard Henderson  <rth@redhat.com>
1456
1457         * class.c (fixed_type_or_null): Use get_base_address before
1458         assuming an ADDR_EXPR is non-null.
1459
1460 2004-08-30  Nathan Sidwell  <nathan@codesourcery.com>
1461
1462         * name-lookup.c (pop_binding, pushdecl,
1463         set_identifier_type_value_with_scope, push_overloaded_decl,
1464         arg_assoc_type): Replace abort with gcc_assert or gcc_unreachable.
1465         * parser.c (cp_parser_diagnose_invalid_type_name,
1466         cp_parser_postfix_expression, cp_parser_unary_expression,
1467         cp_parser_check_declarator_template_para): Likewise.
1468         * pt.c (push_inline_template_parms_recursive,
1469         check_explicit_specialization, convert_nontype_argument,
1470         coerce_template_template_parms, uses_template_parms,
1471         instantiate_class_template, tsubst_decl, tsubst, tsubst_copy,
1472         tsubst_expr, instantiate_template,
1473         maybe_adjust_types_for_deduction, type_unification_real,
1474         resolve_overloaded_unification, template_decl_level,
1475         type_dependent_expression_p): Likewise.
1476         * search.c (lookup_base_r): Likewise.
1477         * semantics.c (finish_stmt_expr, simplify_aggr_init_expr): Likewise.
1478         * tree.c (lvalue_p_1, count_functions, cxx_printable_name,
1479         verify_stmt_tree_r, get_type_decl, stabilize_call): Likewise.
1480         * typeck.c (common_type, get_member_function_from_ptrfunc,
1481         build_binary_op, build_unary_op, expand_ptrmemfunc_cst): Likewise.
1482         * typeck2.c (cxx_incomplete_type_diagnostic,
1483         split_nonconstant_init_1, store_init_value,
1484         process_init_constructor): Likewise.
1485
1486 2004-08-30  Nathan Sidwell  <nathan@codesourcery.com>
1487
1488         * call.c (check_dtor_name): Replace abort with gcc_assert or
1489         gcc_unreachable.
1490         (build_call, add_builtin_candidate, build_new_op,
1491         convert_like_real, build_over_call, in_charge_arg_for_name,
1492         source_type, joust): Likewise.
1493         * class.c (build_simple_base_path, get_vcall_index,
1494         finish_struct_1, instantiate_type, get_enclosing_class,
1495         add_vcall_offset_vtbl_entries_1, cp_fold_obj_type_ref): Likewise.
1496         * cp-gimplify.c (cp_genericize): Likewise.
1497         * cp-lang.c (cp_expr_size, cp_tree_size): Likewise.
1498         * cvt.c (cp_convert_to_pointer, ocp_convert): Likewise.
1499         * decl.c (poplevel, make_unbound_class_template, reshape_init,
1500         check_special_function_return_type, grokdeclarator,
1501         grok_op_properties, tag_name, xref_tag, start_preparsed_function,
1502         finish_function): Likewise.
1503         * decl2.c (grokfield, maybe_emit_vtables):Likewise.
1504         * error.c (dump_global_iord, dump_decl, dump_template_decl,
1505         language_to_string): Likewise.
1506         * except.c (choose_personality_routine): Likewise.
1507         * friend.c (do_friend): Likewise.
1508         * g++spec.c (lang_specific_driver): Likewise.
1509         * init.c (build_zero_init, expand_default_init, build_new_1,
1510         build_vec_delete_1, build_vec_init, build_dtor_call): Likewise.
1511         * lex.c (retrofit_lang_decl, cp_type_qual_from_rid): Likewise.
1512         * mangle.c (add_substitution, write_unscoped_name,
1513         write_template_prefix, write_identifier,
1514         write_special_name_destructor, write_type, write_builtin_type,
1515         write_expression, write_template_param,
1516         write_java_integer_type_codes): Likewise.
1517         * method.c (implicitly_declare_fn): Likewise.
1518
1519 2004-08-30  Nathan Sidwell  <nathan@codesourcery.com>
1520
1521         * cp-tree.h (BINFO_PRIMARY_P): Use a binfo flag.
1522         (BINFO_INDIRECT_PRIMARY_P): Remove.
1523         * class.c (determine_primary_base): Rename to ...
1524         (determine_primary_bases): ... here.  Set all primary bases.
1525         (set_primary_base): Remove.
1526         (mark_primary_bases): Remove.
1527         (build_simple_base_path, walk_subobject_offsets,
1528         propagate_binfo_offsets, end_of_class): Adjust.
1529         (layout_class_type): Rename determine_primary_base call.
1530         (dump_class_hierarchy_r, dump_vtable): Adjust. Don't pass a binfo
1531         to type_as_string.
1532         (dfs_build_secondary_vptr_vtt_inits, dfs_accumulate_vtbl_inits,
1533         build_rtti_vtbl_entries): Adjust.
1534         * init.c (build_vtbl_address): Adjust.
1535
1536         * cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Use gcc_assert.
1537
1538 2004-08-28  Ziemowit Laski  <zlaski@apple.com>
1539
1540         * Make-lang.in (CXX_OBJS): Split up into CXX_OBJS and
1541         CXX_AND_OBJCXX_OBJS.
1542         (CXX_C_OBJS): Include in CXX_AND_OBJCXX_OBJS instead of listing
1543         separately on the link line.
1544
1545 2004-08-28  Jason Merrill  <jason@redhat.com>
1546
1547         * decl.c (expand_static_init): Avoid bogus warnings.
1548
1549 2004-08-27  Jason Merrill  <jason@redhat.com>
1550
1551         PR c++/16851
1552         * tree.c (stabilize_init): See through a COMPOUND_EXPR.
1553
1554         PR c++/13684
1555         * decl.c (expand_static_init): Use thread-safety API.
1556         (register_dtor_fn): Return the call, don't expand it.
1557         * tree.c (add_stmt_to_compound): New fn.
1558         (stabilize_call): Use it.
1559
1560 2004-08-27  Richard Henderson  <rth@redhat.com>
1561
1562         * cp-tree.def (OFFSETOF_EXPR): New.
1563         * parser.c (cp_parser_builtin_offsetof): Either built an
1564         OFFSETOF_EXPR, or call fold_offsetof immediately.
1565         * pt.c (tsubst_expr): Handle OFFSETOF_EXPR.
1566
1567 2004-08-27  Nathan Sidwell  <nathan@codesourcery.com>
1568
1569         * call.c (validate_conversion_obstack): Replace
1570         my_friendly_assert with gcc_assert or gcc_unreachable.
1571         (direct_reference_binding, merge_conversion_sequences,
1572         build_user_type_conversion_1, perform_overload_resolution,
1573         build_op_delete_call, enforce_access, call_builtin_trap,
1574         build_over_call, build_special_member_call, build_new_method_call,
1575         initialize_reference): Likewise.
1576         * class.c (build_base_path, build_primary_vtable, alter_access,
1577         check_bases, update_vtable_entry_for_fn, layout_empty_base,
1578         clone_function_decl, adjust_clone_args,
1579         type_requires_array_cookie, include_empty_classes,
1580         finish_struct_1, resolve_address_of_overloaded_function,
1581         instantiate_type, get_vtbl_decl_for_binfo, build_vtt_inits,
1582         dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group,
1583         accumulate_vtbl_inits, build_vtbl_initializer,
1584         build_vbase_offset_vtbl_entries, build_rtti_vtbl_entries): Likewise.
1585         * cvt.c (build_up_reference, convert_to_reference): Likewise.
1586         * decl.c (poplevel, duplicate_decls, make_typename_type,
1587         cxx_init_decl_processing, reshape_init, check_initializer,
1588         make_rtl_for_nonlocal_decl, initialize_local_var, cp_finish_decl,
1589         expand_static_init, grokfndecl, grokvardecl, build_ptrmem_type,
1590         grokdeclarator, copy_fn_p, grok_op_properties, xref_tag,
1591         xref_basetypes, start_preparsed_function, save_function_data,
1592         finish_function, finish_method, maybe_register_incomplete_var,
1593         complete_vars): Likewise.
1594         * decl2.c (grok_array_decl, check_member_template,
1595         check_classfn, finish_static_data_member_decl, coerce_new_type,
1596         coerce_delete_type, import_export_class, decl_needed_p,
1597         determine_visibility, import_export_decl, build_cleanup,
1598         start_static_initialization_or_destructi, do_static_destruction,
1599         prune_vars_needing_no_initialization,
1600         build_offset_ref_call_from_tree): Likewise.
1601         * error.c (dump_decl, dump_expr): Likewise.
1602         * init.c (finish_init_stmts, build_zero_init,
1603         expand_virtual_init, expand_default_init, expand_aggr_init_1,
1604         build_offset_ref, build_new_1, build_delete, build_vbase_delete):
1605         Likewise.
1606         * mangle.c (write_method_parms, write_template_args,
1607         write_expression, write_template_arg): Likewise.
1608         * method.c (make_thunk, finish_thunk, use_thunk): Likewise.
1609         * name-lookup.c (pop_binding, begin_scope, leave_scope,
1610         resume_scope, push_using_decl, validate_nonmember_using_decl,
1611         is_ancestor, poplevel_class, set_inherited_value_binding_p,
1612         push_class_level_binding, do_class_using_decl, push_namespace,
1613         pop_namespace, add_using_namespace, ambiguous_decl,
1614         lookup_namespace_name, lookup_type_current_level,
1615         maybe_process_template_type_declaration): Likewise.
1616         * parser.c (cp_lexer_peek_nth_token,
1617         cp_parser_parse_and_diagnose_invalid_typ,
1618         cp_parser_translation_unit, cp_parser_template_id,
1619         cp_parser_lookup_name, cp_parser_late_parsing_for_member): Likewise.
1620         * pt.c (push_access_scope, finish_member_template_decl,
1621         push_inline_template_parms_recursive, add_outermost_template_args,
1622         get_innermost_template_args, begin_explicit_instantiation,
1623         end_explicit_instantiation, retrieve_specialization,
1624         is_specialization_of, is_specialization_of_friend,
1625         register_specialization, check_explicit_specialization,
1626         comp_template_parms, process_template_parm,
1627         process_partial_specialization, convert_nontype_argument,
1628         coerce_template_template_parms, coerce_template_parms,
1629         mangle_class_name_for_template, lookup_template_function,
1630         lookup_template_class, instantiate_class_template, tsubst_decl,
1631         tsubst_function_type, tsubst, tsubst_qualified_id, tsubst_copy,
1632         instantiate_template, fn_type_unification, type_unification_real,
1633         get_template_base, regenerate_decl_from_template,
1634         template_for_substitution, instantiate_decl,
1635         get_mostly_instantiated_function_type, dependent_scope_ref_p,
1636         value_dependent_expression_p, resolve_typename_type): Likewise.
1637         * repo.c (repo_emit_p): Likewise.
1638         * rtti.c (build_headof, get_tinfo_decl, get_pseudo_ti_init,
1639         create_tinfo_types, emit_tinfo_decl): Likewise.
1640         * search.c (lookup_base_r, lookup_base, lookup_field_1,
1641         dfs_access_in_type, build_baselink, lookup_member,
1642         adjust_result_of_qualified_name_lookup, copied_binfo): Likewise.
1643         * semantics.c (perform_or_defer_access_check,
1644         finish_non_static_data_member, finish_stmt_expr_expr,
1645         finish_stmt_expr, finish_call_expr, finish_pseudo_destructor_expr,
1646         finish_template_template_parm, finish_member_declaration,
1647         emit_associated_thunks): Likewise.
1648         * tree.c (build_target_expr_with_type, force_target_expr,
1649         copy_binfo, get_first_fn, cp_tree_equal): Likewise.
1650         * typeck.c (type_after_usual_arithmetic_conversions, comptypes,
1651         cxx_sizeof_or_alignof_type, perform_integral_promotions,
1652         build_class_member_access_expr, finish_class_member_access_expr,
1653         build_ptrmemfunc_access_expr, build_unary_op,
1654         unary_complex_lvalue, cxx_mark_addressable, build_modify_expr,
1655         build_ptrmemfunc, expand_ptrmemfunc_cst, check_return_expr
1656         * typeck2.c (complete_type_check_abstract,
1657         abstract_virtuals_error, process_init_constructor,
1658         add_exception_specifier): Likewise.
1659
1660 2004-08-27  Nathan Sidwell  <nathan@codesourcery.com>
1661
1662         * class.c (build_vtbl_initializer): Use ssize_int.
1663         * decl.c (complete_array_type): Likewise.
1664         * method.c (finish_thunk): Likewise.
1665         * search.c (get_dynamic_base_type): Likewise.
1666
1667 2004-08-26  Richard Henderson  <rth@redhat.com>
1668
1669         * cp-tree.h (DECL_FIELD_IS_BASE): New.
1670         * class.c (build_base_field): Set it.
1671         (build_simple_base_path): Use it.
1672         (fixed_type_or_null): Don't consider base fields definitive.
1673
1674 2004-08-25  Roger Sayle  <roger@eyesopen.com>
1675
1676         PR middle-end/16693
1677         PR tree-optimization/16372
1678         * decl.c (finish_enum): Make the precision of the enumerated type
1679         the same width as the underlying integer type.
1680
1681 2004-08-25  Mark Mitchell  <mark@codesourcery.com>
1682
1683         PR c++/17155
1684         * lex.c (build_lang_decl): Set DECL_NO_STATIC_CHAIN for all C++
1685         functions.
1686
1687         * mangle.c (get_identifier_nocopy): Add cast.
1688
1689         * cp-tree.h (mangle_type): Remove.
1690         * mangle.c (globals): GTY it.
1691         (mangle_obstack): New variable.
1692         (name_obstack): Likewise.
1693         (name_base): Likewise.
1694         (write_char): Adjust accordingly.
1695         (write_chars): Likewise.
1696         (write_string): Likewise.
1697         (start_mangling): Initialize G.substitutions only one.  Add
1698         ident_p parameter.
1699         (finish_mangling): Use VARRAY_CLEAR to reclaim
1700         storage in G.substitutions.  Use obstack_finish.
1701         (init_mangle): Adjust for changes to variable names above.
1702         Initialize G.substitutions.
1703         (mangle_decl_string): Adjust call to start_mangling.
1704         (get_identifier_nocopy): New function.
1705         (mangle_decl): Use it.
1706         (mangle_type_string): Adjust call to start_mangling.
1707         (mangle_special_for_type): Likewise.
1708         (mangle_vtt_for_type): Likewise.
1709         (mangle_ctor_vtbl_for_type): Likewise.
1710         (mangle_thunk): Likewise.
1711         (mangle_guard_variable): Likewise.
1712         (mangle_ref_init_variable): Likewise.
1713
1714 2004-08-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1715
1716         PR c++/14428
1717         * pt.c (redeclare_class_template): Check the type of non-type and
1718         template template parameter.
1719
1720 2004-08-25  Nathan Sidwell  <nathan@codesourcery.com>
1721
1722         * call.c (convert_class_to_reference): Adjust build_int_cst calls.
1723         (build_user_type_conversion_1, convert_like_real,
1724         build_java_interface_fn_ref, build_special_member_call): Likewise.
1725         * class.c (finish_struct_1, build_vtbl_initializer): Likewise.
1726         * cp-gimplify.c (cp_gimplify_expr): Likewise.
1727         * cvt.c (cp_convert_to_pointer): Likewise.
1728         * decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
1729         * decl2.c (start_static_initialization_or_destruction,
1730         generate_ctor_or_dtor_function): Likewise.
1731         * except.c (build_throw): Likewise.
1732         * mangle.c (write_integer_cst): Likewise.
1733         * method.c (finish_thunk): Likewise.
1734         * rtti.c (build_headof, get_tinfo_decl_dynamic,
1735         build_dynamic_cast_1, ptr_initializer, ptm_initializer,
1736         get_pseudo_ti_init): Likewise.
1737         * search.c (get_dynamic_cast_base_type): Likewise.
1738
1739 2004-08-25  Zack Weinberg  <zack@codesourcery.com>
1740
1741         * class.c, search.c: Remove references to DWARF_DEBUG.
1742
1743 2004-08-25  Adam Nemet  <anemet@lnxw.com>
1744
1745         * repo.c (extract_string): Reset backquote after one character.
1746         (get_base_filename): Fix indentation.
1747
1748 2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>
1749
1750         * decl.c (cxx_init_decl_processing): Adjust
1751         build_common_tree_nodes call.
1752
1753 2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>
1754
1755         PR c++/16889
1756         * (is_subobject_of_p): Resurrect & optimize.
1757         (lookup_field_r): Use it.
1758
1759 2004-08-24  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1760
1761         PR c++/16706
1762         * search.c (friend_accessible_p): Increment processing_template_decl
1763         when deal with TEMPLATE_DECL of SCOPE.
1764
1765 2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>
1766
1767         PR c++/17149
1768         * semantics.c (check_accessibility_of_qualified_id): Defer check
1769         if qualifying_type is a template parameter.
1770
1771 2004-08-23  Mark Mitchell  <mark@codesourcery.com>
1772
1773         PR c++/17163
1774         * pt.c (instantiate_decl): Do not try to apply
1775         DECL_DECLARED_INLINED_P to a VAR_DECL.
1776
1777         * search.c (build_baselink): Fix typo in comment.
1778
1779 2004-08-22 Andrew Pinski  <apinski@apple.com>
1780
1781         Revert:
1782         2004-08-22  Andrew Pinski  <apinski@apple.com>
1783         PR c++/14029
1784         * typeck.c (build_unary_op): Use &a.b if the folded lowered
1785         expression is not constant.
1786
1787 2004-08-23  Nathan Sidwell  <nathan@codesourcery.com>
1788
1789         * name-lookup.c (pushdecl): Rename build_type_copy call.
1790         * tree.c (cp_build_qualified_type_real,
1791         build_exception_variant, handle_java_interface_attribute): Likewise.
1792
1793 2004-08-22  Andrew Pinski  <apinski@apple.com>
1794
1795         PR c++/14029
1796         * typeck.c (build_unary_op): Use &a.b if the folded lowered
1797         expression is not constant.
1798
1799 2004-08-20  Mark Mitchell  <mark@codesourcery.com>
1800
1801         PR c++/17121
1802         * decl.c (expand_static_init): Use DECL_FUNCTION_SCOPE_P.
1803
1804 2004-08-21  Joseph S. Myers  <jsm@polyomino.org.uk>
1805
1806         PR c++/17120
1807         * pt.c (tsubst_copy_and_build): Avoid clearing TREE_NO_WARNING for
1808         MODOP_EXPR.
1809
1810 2004-08-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1811
1812         * pt.c (register_specialization): Check DECL_TEMPLATE_SPECIALIZATION
1813         before calling comp_template_args.
1814
1815 2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>
1816
1817         * class.c (build_vtbl_initializer): Use build_int_cst for
1818         negative size types.
1819         * decl.c (complete_array_type): Likewise.
1820         * method.c (finish_thunk): Likewise.
1821
1822 2004-08-20  Andreas Tobler  <a.tobler@schweiz.ch>
1823
1824         * tree.c: Remove unused mark_local_for_remap_r.
1825
1826 2004-08-19  Eric Christopher  <echristo@redhat.com>
1827
1828         * cp-tree.h (cxx_unsave_expr_now): Delete prototype.
1829         * tree.c (cxx_unsave_expr_now): Delete.
1830         (cp_unsave_r): Ditto.
1831
1832 2004-08-19  Mark Mitchell  <mark@codesourcery.com>
1833
1834         PR c++/15890
1835         * pt.c (push_template_decl_real): Disallow template allocation
1836         functions with fewer than two parameters.
1837
1838 2004-08-19  Nathan Sidwell  <nathan@codesourcery.com>
1839
1840         * cp-tree.h (build_shared_int_cst): Remove.
1841         * tree.c (shared_int_cache): Remove.
1842         (build_shared_int_cst): Remove.
1843         * class.c (finish_struct_1): Use build_int_cst.
1844
1845 2004-08-19  Nathan Sidwell  <nathan@codesourcery.com>
1846
1847         * decl.c (finish_enum): Do not copy value node early, copy
1848         later.
1849         * lex.c (cxx_init): Force null_node to be unique.
1850
1851 2004-08-19  Joseph S. Myers  <jsm@polyomino.org.uk>
1852
1853         PR c++/17041
1854         * pt.c (tsubst_copy, tsubst_copy_and_build): Copy TREE_NO_WARNING
1855         from input for MODOP_EXPR.
1856
1857 2004-08-18  Mark Mitchell  <mark@codesourcery.com>
1858
1859         * pt.c (dependent_template_p): Fix typo in commment.
1860
1861         PR c++/17068
1862         * pt.c (dependent_template_p): Treat IDENTIFIER_NODEs as
1863         dependent.
1864
1865 2004-08-17  Mark Mitchell  <mark@codesourcery.com>
1866
1867         PR c++/16246
1868         * pt.c (unify): Tidy ARRAY_TYPE handling.  Make sure that non-type
1869         arguments have the same type as the corresponding parameter.
1870
1871         PR c++/16215
1872         * parser.c (cp_parser_name_lookup_error): If parser->object_scope
1873         is set use it for diagnostic purposes.
1874         (cp_parser_pseudo_destructor_name): Remove special-case error
1875         message.
1876
1877         PR c++/15871
1878         * semantics.c (expand_or_defer_fn): Honor -fkeep-inline-functions.
1879
1880         PR c++/16965
1881         * cp-tree.h (qualified_name_lookup_error): Add parameter.
1882         * name-lookup.c (do_class_using_decl): Restrict set of entities
1883         passed to cp_emit_debug_info_for_using more carefully.
1884         (lookup_qualified_name): Allow lookup_member to return sets of
1885         ambiguous entries.
1886         * parser.c (cp_parser_lookup_name): Add ambiguous_p parameter.
1887         (cp_parser_primary_expression): Handle ambiguous lookups.
1888         (cp_parser_template_name): Adjust use of cp_parser_lookup_name.
1889         (cp_parser_template_argument): Likewise.
1890         (cp_parser_elaborate_type_specifier): Likewise.
1891         (cp_parser_namespace_name): Likewise.
1892         (cp_parser_class_name): Likewise.
1893         (cp_parser_lookup_name_simple): Likewise.
1894         * pt.c (tsubst_qualified_id): Handle ambiguous results.
1895         (tsubst_expr): Likewise.
1896         * semantics.c (qualified_name_lookup_error): Add decl paramter.
1897         For ambiguous lookups, print candidates.
1898
1899 2004-08-16  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1900
1901         PR c++/6749
1902         * pt.c (instantiate_pending_templates): Add int parameter.  Don't
1903         return anything.
1904         * cp-tree.h (instantiate_pending_templates): Adjust prototype.
1905         * decl2.c (finish_file): Adjust call to
1906         instantiate_pending_templates.
1907
1908 2004-08-15  Roger Sayle  <roger@eyesopen.com>
1909
1910         * call.c (build_vfield_ref, build_call, build_conditional_expr,
1911         convert_arg_to_ellipsis, build_x_va_arg, build_over_call,
1912         build_java_interface_fn_ref, build_special_member_call,
1913         build_new_method_call, initialize_reference): Replace calls to
1914         build with calls to buildN.
1915         * class.c (build_base_path, convert_to_base_statically,
1916         build_vfn_ref, instantiate_type, dfs_accumulate_vtbl_inits,
1917         build_vtbl_initializer): Likewise.
1918         * cp-gimplify.c (genericize_try_block, genericize_catch_block,
1919         gimplify_if_stmt, cp_genericize_r): Likewise.
1920         * cvt.c (convert_to_void): Likewise.
1921         * decl.c (check_initializer, finish_constructor_body,
1922         finish_destructor_body): Likewise.
1923         * error.c (dump_expr): Likewise.
1924         * except.c (build_exc_ptr, expand_start_catch_block, build_throw):
1925         Likewise.
1926         * init.c (perform_member_init, expand_virtual_init,
1927         expand_cleanup_for_base, build_init, expand_default_init,
1928         build_offset_ref, decl_constant_value, build_new, build_new_1,
1929         build_vec_delete_1, build_vec_init, build_delete,
1930         push_base_cleanups, build_vec_delete): Likewise.
1931         * mangle.c (write_integer_cst): Likewise.
1932         * method.c (thunk_adjust, do_build_copy_constructor,
1933         do_build_assign_ref): Likewise.
1934         * pt.c (lookup_template_function, tsubst, tsubst_copy_and_build,
1935         unify, build_non_dependent_expr): Likewise.
1936         * rtti.c (build_headof, build_typeid, ifnonnull,
1937         build_dyanmic_cast_1, tinfo_base_init): Likewise.
1938         * semantics.c (begin_compound_stmt, finish_call_expr,
1939         finish_pseudo_destructor_expr, finish_id_expression,
1940         simplify_aggr_init_expr, finalize_nrv_r): Likewise.
1941         * tree.c (build_target_expr, build_cplus_new, array_type_nelts_top,
1942         array_type_nelts_total, stabilize_call): Likewise.
1943         * typeck.c (decay_conversion, build_class_member_access_expr,
1944         lookup_destructor, build_ptrmemfunc_access_expr, build_array_ref,
1945         get_member_function_from_ptrfunc, build_binary_op, pointer_diff,
1946         build_x_unary_op, build_unary_op, unary_complex_lvalue,
1947         build_compound_expr, build_modify_expr, expand_ptrmemfunc_cst,
1948         check_return_expr): Likewise.
1949         * typeck2.c (split_nonconstant_1, split_nonconstant_init_1,
1950         split_nonconstant_init, store_init_value, build_m_component_ref):
1951         Likewise.
1952
1953 2004-08-15  Nathan Sidwell  <nathan@codesourcery.com>
1954
1955         * call.c (convert_class_to_reference,
1956         build_user_type_conversion_1, convert_like_real,
1957         build_java_interface_fn_ref, build_special_member_call): Use
1958         build_int_cst.
1959         * class.c (build_vtbl_initializer): Likewise.
1960         * cp-gimplify.c (cp_gimplify_expr): Likewise.
1961         * cvt.c (cp_convert_to_pointer): Likewise.
1962         * decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
1963         * decl2.c (start_static_initialization_or_destruction,
1964         generate_ctor_or_dtor_function): Likewise.
1965         * except.c (build_throw): Likewise.
1966         * lex.c (cxx_init): Likewise.
1967         * mangle.c (write_integer_cst): Likewise.
1968         * rtti.c (build_headof, get_tinfo_decl_dynamic,
1969         build_dynamic_cast_1, ptr_initializer, ptm_initializer,
1970         get_pseudo_ti_init): Likewise.
1971         * search.c (get_dynamic_cast_base_type): Likewise.
1972         * tree.c (build_shared_int_cst): Likewise.
1973
1974 2004-08-12  Mark Mitchell  <mark@codesourcery.com>
1975
1976         PR c++/16273
1977         * class.c (count_depth_data): New type.
1978         (dfs_depth_post): New function.
1979         (dfs_depth_q): Likewise.
1980         (find_final_overrider_data_s): Change type of vpath.
1981         Add vpath_list.
1982         (dfs_find_final_overrider_1): New function.
1983         (dfs_find_final_overrider): Use it.
1984         (dfs_find_final_overrider_q): Adjust use of vpath.
1985         (dfs_find_final_overrider_post): Likewise.
1986         (find_final_overrider): Use dfs_depth.  Allocate and deallocate
1987         vpath_list.
1988
1989 2004-08-12 Jan Beulich <jbeulich@novell.com>
1990
1991         * parser.c (cp_parser_asm_definition): Properly consume scope operator
1992         tokens preceding the clobbers. Don't check for scope operator
1993         following inputs. Simplify inputs handling to match that now used for
1994         clobbers.
1995
1996 2004-08-11  Mark Mitchell  <mark@codesourcery.com>
1997
1998         PR c++/16698
1999         * except.c (build_throw): Allocate cleanup_type and the function
2000         for __cxa_throw separately.
2001
2002         PR c++/16853
2003         * call.c (standard_conversion): Do not accept conversions between
2004         pointers to members if the class types are unrelated.
2005
2006         PR c++/16618
2007         * parser.c (cp_parser_builtin_offsetof): Cast to "const volatile
2008         char &" instead of just "char &".
2009
2010         PR c++/16870
2011         * pt.c (tsubst): Just return the unknown_type_node.
2012
2013 2004-08-11  Mark Mitchell  <mark@codesourcery.com>
2014
2015         PR c++/16964
2016         * parser.c (cp_parser_class_specifier): Robustify.
2017
2018         PR c++/16904
2019         * pt.c (tsubst_copy_and_build): Complain about invalid
2020         qualification.
2021
2022         PR c++/16929
2023         * pt.c (tsubst_default_argument): Clear out current_class_ptr and
2024         current_class_ref while tsubsting.
2025
2026 2004-08-10  Mark Mitchell  <mark@codesourcery.com>
2027
2028         PR c++/16971
2029         * parser.c (cp_parser_init_declarator): Robustify.
2030
2031 2004-08-06  Richard Sandiford  <rsandifo@redhat.com>
2032
2033         * typeck2.c (process_init_constructor): Guard the missing field warning
2034         with warn_missing_field_initializers rather than extra_warnings.
2035
2036 2004-08-06  Paolo Bonzini  <bonzini@gnu.org>
2037
2038         * class.c (instantiate_type) <ENTRY_VALUE_EXPR>: Do not handle.
2039
2040 2004-08-05  Mark Mitchell  <mark@codesourcery.com>
2041
2042         * decl.c (start_preparsed_function): Move determine_visibility
2043         call.
2044         * decl2.c (determine_visibility): Incorporate dllexport testing.
2045
2046 2004-08-05  Geoffrey Keating  <geoffk@apple.com>
2047
2048         * g++spec.c (lang_specific_driver): An -Xlinker or -Wl, option
2049         means that libstdc++ is needed.
2050
2051 2004-08-05  Nathan Sidwell  <nathan@codesourcery.com>
2052
2053         * cvt.c (cp_convert_to_pointer): Adjust force_fit_type call.
2054
2055 2004-08-04  Geoffrey Keating  <geoffk@apple.com>
2056
2057         * decl.c (make_rtl_for_nonlocal_decl): Set DECL_ASSEMBLER_NAME rather
2058         than passing it as a parameter to rest_of_decl_compilation.
2059         * decl2.c (grokfield): Use set_user_assembler_name.
2060
2061 2004-08-04  Nathan Sidwell  <nathan@codesourcery.com>
2062
2063         * decl.c (complete_array_type): Don't gratuitously copy
2064         maxindex. Its type is always set.
2065
2066 2004-08-04  Paul Brook  <paul@codesourcery.com>
2067
2068         * Make-lang.in (cp/semantics.o, cp/optimize.o): Depend on TARGET_H.
2069         * cp-tree.h (struct language_function): Rename x_dtor_label to
2070         x_cdtor_label.
2071         (dtor_label): Rename ...
2072         (cdtor_label): ... to this.
2073         * decl.c (begin_constructor_body): Remove.
2074         (check_special_function_return_type): Maybe change the return type.
2075         (grokdeclarator): Pass the class type.
2076         (start_preparsed_function): Constructors may need a return label.
2077         (finish_constructor_body, finish_destructor_body): Set the return
2078         value.
2079         (begin_function_body): Don't call begin_constructor_body.
2080         (finish_function): Don't warn for constructors or destructors.
2081         (implicitly_declare_fn): Maybe change the return type.
2082         * optimize.c: Include target.h.
2083         (maybe_clone_body): Remap the function result.
2084         * semantics.c: Include target.h.
2085         (finish_return_stmt): Maybe jump to return label for constructors.
2086
2087 2004-08-03  Mark Mitchell  <mark@codesourcery.com>
2088
2089         * class.c (build_vtable): Do not set DECL_VISIBILITY here.
2090         (check_field_decls): Or here.
2091         (check_methods): Or here.
2092         (initialize_array): Don't mess with DECL_CONTEXT.
2093         * cp-tree.h (start_decl): Adjust prototype.
2094         (determine_visibility): New function.
2095         * decl.c (duplicate_decls): Remove checks for hidden "operator
2096         new".
2097         (build_library_fn_1): Give all library functions default
2098         visibility.
2099         (start_decl): Add pop_scope_p parameter.  Tidy.
2100         (cp_finish_decl): Do not pop scopes here.  Call
2101         determine_visibility for variable definitions.
2102         (start_preparsed_function): Call determine_visibility.
2103         * decl2.c (determine_visibility): New function.
2104         * method.c (use_thunk): Fix formatting.
2105         * parser.c (cp_parser_condition): Adjust calls to start_decl.
2106         (cp_parser_init_declarator): Likewise.
2107         * pt.c (instantiate_decl): Always call pop_nested_class.
2108         * rtti.c (get_tinfo_decl): Do not set DECL_VISIBILITY.
2109         (tinfo_base_init): Likewise.
2110
2111 2004-08-02  Mark Mitchell  <mark@codesourcery.com>
2112
2113         PR c++/16707
2114         * name-lookup.c (validate_nonmember_using_decl): Robustify.
2115
2116 2004-08-01  Mark Mitchell  <mark@codesourcery.com>
2117
2118         PR c++/16224
2119         * name-lookup.c (decl_namespace): Remove.
2120         (current_decl_namespace): Use decl_namespace_context instead of
2121         decl_namespace.
2122         (push_decl_namespace): Likewise.
2123         (arg_assoc_class): Likewise.
2124         (arg_assoc_type): Likewise.
2125         * pt.c (check_specialization_namespace): New function.
2126         (maybe_process_partial_specialization): Use it.
2127         (register_specialization): Likewise.
2128
2129         PR c++/16489
2130         * cp-tree.h (DECL_INTEGRAL_CONSTANT_VAR_P): New macro.
2131         * call.c (null_ptr_cst_p): Handle variables with constant
2132         initializers.
2133         * pt.c (convert_nontype_argument): Use
2134         DECL_INTEGRAL_CONSTANT_VAR_P.
2135         * semantics.c (finish_id_expression): Likewise.
2136
2137         PR c++/16529
2138         * decl.c (duplicate_decls): Reject duplicate namespace
2139         declarations.
2140
2141         PR c++/16810
2142         * typeck.c (build_ptrmemfunc): Loosen assertion.
2143
2144 2004-08-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2145
2146         * call.c (z_candidate::template_decl): Rename from template.
2147         (add_template_candidate_real): Adjust member reference.
2148         (joust): Likewise.
2149
2150 2004-07-29  Mark Mitchell  <mark@codesourcery.com>
2151
2152         * cp-tree.h (IDENTIFIER_REPO_CHOSEN): Define.
2153         (lang_decl_flags): Narrow the width of "languages".  Add
2154         repo_available_p.
2155         (DECL_NEEDED_P): Remove.
2156         (FOR_EACH_CLONE): New macro.
2157         (DECL_REPO_AVAILABLE_P): Likewise.
2158         (DECL_TINFO_P): Likewise.
2159         (set_linkage_according_to_type): Declare.
2160         (import_export_vtable): Remove.
2161         (import_export_tinfo): Likewise.
2162         (mark_needed): New function.
2163         (decl_needed_p): Likewise.
2164         (note_vauge_linkage_fn): Likewise.
2165         (init_repo): Change prototype.
2166         (repo_template_used): Remove.
2167         (repo_template_instantiated): Likewise.
2168         (repo_emit_p): New function.
2169         (repo_export_class_p): Likewise.
2170         (no_linkage_check): Change prototype.
2171         * class.c (set_linkage_according_to_type): New function.
2172         (build_vtable): Use it.  Do not call import_export_vtable.  Set
2173         DECL_IGNORED_P if appropriate.
2174         * decl.c (duplicate_decls): Preserve DECL_REPO_AVAILABLE_P.
2175         (make_rtL_for_nonlocal_decls): Check for template instantiations
2176         explicitly.
2177         (grokfndecl): Adjust call to no_linkage_check.
2178         (set_linkage_for_static_data_member): New function.
2179         (grokvardecl): Use it.  Adjust call to no_linkage_check.
2180         (grokdeclarator): Use set_linkage_for_static_data_member.
2181         * decl2.c (note_vague_linkage_fn): New function.
2182         (note_vague_linkage_var): Likewise.
2183         (finish_static_data_member_decl): Use it.
2184         (import_export_vtable): Remove.
2185         (import_export_class): Use repo_export_class_p.
2186         (var_finalized_p): Simplify.
2187         (maybe_emit_vtables): Simplify.
2188         (mark_needed): New function.
2189         (decl_needed_p): Likewise.
2190         (import_export_decl): Add documentation and consistency checks.
2191         Use repo_emit_p.  Handle virtual tables and RTTI information
2192         here.
2193         (import_export_tinfo): Remove.
2194         (write_out_vars): Call import_export_decl.
2195         (cxx_callgraph_analyze_expr): Ensure that all vtables are emitted
2196         whenever one is.
2197         (finish_file): Use decl_needed_p.  Do not call import_export_decl
2198         for undefined static data members.  Do not warn about undefined
2199         inlines when using a repository.
2200         (mark_used): Use note_vague_linkage_fn.  Always defer template
2201         instantiations.
2202         * lex.c (cxx_init): Adjust call to init_repo.  Always set
2203         flag_unit_at_a-time.
2204         * method.c (synthesize_method): Remove unncessary
2205         import_export_decl call.
2206         (implicitly_declare_fn): Use set_linkage_according_to_type.
2207         * optimize.c (maybe_clone_body): Use FOR_EACH_CLONE.
2208         * pt.c (instantiate_class_template): Don't redundantly add classes
2209         to keyed_classes.  Don't call repo_template_used.
2210         (tsubst_decl): Set DECL_INTERFACE_KNOWN for instantiations of
2211         templates with internal linkage.
2212         (check_instantiated_args): Adjust call to no_linkage_check.
2213         (instantiate_template): Use FOR_EACH_CLONE.
2214         (mark_definable): New function.
2215         (mark_decl_instantiated): Use it.
2216         (do_decl_instantiation): Adjust tests for explicit instantiation
2217         after "extern template".
2218         (instantiate_class_member): Do not use repo_template_instantiated.
2219         (do_type_instantiation): Simplify.
2220         (instantiate_decl): Use mark_definable.  Check repo_emit_p.
2221         Simplify.
2222         * repo.c (repo_get_id): Remove.
2223         (original_repo): Remove.
2224         (IDENTIFIER_REPO_USED): Remove.
2225         (IDENTIFIER_REPO_CHOSEN): Remove.
2226         Remove all #if 0'd code.
2227         (repo_template_used): Remove.
2228         (repo_template_instantiated): Remove.
2229         (temporary_obstack_initialized_p): New variable.
2230         (init_repo): Register with lang_post_pch_load.  Avoid creating
2231         identifiers unnecessarily.  Don't use original_repo.  Close the
2232         file here.
2233         (reopen_repo_file_for_write): Not here.
2234         (finish_repo): Always write out a new repository file.
2235         (repo_emit_p): New function.
2236         (repo_export_class_p): Likewise.
2237         * rtti.c (get_tinfo_decl): Use set_linkage_according_to_type.
2238         (involves_incomplete_p): New function.
2239         (tinfo_base_init): Use it.
2240         (ptr_initializer): Remove non_public_ptr parameter.
2241         (ptm_initializer): Likewise.
2242         (get_pseudo_ti_init): Likewise.
2243         (unemitted_tinfo_decl_p): Remove.
2244         (emit_tinfo_decl): Use import_export_decl.
2245         * semantics.c (expand_body): Move updates of static_ctors and
2246         static_dtors to ...
2247         (expand_or_defer_fn): ... here.
2248         * tree.c (no_linkage_check): Add relaxed_p parameter.
2249
2250 2004-07-28  Eric Christopher  <echristo@redhat.com>
2251
2252         * cp-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete.
2253
2254 2004-07-28  Nathan Sidwell  <nathan@codesourcery.com>
2255
2256         * cp-tree.h (struct tree_pair_s): New.
2257         (typedef tree_pair_p): New.
2258         (DEF_VEC_O(tree_pair_s)): New.
2259         (struct lang_type_class): Make vcall_indices a VEC(tree_pair_s).
2260         (CLASSTYPE_VCALL_INDICES): Update documentation.
2261         * class.c (get_vcall_index): Adjust.
2262         (add_vcall_offset): Adjust.
2263
2264 2004-07-27  Kelley Cook  <kcook@gcc.gnu.org>
2265
2266         * pt.c, typeck.c: Remove spurious carriage returns.
2267
2268 2004-07-27  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2269
2270         PR c++/14429
2271         * pt.c (coerce_template_template_parms) <PARM_DECL case>: Only check
2272         when the type of ARG is not dependent.
2273
2274 2004-07-26  Geoffrey Keating  <geoffk@apple.com>
2275
2276         * g++spec.c (LIBSTDCXX_PROFILE): Default to LIBSTDCXX.
2277         (lang_specific_driver): If the C++ or math library options don't
2278         start with '-l', don't count them as added libraries.
2279
2280 2004-07-26  Nathan Sidwell  <nathan@codesourcery.com>
2281
2282         * decl.c (xref_basetypes): Adjust base access vector creation.
2283         * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Adjust base
2284         access accesses.
2285         * search.c (dynamic_cast_base_recurse, dfs_access_in_type): Likewise.
2286
2287 2004-07-26  Niall Douglas  <s_fsfeurope2@nedprod.com>
2288             Brian Ryner  <bryner@brianryner.com>
2289
2290         PR c++/15000
2291         PR c++/9283
2292         * class.c (check_field_decls): Apply hidden visibility if
2293         -fvisibility-inlines-hidden and inlined unless otherwise specified
2294         (build_vtable): Set vtable visibility to class visibility.
2295         (check_field_decls): Default static member visibility to class
2296         visibility.
2297         (check_methods): Default method visibility to class visibility.
2298         * cp-tree.h: Added CLASSTYPE_VISIBILITY and
2299         CLASSTYPE_VISIBILITY_SPECIFIED macro.
2300         * decl.c (duplicate_decls): New logic for merging definition decls
2301         with declaration decls. Added ignore & warning when non default
2302         applied to global operator new or delete.
2303         * method.c, optimize.c, rtti.c: Added setting of VISIBILITY_SPECIFIED
2304         wherever VISIBILITY was changed
2305         * rtti.c (get_tinfo_decl): Set typeinfo visibility to class
2306         visibility.
2307         (tinfo_base_init): Set typeinfo name visibility to class visibility.
2308
2309 2004-07-25  Bernardo Innocenti  <bernie@develer.com>
2310
2311         * decl.c: Rename all identifiers named `class' to `cl'.
2312         * cp-tree.h: Likewise.
2313
2314 2004-07-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2315
2316         * cp-tree.h (TYPE_SET_PTRMEMFUNC_TYPE): Use GGC_CNEW.
2317         * typeck2.c (abstract_virtuals_error): Use GGC_NEW.
2318         * name-lookup.c (binding_entry_make): Use GGC_NEW.
2319         (binding_table_construct): Use GGC_CNEWVEC.
2320         (binding_table_new): Use GGC_NEW.
2321         (cxx_binding_make): Likewise.
2322         (begin_scope): Likewise.
2323         (push_to_top_level): Use GCC_CNEW.
2324         * parser.c (cp_token_cache_new): Likewise.
2325         (cp_token_cache_push_token): Likewise.
2326         (cp_lexer_new_main): Likewise.
2327         (cp_lexer_new_from_tokens): Likewise.
2328         (cp_parser_context_new): Likewise.
2329         (cp_parser_new): Likewise.
2330         (cp_lexer_new_from_tokens): Use GGC_NEWVEC.
2331         * lex.c (cxx_make_type): Use GGC_CNEW.
2332         (retrofit_lang_decl): Use GGC_NEWVAR.
2333         (cxx_dup_lang_specific_decl): Likewise.
2334         (copy_lang_type): Likewise.
2335         * decl.c (use_label): Use GGC_NEW instead of ggc_alloc.
2336         (save_function_data): Likewise.
2337         (lookup_label): Use GGC_CNEW instead of ggc_alloc_cleared.
2338         (cxx_push_function_context): Likewise.
2339
2340 2004-07-25  Richard Henderson  <rth@redhat.com>
2341
2342         * decl.c (start_preparsed_function): Set DECL_ARTIFICIAL and
2343         DECL_IGNORED_P on RESULT_DECL.
2344         * semantics.c (finalize_nrv): Copy them too.
2345
2346 2004-07-23  Nathan Sidwell  <nathan@codesourcery.com>
2347
2348         * search.c (lookup_conversion_operator): Avoid two loops.
2349         (add_conversions): Remove.
2350         (check_hidden_convs, split_conversions,
2351         lookup_conversions_r):  New.
2352         (lookup_conversions): Use lookup_conversions_r.
2353
2354 2004-07-22  Nathan Sidwell  <nathan@codesourcery.com>
2355
2356         * pt.c (get_template_base): Check type is completable.
2357
2358 2004-07-21  Eric Christopher  <echristo@redhat.com>
2359
2360         * decl.c (poplevel): Inline unused variable checking.
2361         Change formatting.
2362
2363 2004-07-21  Paolo Bonzini  <bonzini@gnu.org>
2364
2365         * typeck.c (build_binary_op): Do not use RDIV_EXPR for
2366         integer vectors.
2367
2368 2004-07-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
2369
2370         PR c++/14497
2371         * pt.c (check_explicit_specialization): Remove extension to accept
2372         specializations without template headers. Fall-through to normal
2373         processing.
2374
2375 2004-07-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
2376
2377         PR c++/509
2378         * pt.c (determine_specialization): New parameter template_count.
2379         Disambiguate between member templates and member functions counting
2380         the template headers.
2381         (check_explicit_specialization): Update caller.
2382         (tsubst_friend_function): Likewise.
2383
2384 2004-07-20  Steven Bosscher  <stevenb@suse.de>
2385
2386         * cp-tree.def (TINST_LEVEL): Make it an 'x' node.
2387         * cp-tree.h (tinst_level_t): New tree type.
2388         (union lang_tree_node): Handle it.
2389         (TINST_LOCATION): New accessor macro.
2390         (make_tinst_level): New prototype.
2391         * cp-lang.c (cp_tree_size): Handle TINST_LEVEL.
2392         * decl.c (cp_tree_node_structure): Likewise.
2393         * error.c (print_instantiation_full_context): Use TINST_LOCATION.
2394         (print_instantiation_partial_context): Likewise.
2395         * pt.c (pop_tinst_level): Likewise.
2396          (push_tinst_level): Use make_tinst_level.
2397         * tree.c (make_tinst_level): New function.
2398         (cp_walk_subtrees): Walk TINST_DECL for a TINST_LEVEL node.
2399
2400 2004-07-20  Mark Mitchell  <mark@codesourcery.com>
2401
2402         * parser.c (cp_parser_simple_type_specifier): Fix typo.
2403
2404         PR c++/16637
2405         * parser.c (cp_parser_simple_type_specifier): Do not record usage
2406         of globally-qualified names.
2407
2408 2004-07-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2409
2410         PR c++/16175
2411         * error.c (dump_type) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Output
2412         cv qualifier.
2413
2414 2004-07-19  Mark Mitchell  <mark@codesourcery.com>
2415
2416         PR c++/16623
2417         * cp-tree.h (lang_type_class): Add lazy_assignment_op.
2418         (CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro.
2419         * class.c (add_implicitly_declared_members): Use
2420         CLASSTYPE_LAZY_ASSIGNMENT_OP.
2421         * method.c (lazily_declare_fn): Clear
2422         CLASSTYPE_LAZY_ASSIGNMENT_OP.
2423         * search.c (lookup_fnfields_1): Check it.
2424
2425 2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>
2426
2427         * cp-tree.h (vec_binfo_member): Remove.
2428         * tree.c (vec_binfo_member): Remove.
2429
2430         * cp-tree.h (struct lang_type_class): Remove vfields field.
2431         (CLASSTYPE_VFIELDS): Remove.
2432         (SET_BINFO_NEW_VTABLE_MARKED): Adjust.
2433         * class.c (determine_primary_base): Remove CLASSTYPE_VFIELDS
2434         handling.
2435         (dfs_modify_vtables): Use TYPE_CONTAINS_VPTR_P.
2436         (finish_struct_1): Remove CLASSTYPE_VFIELDS handling.
2437         * init.c (dfs_initialize_vtbl_ptrs): Use TYPE_CONTAINS_VPTR_P.
2438
2439 2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>
2440
2441         * cp-tree.h (DEF_VEC_P(tree)): Remove here.
2442         (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF):
2443         Moved to common.
2444         (BINFO_LANG_SLOTS): Remove.
2445         * tree.c (copy_binfo): Adjust BINFO creation and accessors.
2446         * decl.c (xref_basetypes): Adjust BINFO creation and accessors.
2447         * class.c (check_bases): Adjust BINFO accessors.
2448         (determine_primary_base, finish_struct_bits,
2449         maybe_warn_about_overly_private_class, warn_hidden,
2450         walk_subobject_offsets, propagate_binfo_offsets, end_of_class,
2451         warn_about_ambiguous_bases, get_vfield_name,
2452         dump_class_hierarchy_r, build_vtt_inits, accumulate_vtbl_inits,
2453         add_vcall_offset_vtbl_entries_r): Likewise.
2454         * dump.c (cp_dump_tree): Likewise.
2455         * init.c (sort_mem_initializers, expand_member_init, build_delete,
2456         push_base_cleanups): Likewise.
2457         * method.c (do_build_copy_constructor, do_build_assign_ref,
2458         synthesize_exception_spec): Likewise.
2459         name-lookup.c (arg_assoc_class): Likewise.
2460         * pt.c (instantiate_class_template,
2461         get_template_base_recursive): Likewise.
2462         * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Likewise.
2463         * typeck2.c (process_init_constructor): Likewise.
2464         * search.c (lookup_base_r, dynamic_cast_base_recurse,
2465         dfs_access_in_type, dfs_walk_real, look_for_overrides,
2466         types_overlap_p, copied_binfo, original_binfo): Likewise.
2467         (binfo_for_vtable): Remove
2468
2469 2004-07-20  Steven Bosscher  <stevenb@suse.de>
2470
2471         * cp-tree.h (struct lang_decl_flags): Unify the template_info and
2472         thunk_alias, and the access and virtual_offset fields.
2473         (THUNK_VIRTUAL_OFFSET, THUNK_ALIAS): Adjust.
2474         * decl.c (finish_case_label): Update c_add_case_node call.
2475
2476 2004-07-19  Mark Mitchell  <mark@codesourcery.com>
2477
2478         Revert patch for PR c++/16623.
2479
2480 2004-07-19  Kelley Cook  <kcook@gcc.gnu.org>
2481
2482         * except.c: Remove two spurious carriage returns.
2483
2484 2004-07-19  Mark Mitchell  <mark@codesourcery.com>
2485
2486         PR c++/16623
2487         * cp-tree.h (lang_type_class): Add lazy_assignment_op.
2488         (CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro.
2489         * class.c (add_implicitly_declared_members): Use
2490         CLASSTYPE_LAZY_ASSIGNMENT_OP.
2491         * method.c (lazily_declare_fn): Clear
2492         CLASSTYPE_LAZY_ASSIGNMENT_OP.
2493         * search.c (lookup_fnfields_1): Check it.
2494
2495 2004-07-19  Nathan Sidwell  <nathan@codesourcery.com>
2496
2497         * class.c (add_method): Delay adding the slot until the end.
2498         (determine_primary_base): Adjust VEC_iterate invokation.
2499         (resort_type_method_vec, finish_struct_methods, warn_hidden,
2500         walk_subobject_offsets, end_of_class, warn_about_ambiguous_bases,
2501         build_vtbl_initializer): Likewise.
2502         * init.c (sort_mem_initializers, build_delete, push_base_cleanups,
2503         build_vbase_delete): Likewise.
2504         * method.c (do_build_copy_constructor): Likewise.
2505         * name-lookup.c (new_class_binding, print_binding_level,
2506         poplevel_class, store_class_bindings, push_to_top_level,
2507         pop_from_top_level): Likewise.
2508         * pt.c (check_explicit_specialization): Likewise.
2509         * search.c (lookup_conversion_operator, lookup_fnfields_1,
2510         get_pure_virtuals, add_conversions, dfs_check_overlap,
2511         binfo_for_vbase): Likewise.
2512
2513 2004-07-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2514
2515         PR c++/12170
2516         * pt.c (unify) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Use only
2517         innermost set of template arguments during deduction.  Simplify.
2518
2519 2004-07-19  Joseph S. Myers  <jsm@polyomino.org.uk>
2520
2521         * typeck.c (build_modify_expr, build_x_modify_expr): Set
2522         TREE_NO_WARNING on assignments with an operator other than '='.
2523
2524 2004-07-10  Steven Bosscher  <stevenb@suse.de>
2525             Joseph S. Myers  <jsm@polyomino.org.uk>
2526
2527         * cp-tree.h (C_SET_EXP_ORIGINAL_CODE): Remove.
2528         * decl2.c (grokfield): Don't check current_class_depth via
2529         unused TREE_COMPLEXITY.
2530         * semantics.c (finish_parenthesized_expr): Set TREE_NO_WARNING
2531         to avoid the missing parentheses warning.
2532         Don't set C_SET_EXP_ORIGINAL_CODE.
2533
2534 2004-07-18  Mark Mitchell  <mark@codesourcery.com>
2535
2536         * tree.c (no_linkage_helper): Remove.
2537         (no_linkage_check): Don't use walk_tree_without_duplicates.
2538
2539         * mangle.c (write_expression): Issue a sorry for zero-operand
2540         functional casts.
2541
2542 2004-07-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2543
2544         PR c++/13092
2545         * init.c (build_offset_ref): Build SCOPE_REF with non-null
2546         TREE_TYPE for non-dependent names.
2547         * typeck.c (build_x_unary_op): Handle non-dependent SCOPE_REF.
2548         * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
2549         unknown_type_node as its TREE_TYPE.
2550         * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
2551         * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
2552         (dump_expr) <SCOPE_REF case>: Likewise.
2553
2554 2004-07-17  Jason Merrill  <jason@redhat.com>
2555
2556         PR c++/16115
2557         * call.c (type_passed_as): Make the invisible reference type
2558         __restrict.
2559         * cp-gimplify.c (gimplify_cleanup_stmt): Rename to
2560         cp_genericize_r.  Handle invisible reference lowering.
2561         (is_invisiref_parm): New fn.
2562         (cp_genericize): Adjust the types of invisible reference parms.
2563         Don't repeat the walk for clones.
2564         * decl.c (store_parm_decls): Don't generate any code for clones.
2565
2566 2004-07-17  Joseph S. Myers  <jsm@polyomino.org.uk>
2567
2568         * cp-tree.h (builtin_function): Declare.
2569
2570 2004-07-16  Mark Mitchell  <mark@codesourcery.com>
2571
2572         * class.c (finish_struct_methods): Remove unncessary code.
2573         (add_implicitly_declared_members): Create declarations for default
2574         constructors and copy constructors lazily.
2575         * cp-tree.h (lang_type_class): Remove lazy_default_ctor and
2576         lazy_copy_ctor.
2577         (CLASSTYPE_LAZY_DEFAULT_CTOR): New macro.
2578         (CLASSTYPE_LAZY_COPY_CTOR): Likewise.
2579         * decl2.c (check_classfn): Robustify.
2580         (locate_dtor): Handle empty CLASSTYPE_METHOD_VEC.
2581         (locate_ctor): Handle lazy default constructors.
2582         (locate_copy): Handle lazy copy constructors.
2583         (implicitly_declare_fn): Make sure we're looking at the
2584         TYPE_MAIN_VARIANT for a class before creating functions.  Don't
2585         set TYPE_HAS_CONSTRUCTOR.
2586         (lazily_declare_fn): New function.
2587         * name-lookup.c (constructor_name_full): Simplify.
2588         * search.c (lookup_fnfields_1): Lazily create methods, as
2589         necessary.
2590         (lookup_for_overrides): Handle empty CLASSTYPE_METHOD_VEC.
2591
2592 2004-07-16  Steven Bosscher  <stevenb@suse.de>
2593
2594         * cp-tree.h (struct lang_type): Don't have three GTY options on a
2595         single bit GTY desc.
2596
2597 2004-07-16  Richard Henderson  <rth@redhat.com>
2598
2599         * cp-lang.c (LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING): Die.
2600         * cp-tree.h (cp_copy_res_decl_for_inlining): Remove.
2601         * tree.c (cp_copy_res_decl_for_inlining): Remove.
2602
2603 2004-07-16  Nathan Sidwell  <nathan@codesourcery.com>
2604
2605         * class.c (finish_struct_bits): Use for loop.
2606         (propagate_binfo_offsets): Do primary binfo outside of loop.
2607
2608         PR c++/16583
2609         * dump.c (cp_dump_tree): Don't dump the bases if there's no
2610         binfo.
2611
2612         * pt.c (tsubst) <TREE_BINFO case>: We should never get here.
2613
2614 2004-07-15  Mark Mitchell  <mark@codesourcery.com>
2615
2616         * cp-tree.h (lang_type_class): Remove has_real_assign_ref and
2617         has_abstract_assign_ref.  Make methods a VEC(tree) *.
2618         (TYPE_HAS_CONST_ASSIGN_REF): Add documentation.
2619         (CLASSTYPE_CONSTRUCTORS): Adjust for changes to CLASSTYPE_METHOD_VEC.
2620         (CLASSTYPE_DESTRUCTORS): Likewise.
2621         (TYPE_HAS_REAL_ASSIGN_REF): Remove.
2622         (TYPE_HAS_ABSTRACT_ASSIGN_REF): Likewise.
2623         (add_method): Change prototoype.
2624         * class.c (add_method): Remove error_p parameter.  Adjust for
2625         changes to CLASSTYPE_METHOD_VEC.
2626         (handle_using_decl): Adjust call to add_method.
2627         (maybe_warn_about_overly_private_class): Adjust for
2628         changes to CLASSTYPE_METHOD_VEC.
2629         (resort_type_method_vec): Likewise.
2630         (finish_struct_methods): Likewise.
2631         (check_for_override): Likewise.
2632         (warn_hidden): Likewise.
2633         (add_implicitly_declared_members): Defer creation of assignment
2634         operators.  Adjust call to add_method.
2635         (clone_function_decl): Adjust call to add_method.
2636         (check_bases_and_members): Don't set TYPE_HAS_REAL_ASSIGN_REF.
2637         (finish_struct_1): Use CLASSTYPE_DESTRUCTORS.
2638         * decl.c (grok_special_member_properties): Don't set
2639         TYPE_HAS_ABSTRACT_ASSIGN_REF.
2640         * decl2.c (check_classfn): Adjust for
2641         changes to CLASSTYPE_METHOD_VEC.
2642         * method.c (locate_dtor): Use CLASSTYPE_DESTRUCTORS.
2643         (locate_ctor): Use CLASSTYPE_CONSTRUCTORS.
2644         (locate_copy): Adjust for changes to CLASSTYPE_METHOD_VEC.
2645         (implicitly_declare_fn): Set DECL_SOURCE_LOCATION.  Do not call
2646         cp_finish_decl.
2647         * pt.c (check_explicit_specialization): Adjust for
2648         changes to CLASSTYPE_METHOD_VEC.
2649         (instantiate_class_template): Do not set
2650         TYPE_HAS_ABSTRACT_ASSIGN_REF.
2651         * ptree.c (cxx_print_type): Don't try to print
2652         CLASSTYPE_METHOD_VEC.
2653         * rtti.c (emit_support_tinfos): Use CLASSTYPE_DESTRUCTORS.
2654         * search.c (lookup_field_r): Adjust for
2655         changes to CLASSTYPE_METHOD_VEC.
2656         (lookup_fnfields): Likewise.
2657         (lookup_conversion_operator): Likewise.
2658         (lookup_fnfields_1): Likewise.  Create assignment operators
2659         lazily.
2660         (look_for_overrides_here): Adjust for
2661         changes to CLASSTYPE_METHOD_VEC.
2662         (add_conversions): Likewise.
2663         * semantics.c (finish_member_declaration): Adjust call to add_method.
2664
2665 2004-07-15  Jason Merrill  <jason@redhat.com>
2666
2667         * cp-lang.c (cxx_types_compatible_p): To the middle-end,
2668         references and pointers are compatible.
2669
2670 2004-07-15  Nathan Sidwell  <nathan@codesourcery.com>
2671
2672         * decl.c (xref_basetypes): Refactor.
2673         * tree.c (copy_base_binfos): Replace with ...
2674         (copy_binfo): ... this. Deep copy the given binfo, (not the just
2675         bases of the given base).
2676         * cp-tree.h (copy_base_binfo): Remove.
2677         (copy_binfo): Declare.
2678
2679 2004-07-15  Mark Mitchell  <mark@codesourcery.com>
2680
2681         * name-lookup.c (set_inherited_value_binding_p): Add class_type
2682         parameter.
2683         (get_class_binding): Adjust.
2684         (push_class_level_binding): Don't use set_inherited_value_binding_p.
2685
2686 2004-07-15  Nathan Sidwell  <nathan@codesourcery.com>
2687
2688         * class.c (finish_struct_bits): Don't set TYPE_HAS_CONVERSION here.
2689         * decl.c (xref_basetypes): Set it here.
2690
2691         * class.c (check_bases): Don't set CLASSTYPE_NON_AGGREGATE here.
2692         Don't check for incomplete base.
2693         (get_vfield_name): Simplify while loop.
2694         * decl.c (xref_basetypes): Set CLASSTYPE_NON_AGGREGATE here.
2695
2696 2004-07-14  Mark Mitchell  <mark@codesourcery.com>
2697
2698         * lex.c (cxx_make_type): Remove call to get_pointer_type.
2699
2700         * cp-tree.h (IDENTIFIER_VALUE): Remove.
2701         (BINFO_PUSHDECLS_MARKED): Likewise.
2702         (maybe_inject_for_scope_var): Likewise.
2703         (push_class_decls): Likewise.
2704         * name-lookup.h (push_class_binding): Remove.
2705         (innermost_non_namespace_value): New function.
2706         (outer_binding): Likewise.
2707         * class.c (add_method): Push bindings before adding to
2708         TYPE_METHODS.
2709         (restore_class_cache): Do not restore class_shadowed.
2710         (pushclass): Do not add USING_DECLs.  Do not call
2711         push_class_decls.
2712         * config-lang.in (gtfiles): Remove $(srcdir)/cp/search.c.
2713         * decl.c (pushdecl): Use outer_binding.
2714         (poplevel): Set the scope for an out-of-scope for-loop declaration
2715         appropriately.
2716         (cp_finish_decl): Don't call maybe_inject_for_scope_var.
2717         * name-lookup.c (new_class_binding): New function.
2718         (push_binding): Use it.
2719         (pushdecl): Use innermost_non_namespace_value.
2720         (maybe_inject_for_scope_var): Remove.
2721         (push_class_binding): Remove.
2722         (set_inherited_value_binding_p): New function.
2723         (get_class_binding): New function.
2724         (push_class_level_binding): Assert that the current_class_type is
2725         being defined.
2726         (outer_binding): New function.
2727         (innermost_non_namespace_value): Likewise.
2728         (lookup_name_real): Use outer_binding.
2729         (lookup_name_current_level): Ignore out-of-scope variables.
2730         * pt.c (check_template_shadow): Use innermost_non_namespace_value.
2731         (lookup_template_class): Likewise.
2732         * search.c (dfs_push_type_decls): Remove.
2733         (dfs_push_decls): Likewise.
2734         (setup_class_bindings): Likewise.
2735         (lookup_field_1): Handle USING_DECLs from dependent scopes.
2736         (marked_pushdecls_p): Remove.
2737         (unmarked_pushdecls_p): Remove.
2738         (marked_identifiers): Remove.
2739         (setup_class_bindings): Remove.
2740         (dfs_push_type_decls): Remove.
2741         (dfs_push_decls): Remove.
2742         (push_class_decls): Remove.
2743
2744 2004-07-13  Mark Mitchell  <mark@codesourcery.com>
2745
2746         PR c++/16518
2747         PR c++/16337
2748         * decl.c (grokvardecl): Make declspecs parameter const.
2749         (grokdeclarator): Likewise.  Adjust accordingly.
2750         * decl.h (grokdeclarator): Adjust declaration.
2751         * parser.c (cp_parser_init_declarator): Do not clear
2752         decl_specifiers->attributes.
2753
2754         * cp-tree.h (lang_identifier): Remove class_value.
2755         (IDENTIFIER_CLASS_VALUE): Remove.
2756         (pop_class_decls): Likewise.
2757         (init_search_processing): Likewise.
2758         * class.c (handle_using_decl): Use lookup_member, not
2759         IDENTIFIER_CLASS_VALUE.
2760         (restore_class_cache): New function, split out from ...
2761         (pushclass): ... here.  Do not call clear_identifier_class_values.
2762         (invalidate_class_lookup_cache): Do not clear
2763         IDENTIFIER_CLASS_VALUE.
2764         (popclass): Do not call pop_class_decls.
2765         (maybe_note_name_used_in_class): Do not save names looked up after
2766         the class is complete.  Use lookup_member, not
2767         IDENTIFIER_CLASS_VALUE.
2768         * config-lang.in (gtfiles): Add $(srcdir)/cp/search.c.
2769         * decl.c (cxx_init_decl_processing): Do not call
2770         init_search_processing.
2771         * method.c (do_build_copy_constructor): Remove unnecessary code.
2772         (do_build_assign_ref): Likewise.
2773         * name-lookup.c (pushdecl): Use lookup_member, not
2774         IDENTIFIER_CLASS_VALUE.
2775         (set_identifier_type_value_with_scope): Set TREE_TYPE on the
2776         type_shadowed list.
2777         (poplevel_class): Do not restore IDENTIFIER_CLASS_VALUE.
2778         (push_class_binding): Do not set it.
2779         (clear_identifier_class_values): Remove.
2780         (push_class_level_binding): Do not set IDENTIFIER_CLASS_VALUE.
2781         (store_binding): Do not save it.
2782         (pop_from_top_level): Do not restore it.
2783         * name-lookup.h (cxx_saved_binding): Remove class_value.
2784         (clear_identifier_class_values): Remove.
2785         * ptree.c (cxx_print_identifier): Do not print
2786         IDENTIFIER_CLASS_VALUE.
2787         * search.c (search_obstack): Remove.
2788         (push_stack_level): Remove.
2789         (pop_stack_level): Remove.
2790         (search_level): Remove.
2791         (search_stack): Remove.
2792         (lookup_member): Don't check IDENTIFIER_CLASS_VALUE.
2793         (setup_class_bindings): Use IDENTIFIER_MARKED, not
2794         IDENTIFIER_CLASS_VALUE.
2795         (marked_identifiers): New variable.
2796         (push_class_decls): Clear IDENTIFIER_MARKED.
2797         (pop_class_decls): Don't call pop_search_level.
2798         (init_search_processing): Remove.
2799
2800 2004-07-12  Mark Mitchell  <mark@codesourcery.com>
2801
2802         * cp-tree.h (get_aggr_typedef): Remove.
2803         * init.c (get_aggr_typedef): Likewise.
2804
2805         * name-lookup.c (push_class_level_binding): Simplify.
2806
2807 2004-07-12  Andrew Pinski  <apinski@apple.com>
2808
2809         PR c++/16475
2810         Revert:
2811         2004-07-07  H.J. Lu  <hongjiu.lu@intel.com>
2812                 PR c++/16276
2813                 * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
2814                 is not public.
2815
2816 2004-07-12  Eric Christopher  <echristo@redhat.com>
2817
2818         * parser.c (cp_parser_class_head): Remove unused variable.
2819
2820 2004-07-12  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
2821
2822         * decl.c (grok_op_properties): Reject [de-]allocation functions
2823         declared in a namespace, or declared as static.
2824
2825 2004-07-12  Nathan Sidwell  <nathan@codesourcery.com>
2826
2827         * cp-tree.h (make_binfo): Remove.
2828         * decl.c (xref_basetypes): Use make_tree_binfo directly.
2829         * tree.h (copy_base_binfos): Likewise.
2830         (make_binfo): Remove.
2831
2832         * call.c (build_user_type_conversion_1, build_new_op,
2833         check_constructor_callable, build_temp,
2834         perform_direct_initialization_of_possible): Pass type directly to
2835         lookup_fnfields & build_special_member_call.
2836         (build_special_member_call): Accept a type, and complete it.
2837         * class.c (finish_stuct_bits): Copy the BINFOs here.
2838         * cvt.c (ocp_convert): Pass type directly to
2839         build_special_member_call.
2840         * decl.c (build_ptrmemfunc_type): Call xref_bastypes here.
2841         (xref_basetypes): Allocate the binfo here. Adjust.
2842         * init.c (build_init, build_new_1): Pass type directly to
2843         build_special_member_call.
2844         * lex.c (cxx_make_type): Do not allocate binfo here.
2845         * name-lookup.c (arg_assoc_class): Incomplete types have no binfo.
2846         * parser.c (cp_parser_class_head): Always call xref_basetypes.
2847         * pt.c (instantiate_class_template): Likewise. Inhibit access
2848         checking for template friends.
2849         * ptree.c (cxx_print_type): Adjust record printing.
2850         * search.c (lookup_base): When taking a type, complete it before
2851         looking for a binfo.
2852         (lookup_member): Delay completing a type.
2853         (push_class_decls): Don't walk an incomplete type.
2854         (lookup_conversions): Likewise.
2855         * semantics.c (finish_stmt_expr_expr): Pass type directly to
2856         build_special_member_call.
2857         * tree.c (copy_base_binfos): Adjust.
2858         (make_binfo): Likewise.
2859         * typeck.c (build_modify_expr): Pass type directly to
2860         build_special_member_call.
2861         * typeck2.c (process_init_constructor): Check a binfo exists.
2862         (build_m_component_ref): Allow accessing an incomplete type.
2863         (build_functional_cast): Pass type directly to
2864         build_special_member_call.
2865
2866 2004-07-12  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
2867
2868         PR c++/2204
2869         * config-lang.in (gtfiles): Add typeck2.c.
2870         * Make-lang.in: Tweak typeck2.c dependencies, and add rule for
2871         gt-cp-typeck2.h.
2872         * cp-tree.h: Declare complete_type_check_abstract.
2873         * typeck2.c (pat_calc_hash, pat_compare,
2874         complete_type_check_abstract): New functions.
2875         (abstract_virtuals_error): If the type is abstract, register the
2876         declaration within abstract_pending_vars for further checks.
2877         Inspect also dependent types. Handle IDENTIFIER_NODEs as decl.
2878         * decl.c (cp_finish_decl): Do not strip array types.
2879         (create_array_type_for_decl): Check for abstractness of the element
2880         type.
2881         (complete_vars): Call complete_type_check_abstract.
2882         * class.c (finish_struct): Prepare a list of virtual functions for
2883         template types, and call complete_vars on it to check for abstractness.
2884
2885 2004-07-12  Paolo Bonzini  <bonzini@gnu.org>
2886
2887         PR tree-optimization/14107
2888         * decl.c (finish_function): Remove temporary band-aid.
2889
2890 2004-07-11  Mark Mitchell  <mark@codesourcery.com>
2891
2892         * call.c (build_operator_new_call): Avoid using push_to_top_level.
2893         (build_new_op): Adjust call to lookup_function_nonclass.
2894         * name-lookup.c (identifier_type_value): Adjust call to
2895         lookup_name_real.
2896         (lookup_name_real): Add block_p parameter.
2897         (lookup_name_nonclass): Adjust call to lookup_name_real.
2898         (lookup_function_nonclass): Likewise.
2899         (lookup_name): Likewise.
2900         * name-lookup.h (lookup_name_real): Change prototype.
2901         (lookup_name_nonclass): Likewise.
2902         * parser.c (cp_parser_lookup_name): Likewise.
2903
2904         * cp-tree.h (saved_scope): Make old_bindings a vector.
2905         (unuse_fields): Remove.
2906         * name-lookup.h (cxx_saved_binding): Define it.
2907         * class.c (pushclass): Don't use unuse_fields.
2908         * name-lookup.c (cxx_saved_binding_make): Remove.
2909         (store_binding): Add new bindings to a vector, using an
2910         accumulator style, rather than adding them to a list.
2911         (store_bindings): Adjust accordingly.
2912         (store_class_bindings): Likewise.
2913         (push_to_top_level): Likewise.
2914         (pop_from_top_level): Likewise.
2915         * optimize.c (maybe_clone_body): Must push_to_top_level and
2916         pop_from_top_level calls outside of loop.
2917         * parser.c (cp_parser_class_specifier): Move push_scope/pop_scope
2918         calls here from cp_parser_late_parsing_default_args.
2919         (cp_parser_save_default_args): Record the class type in which the
2920         function is declared.
2921         (cp_parser_late_parsing_default_args): Do not call
2922         push_nested_class/pop_nested_class.
2923         * search.c (dfs_unuse_fields): Remove.
2924         (unuse_fields): Remove.
2925
2926 2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>
2927
2928         * cp-lang.c (LANG_HOOKS_MAYBE_BUILD_CLEANUP, LANG_HOOKS_PUSHLEVEL,
2929         LANG_HOOKS_POPLEVEL, LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Remove.
2930         * cp-tree.h (poplevel): Declare.
2931         (set_block): Remove.
2932         * decl.c (set_block): Remove.
2933
2934 2004-07-10  Mike Stump  <mrs@apple.com>
2935
2936         * decl2.c (import_export_class): Never export/import vtables
2937         with inline key functions.
2938
2939 2004-07-09  Steven Bosscher  <stevenb@suse.de>
2940
2941         * typeck.c (c_expand_asm_operands): Remove.
2942
2943 2004-07-09  Mike Stump  <mrs@apple.com>
2944
2945         * typeck.c (build_class_member_access_expr): Skip null deref
2946         warning when we don't dereference it.
2947
2948 2004-07-09  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
2949
2950         PR c++/8211
2951         PR c++/16165
2952         * class.c (check_field_decls): Improve -Weffc++ warning: do not
2953         warn for pointers to functions/members, or for classes without
2954         destructors.
2955
2956 2004-07-08  Mark Mitchell  <mark@codesourcery.com>
2957
2958         * name-lookup.h (struct cp_binding_level): Update documentation
2959         for class_shadowed.
2960
2961 2004-07-08  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
2962
2963         PR c++/16169
2964         * typeck.c (check_return_expr): Improve -Weffc++ warning: handle
2965         returning CALL_EXPR, and non-reference return type.
2966
2967 2004-07-08  Nathan Sidwell  <nathan@codesourcery.com>
2968
2969         * name-lookup.c (push_binding): Use VEC_reserve.
2970
2971 2004-07-08  Richard Henderson  <rth@redhat.com>
2972
2973         * cp-tree.h (expand_eh_spec_block): Remove.
2974
2975 2004-07-07  Mark Mitchell  <mark@codesourcery.com>
2976
2977         * cp-tree.h (saved_scope): Remove x_previous_class_type and
2978         x_previous_class_values; add x_previous_class_level.
2979         (previous_class_type): Remove.
2980         (previous_class_values): Remove.
2981         (previous_class_level): New macro.
2982         * class.c (pushclass): Restore the identifier cache more
2983         expeditiously.
2984         (invalidate_class_lookup_cache): Use vector for class_shadowed and
2985         previous_class_values.
2986         * decl.c (poplevel): Likewise.
2987         * name-lookup.c (cxx_binding_init): New function.
2988         (cxx_binding_make): Use it.
2989         (push_binding): For a binding in a class level, use a vector of
2990         cp_class_binding nodes.
2991         (push_binding_level): New function.
2992         (begin_scope): Use it.
2993         (leave_scope): Do not put class binding levels on the free list.
2994         (print_binding_level): Adjust for the fact that class_shadowed is
2995         a vector.
2996         (poplevel_class): Likewise.
2997         (clear_identifier_class_values): Likewise.
2998         (push_class_level_binding): Likewise.
2999         (set_class_shadows): Remove.
3000         (store_binding): New function.
3001         (store_class_bindings): New function.
3002         (push_to_top_level): Use store_class_bindings as appropriate.
3003         (pop_from_top_level): Use previous_class_level, not
3004         previous_class_type.
3005         * name-lookup.h (cp_class_binding): New type.
3006         (cp_binding_level): Use a vector object for class_shadowed.
3007         (push_binding_level): Declare.
3008         (set_class_shadows): Remove.
3009
3010 2004-07-07  Andrew Pinski  <apinski@apple.com>
3011
3012         * class.c (instantiate_type): BUFFER_REF is dead.
3013         * lex.c (init_operators): IN_EXPR is dead.
3014
3015 2004-07-07  Jason Merrill  <jason@redhat.com>
3016
3017         PR c++/16334
3018         * call.c (build_new_op): Give overload warnings for built-in
3019         candidates.
3020
3021 2004-07-07  H.J. Lu  <hongjiu.lu@intel.com>
3022
3023         PR c++/16276
3024         * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
3025         is not public.
3026
3027 2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>
3028
3029         * cp-tree.h (CLASSTYPE_N_BASECLASSES): Remove.
3030         * class.c (build_primary_vtable, check_bases,
3031         determine_primary_base, finish_struct_bits,
3032         maybe_warn_about_overly_private_class, dfs_find_final_overrider_q,
3033         get_basefndecls, warn_hidden, walk_subobject_offsets,
3034         build_base_fields, create_vtable_ptr, propagate_binfo_offsets,
3035         layout_virtual_bases, end_of_class, warn_about_ambiguous_bases,
3036         finish_struct_1, get_vfield_name, contains_empty_class_p,
3037         dump_class_hierarchy_r, finish_vtbls, build_vtt_inits,
3038         dfs_ctor_vtable_bases_queue_p, accumulate_vtbl_inits,
3039         add_vcall_offset_vtbl_entries_r, cp_fold_obj_type_ref): Adjust
3040         BINFO macros.
3041         * decl.c (xref_basetypes): Likewise.
3042         * dump.c (cp_dump_tree): Likewise.
3043         * error.c (dump_expr): Likewise.
3044         * init.c (sort_mem_initializers, expand_member_init,
3045         push_base_cleanups): Likewise.
3046         * method.c (do_build_copy_constructor, do_build_assign_reg,
3047         synthesize_exception_spec): Likewise.
3048         * name-lookup.c (arg_assoc_class): Likewise.
3049         * pt.c (instantiate_class_template, tsubst,
3050         get_template_base_recursive): Likewise.
3051         * ptree.c (cxx_print_type): Likewise.
3052         * rtti.c (get_psuedo_ti_init, get_pseudo_ti_desc): Likewise.
3053         * search.c (lookup_base_r, dynamic_cast_base_recurse,
3054         dfs_access_in_type, access_in_type, lookup_field_queue_p,
3055         bfs_walk, dfs_walk_real, look_for_overrides, markedp, unmarkedp,
3056         marked_pushdecls_p, unmarked_pushdecls_p, dfs_debug_markedp,
3057         dfs_debug_unmarkedp, dfs_check_overlap, dfs_no_overlap_yet,
3058         binfo_for_vtable, copied_binfo, original_binfo): Likewise
3059         * tree.c (copy_base_binfos, make_binfo): Likewise.
3060         * typeck.c (commmon_base_type): Likewise
3061         * typeck2.c (process_init_constructor): Likewise
3062
3063 2004-07-06  Joseph S. Myers  <jsm@polyomino.org.uk>
3064
3065         * decl.c (check_tag_decl): Name redeclared type in diagnostic.
3066
3067 2004-07-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
3068
3069         PR c++/3671
3070         * pt.c (convert_nontype_argument): Disallow conversions between
3071         different enumeration types.
3072
3073 2004-07-06  Nathan Sidwell  <nathan@codesourcery.com>
3074
3075         * cp-tree.h (BINFO_MARKED): Remove.
3076         (BINFO_VTABLE_PATH_MARKED, BINFO_NEW_VTABLE_MARKED,
3077         BINFO_DEPENDENT_BASE_P, BINFO_LOST_PRIMARY_P,
3078         BINFO_INDIRECT_PRIMARY_P): Use appropriate BINFO_FLAG_n.
3079         (SET_BINFO_NEW_VTABLE_MARKED): Use BINFO_VIRTUAL_P.
3080         * class.c (build_base_path): Use BINFO_VIRTUAL_P.
3081         (mark_primary_bases, determine_primary_base, base_derived_from,
3082         dfs_find_final_overrider, dfs_find_final_overrider_q,
3083         dfs_find_inal_overrider_post, update_vtable_entry_for_fn,
3084         dfs_modify_vtables, walk_subobject_offsets,
3085         layout_nonempty_base_or_field, build_base_field,
3086         build_base_fields, propagate_binfo_offsets, layout_virtual_bases,
3087         end_of_class, get_vfield_name, dump_class_hierarchy, dump_vtable,
3088         finish_vtbls, build_vtt_inits, dfs_build_secondary_vptr_vtt_inits,
3089         build_ctor_vtbl_group, accumulate_vtble_inits,
3090         dfs_accumulate_vtbls_inits, build_vbase_offset_vtbl_entries,
3091         build_vcall_offset_vtbl_entries, add_vcall_offset_vtbl_entries_r,
3092         add_vcall_offset_vtbl_entries_1): Likewise.
3093         * decl.c (xref_basetypes): Incomming virtual base indicated by
3094         TREE_TYPE. Adjust.
3095         * dump.c (cp_dump_tree): Use BINFO_VIRTUAL_P.
3096         * init.c (finish_init_stmts, sort_mem_initializers,
3097         emit_mem_initializers, build_vtble_address, expand_member_init,
3098         push_base_cleanups): Likewise.
3099         * method.c (do_build_copy_constructor): Likewise.
3100         * pt.c (instantiate_class_template,
3101         get_template_base_recursive): Likewise.
3102         * rtti.c (dfs_class_hint_mark, get_pseudo_ti_init,
3103         get_pseudo_ti_desc): Likewise.
3104         * search.c (lookup_base_r, dynamic_cast_base_recurse,
3105         binfo_from_vbase, binfo_via_virtual, copied_binfo,
3106         original_binfo): Likewise.
3107         * semantics.c (finish_base_specifier): Virtualness is indicated
3108         by TREE_TYPE.
3109         * tree.c (copy_base_binfos): Use BINFO_VIRTUAL_P.
3110
3111 2004-07-06  Mark Mitchell  <mark@codesourcery.com>
3112
3113         Revert:
3114         2004-06-24  Jason Merrill  <jason@redhat.com>
3115         PR c++/16115
3116         * decl.c (grokparms): Give the PARM_DECL reference type if the
3117         parameter is passed by invisible reference.
3118
3119 2004-07-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3120
3121         * cp-lang.c (cp_var_mod_type_p): Add extra arg.
3122         * decl.c (grokdeclarator): Extra arg to variably_modified_type_p.
3123         * pt.c (check_instantiated_args, unify): Likewise.
3124
3125 2004-07-05  Phil Edwards  <phil@codesourcery.com>
3126
3127         * Make-lang.in (check-c++, lang_checks):  Add some comments.
3128
3129 2004-07-05  Zack Weinberg  <zack@codesourcery.com>
3130
3131         * cp-mudflap.c: Delete file.
3132         * Makefile.in: Remove all references to cp-mudflap.o.
3133
3134 2004-07-05  Zack Weinberg  <zack@codesourcery.com>
3135
3136         * decl.c (cxx_init_decl_processing): Call
3137         build_common_tree_nodes before creating the global NAMESPACE_DECL.
3138
3139 2004-07-05  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
3140
3141         PR c++/2518
3142         * call.c (build_operator_new_call): Look only at global scope.
3143
3144 2004-07-05  Nathan Sidwell  <nathan@codesourcery.com>
3145
3146         * call.c (enforce_access): Expect TREE_BINFO.
3147         * class.c (binfo_ctor_vtable): Check TREE_BINFO.
3148         * cp-tree.h (RECORD_OR_UNION_TYPE_CHECK): Remove.
3149         (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF):
3150         Adjust.
3151         (BINFO_LANG_ELTS): Remove.
3152         (BINFO_LANG_SLOTS): New.
3153         (TYPE_RAISES_EXCEPTIONS, ENUM_TEMPLATE_INFO): Use TYPE_LANG_SLOT_1.
3154         (CLASSTYPE_TEMPLATE_INFO): Adjust.
3155         * pt.c (tsubst): Split TREE_BINFO case from TREE_VEC case.
3156         * search.c (lookup_member): Check TREE_BINFO.
3157         * semantics.c (perform_or_defer_access_check): Likewise.
3158         (check_accessibility_of_qualified_id): Check
3159         deferred_access_no_check.
3160         * tree.c (make_binfo): Use make_tree_binfo.
3161
3162 2004-07-04  Mark Mitchell  <mark@codesourcery.com>
3163
3164         * method.c (implicitly_declare_fn): Set linkage of generated
3165         functions.
3166
3167 2004-07-04  Richard Henderson  <rth@redhat.com>
3168
3169         * typeck.c (cxx_mark_addressable): Don't put_var_into_stack.
3170
3171 2004-07-03  Scott Brumbaugh  <scottb.lists@verizon.net>
3172
3173         PR c++/3761
3174         * name-lookup.c (push_class_level_binding): Don't pass a
3175         TREE_LIST of ambiguous names to check_template_shadow as it
3176         only handles declarations. Instead, pull the declaration
3177         out and pass that.
3178
3179 2004-07-03  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
3180
3181         PR c++/14971
3182         * pt.c (check_explicit_specialization): Clarify error message.
3183
3184 2004-07-02  Richard Henderson  <rth@redhat.com>
3185
3186         * tree.c (cp_unsave_r): Update remap_save_expr call.
3187
3188 2004-07-02  Mark Mitchell  <mark@codesourcery.com>
3189
3190         PR c++/16240
3191         * mangle.c (write_template_arg): Correct mangling.
3192
3193         PR c++/16297
3194         * decl.c (grokdeclarator): Robustify.
3195
3196 2004-07-01  Richard Henderson  <rth@redhat.com>
3197
3198         * class.c (fixed_type_or_null): Don't handle RTL_EXPR.
3199         * method.c (synthesize_method): Don't clear_last_expr.
3200         * name-lookup.c (maybe_push_cleanup_level): Likewise.
3201
3202 2004-07-01  Nick Clifton  <nickc@redhat.com>
3203
3204         * decl2.c (import_export_class): Invoke the
3205         import_export_class field in the gcc_target structure if it is not
3206         empty.
3207
3208 2004-06-30  Richard Henderson  (rth@redhat.com>
3209
3210         * decl.c (start_preparsed_function): Don't set immediate_size_expand.
3211         * method.c (use_thunk): Likewise.
3212
3213 2004-06-30  Joseph S. Myers  <jsm@polyomino.org.uk>
3214
3215         * call.c (build_over_call), typeck.c (build_function_call): Call
3216         check_function_arguments instead of check_function_format.
3217
3218 2004-06-30  Joseph S. Myers  <jsm@polyomino.org.uk>
3219
3220         * call.c (build_over_call), typeck.c (build_function_call): Update
3221         calls to check_function_format.
3222
3223 2004-06-30  Richard Henderson  <rth@redhat.com>
3224
3225         * call.c (build_over_call): Use __builtin_memcpy for copying
3226         CLASS_AS_BASE rather than funny casting.
3227
3228 2004-06-30  Richard Henderson  <rth@redhat.com>
3229
3230         * init.c (build_new_1): Fill in TYPE_DOMAIN, TYPE_SIZE and
3231         TYPE_SIZE_UNIT of full_type.
3232
3233 2004-06-30  Per Bothner  <per@bothner.com>
3234
3235         Conditionally compile support for --enable-mapped_location.
3236         * decl.c (pop_label):  Handle (imperfectly) USE_MAPPED_LOCATION case.
3237         * decl2.c:  If USE_MAPPED_LOCATION, don't do some line number
3238         adjustments - which I don't understand.
3239         * error.c (dump_decl):  Rename "<interrnal>" to "<built-in>".
3240         * error.c:  Use LOCATION_FILE and EXPR_LOCATION macros.
3241         (print_instantiation_partial_context):  Use expand_location.
3242         * decl.c (duplicate_decl):  Use new DECL_IS_BUILTIN macro.
3243         * name-lookup.c:  Likewise.
3244         * lex.c (cxx_init):  Likewise.  Also use BUILTINS_LOCATION.
3245         * name-lookup.c:  Use input_line macro.
3246         * parser.c (cp_lexer_get_preprocessor_token):  Use UNKNOWN_LOCATION.
3247         (cp_parser_statement):  Rename locaal variable statement_locus to
3248         statement_location and use SET_EXPR_LOCATION macro.
3249         * pt.c:  Handle USE_MAPPED_LOCATION case.  Use new macros.
3250         * tree.c (cp_walk_subtrees):  Likewise.
3251
3252 2004-06-29  Per Bothner  <per@bothner.com>
3253
3254         * tree.c (build_min_nt, build_min, build_min_non_dep):
3255         Don't set TREE_COMPLEXITY from input_line.
3256
3257 2004-06-29  Paul Brook  <paul@codesourcery.com>
3258
3259         * init.c: Include target.h.
3260         (get_cookie_size): Remove and replace with target hook.
3261         Update callers.
3262         (build_new_1): Store the element size in the cookie.
3263
3264 2004-06-29  Nathan Sidwell  <nathan@codesourcery.com>
3265
3266         PR c++/16260
3267         * parser.c (cp_parser_template_declaration_after_export): Disable
3268         access checks here ...
3269         (cp_parser_class_specifier): ... not here.
3270
3271 2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
3272
3273         * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK,
3274         VAR_FUNCTION_OR_PARM_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK,
3275         BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Use appropriate
3276         TREE_CHECK macro.
3277
3278 2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
3279
3280         * cp-tree.h (struct deferred_access): Move to ...
3281         * semantics.c (struct deferred_access): ... here. Adjust.
3282         (deferred_access_stack): Make a VEC(deferred_access),
3283         (deferred_access_free_list): Remove.
3284         (deferred_access_no_check): New.
3285         (push_deferring_access_checks, resume_deferring_access_checks,
3286         stop_deferring_access_checks, pop_deferring_access_checks,
3287         get_deferred_access_checks, pop_to_parent_deferring_access_checks,
3288         perform_deferred_access_checks, perform_or_defer_access_check): Adjust.
3289
3290 2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
3291
3292         PR c++/16174
3293         * call.c (build_temp): Declare.
3294         (check_constructor_callable): New.
3295         (reference_binding): Only set CHECK_COPY_CONSTRUCTOR if not for
3296         CONSTRUCTOR_CALLABLE.
3297         (convert_like_real, initialize_reference): Use
3298         check_constructor_callable.
3299         * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): New.
3300         (LOOKUP_*): Renumber.
3301
3302 2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
3303
3304         * friend.c (add_friend): Only perform access checks when context
3305         is a class.
3306         * lex.c (cxx_make_type): Only create a binfo for aggregate types.
3307         * parser.c (cp_parser_class_specifier): Disable access checks here
3308         when parsing the body of a templated class.
3309         * semantics.c (perform_or_defer_access_checks): Reorder to allow
3310         NULL binfos when not checking access.
3311
3312 2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
3313
3314         Use vector API for vbase list.
3315         * cp-tree.h: Include vec.h
3316         (DEF_VEC_P (tree)): New type.
3317         (struct lang_type_class): Change vbase's member type.
3318         (binfo_for_vbase): Declare.
3319         * class.c (determine_primary_base, base_derived_from,
3320         update_vtable_entry_for_fn, walk_subobject_offsets, end_of_class,
3321         warn_about_ambiguous_bases, dfs_accumulate_vtbl_inits,
3322         build_vtbl_initializer): Adjust.
3323         * decl.c (xref_basetypes): Adjust, accumulate upper bound of
3324         vbases.
3325         * init.c (sort_mem_initializers, expand_member_init,
3326         push_base_cleanups): Adjust.
3327         * method.c (do_build_copy_constructor): Adjust.
3328         * search.c (get_pure_virtuals, copied_binfo, original_binfo): Adjust.
3329         (binfo_for_vbase): New.
3330         * tree.c (copy_base_binfos): Adjust.
3331
3332 2004-06-28  Mark Mitchell  <mark@codesourcery.com>
3333
3334         * parser.c (cp_parser_set_decl_spec_type): Fix thinko.
3335
3336 2004-06-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3337
3338         PR c++/14123
3339         * cxx-pretty-print.c (pp_cxx_ptr_operator): Properly put
3340         paranthesis in case of pointers to array members.
3341         * error.c (dump_type_prefix): Likewise.
3342         (dump_type_suffix): Maybe issue a whitespace when printing
3343         ARRAY_TYPE.
3344
3345 2004-06-27  Mark Mitchell  <mark@codesourcery.com>
3346
3347         PR c++/16193
3348         * parser.c (cp_parser_set_decl_spec_type): Refine test for
3349         redefinition of built-in types.
3350
3351 2004-06-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3352
3353         * error.c (pp_template_argument_list_start): Remove.
3354         (pp_template_argument_list_end): Likewise.
3355         (pp_separate_with_comma): Use pp_cxx_separate_with.
3356         (reinit_global_formatting_buffer): Remove.
3357         (pp_non_consecutive_character): Likewise.
3358         (dump_scope): Use pp_cxx_colon_colon.
3359         (dump_template_parameter): Use pp_cxx_identifier,
3360         pp_cxx_tree_identifier and pp_cxx_whitespace.
3361         (dump_templat_bindings): Replace use of pp_string with sequence
3362         of pp_cxx_whitespace and pp_equal.
3363         (dump_type): Use pp_cxx_identifier, pp_cxx_tree_identifier,
3364         pp_cxx_colon_colon, pp_cxx_whitespace throughout.  Don't set
3365         padding here.
3366         (dump_aggr_type): Use pp_cxx_identifier amd pp_cxx_tree_identifier.
3367         (dump_type_prefix): Don't set padding.  Use pp_cxx_whitespace,
3368         pp_cxx_left_parent, pp_cxx_colon_colon and pp_cxx_star troughout.
3369         (dump_type_suffix): Use pp_cxx_right_paren, pp_cxx_left_bracket,
3370         pp_cxx_right_bracket, pp_cxx_identifier throughout,
3371         (dump_decl): Likewise.
3372         (dump_template_decl): Likewise.
3373         (dump_function_decl): Likewise.  Set padding as appropriate.
3374         (dump_parameters): Use pp_cxx_left_paren, pp_cxx_identifier and
3375         pp_cxx_right_paren.
3376         (dump_exception_spec): Likewise.
3377         (dump_function_name): Use pp_cxx_tree_identifier and
3378         pp_cxx_identifier.
3379         (dump_template_parms): Use pp_cxx_begin_template_argument_list and
3380         pp_cxx_end_template_argument_list.
3381         (dump_expr): Use pp_cxx_left_paren, pp_cxx_right_paren,
3382         pp_cxx_colon_colon, pp_cxx_identifier, pp_cxx_tree_identifier and
3383         pp_cxx_whitespace throughout.
3384         (dump_binary_op): Use pp_cxx_whitespace, pp_cxx_left_paren and
3385         pp_cxx_right_paren.
3386         (dump_unary_op): Likewise.
3387         (reinit_cxx_pp): New function.
3388         (type_as_string); Use it.
3389         (expr_as_string): Likewise.
3390         (decl_as_string); Likewise.
3391         (context_as_string): Likewise.
3392         (lang_decl_name): Likewise.
3393         (decl_to_string): Likewise.
3394         (expr_to_string): Likewise.
3395         (parm_to_string): Likewise.
3396         (type_to_string): Likewise.
3397         (args_to_string): Likewise.
3398         (cv_to_string): Likewise.
3399
3400 2004-06-26  Mark Mitchell  <mark@codesourcery.com>
3401
3402         * cp-tree.h (cp_cv_quals): New type.
3403         (cp_declarator): Use it instead of "tree" as appropriate.
3404         (grok_method_quals): Adjust prototype.
3405         (grokclassfn): Likewise.
3406         (do_friend): Likewise.
3407         * decl.c (grokfndecl): Use cp_cv_quals, not tree.
3408         (grokdeclarator): Likewise.
3409         * decl2.c (grok_method_quals): Likewise.
3410         (grokclassfn): Likewise.
3411         * friend.c (do_friend): Likewise.
3412         * method.c (implicitly_declare_fn): Adjust call to grokclassfn.
3413         * parser.c (make_call_declarator): Use cp_cv_quals, not tree.
3414         (make_pointer_declarator): Likewise.
3415         (make_reference_declarator): Likewise.
3416         (make_ptrmem_declarator): Likewise.
3417         (cp_parser_ptr_operator): Likewise.
3418         (cp_parser_cv_qualifier_seq_opt): Likewise.
3419         (cp_parser_cv_qualifier_opt): Remove.
3420         (cp_parser_new_declarator_opt): Adjust call to
3421         cp_parser_ptr_operator.
3422         (cp_parser_conversion_declaration_opt): Likewise.
3423         (cp_parser_declarator): Use cp_cv_quals, not tree.
3424         (cp_parser_direct_declarator): Likewise.
3425
3426 2004-06-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3427
3428         * call.c, cp-tree.h, cxx-pretty-print.c, decl.c, decl2.c:
3429         Rename DECL_STMT to DECL_EXPR.
3430         * init.c, name-lookup.c, parser.c, pt.c, semantics.c: Likewise.
3431         * cp-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted.
3432         * tree.c (cp_walk_subtrees): Don't call c_walk_subtrees.
3433
3434 2004-06-26  Jan Hubicka  <jh@suse.cz>
3435
3436         PR C++/14865
3437         * decl2.c (maybe_emit_vtables):  Always import_export_vtable for the
3438         reachability analysis.
3439
3440 2004-06-25  Mark Mitchell  <mark@codesourcery.com>
3441
3442         * cp-mudflap.c (mflang_flush_calls): Fix thinkos resulting from
3443         2004-06-23 change.
3444
3445 2004-06-25  Paul Brook  <paul@codesourcery.com>
3446
3447         * decl2.c (get_guard): Call targetm.cxx.guard_type.
3448         (get_guard_bits, get_guard_cond): Call targetm.cxx.guard_mask_bit.
3449
3450 2004-06-24  Mark Mitchell  <mark@codesourcery.com>
3451
3452         * decl.c (grokdeclarator): Restore error messages about __thread.
3453         * parser.c (cp_parser_decl_specifier_seq): Likewise.
3454
3455 2004-06-24  Jason Merrill  <jason@redhat.com>
3456
3457         PR c++/16115
3458         * decl.c (grokparms): Give the PARM_DECL reference type if the
3459         parameter is passed by invisible reference.
3460
3461 2004-06-24  Andreas Schwab  <schwab@suse.de>
3462
3463         * cp-tree.h (enum cp_storage_class): Remove trailing comma.
3464
3465 2004-06-23  Mark Mitchell  <mark@codesourcery.com>
3466
3467         * Make-lang.in (cp/lex.o): Do not depend on cp/lex.h.
3468         (cp/decl.o): Likewise.
3469         (cp/decl2.o): Likewise.
3470         (cp/pt.o): Likewise.
3471         (cp/semantics.o): Likewise.
3472         * config-lang.in (gtfiles): Do not reference cp/lex.h.
3473         * class.c: Do not include lex.h.
3474         (add_implicitly_declared_members): Do not use
3475         adding_implicit_members.
3476         (check_bases_and_members): Do not talk about grok_x_components.
3477         * cp/cp-tree.h (adding_implicit_members): Remove.
3478         (cp_storage_class): New type.
3479         (cp_decl_spec): Likewise.
3480         (cp_decl_specifier_seq): Likewise.
3481         (cp_parameter_declarator): Use it for the decl_specifiers field.
3482         (check_tag_decl): Adjust prototype.
3483         (shadow_tag): Likewise.
3484         (groktypename): Likewise.
3485         (start_decl): Likewise.
3486         (start_function): Likewise.
3487         (start_method): Likewise.
3488         (grok_x_components): Remove.
3489         (grokfield): Adjust prototype.
3490         (grokbitfield): Likewise.
3491         (finish_member_class_template): Remove.
3492         * decl.c: Do not include lex.h.
3493         (adding_implicit_members): Do not define.
3494         (check_tag_decl): Do not use trees to represent decl-specifiers.
3495         (shadow_tag): Likewise.
3496         (groktypename): Likewise.
3497         (start_decl): Likewise.
3498         (grokvardecl): Likewise.
3499         (grokdeclarator): Likewise.
3500         (grokparms): Likewise.
3501         (start_function): Likewise.
3502         (start_method): Likewise.
3503         * decl.h (grokdeclarator): Adjust prototype.
3504         * decl2.c: Do not include lex.h.
3505         (grok_x_components): Remove.
3506         (grokfield): Do not use trees to represent decl-specifiers.
3507         (grokbitfield): Likewise.
3508         * lex.c: Do not include lex.h.
3509         * lex.h: Remove.
3510         * parser.c: Include target.h.
3511         (clear_decl_specs): New function.
3512         (cp_parser_translation_unit): Do not use trees to represent
3513         decl-specifiers.
3514         (cp_parser_postfix_expression): Likewise.
3515         (cp_parser_new_type_id): Likewise.
3516         (cp_parser_condition): Likewise.
3517         (cp_parser_simple_declaration): Likewise.
3518         (cp_parser_decl_specifier_seq): Likewise.
3519         (cp_parser_function_specifier_opt): Likewise.
3520         (cp_parser_conversion_type_id): Likewise.
3521         (cp_parser_template_parameter): Likewise.
3522         (cp_parser_explicit_instantiation): Likewise.
3523         (cp_parser_type_specifier): Likewise.
3524         (cp_parser_simple_type_specifier): Likewise.
3525         (cp_parser_init_declarator): Likewise.
3526         (cp_parser_type_id): Likewise.
3527         (cp_parser_type_specifier_seq): Likewise.
3528         (cp_parser_parameter_declaration): Likewise.
3529         (cp_parser_member_declaration): Likewise.
3530         (cp_parser_exception_declaration): Likewise.
3531         (cp_parser_function_definition_from_specifiers_and_declarator):
3532         Likewise.
3533         (cp_parser_single_declaration): Likewise.
3534         (cp_parser_save_member_function_body): Likewise.
3535         (cp_parser_friend_p): Likewise.
3536         (cp_parser_set_storage_class): New function.
3537         (cp_parser_set_decl_spec_type): Likewise.
3538         * pt.c: Do not include lex.h.
3539         * semantics.c: Likewise.
3540         (finish_member_class_template): Remove.
3541
3542 2004-06-23  Roger Sayle  <roger@eyesopen.com>
3543
3544         * call.c (build_cxx_call): Don't call expand_tree_builtin.  No
3545         longer take both "args" and "convert_args" as arguments.
3546         (build_op_delete_call): Update call to build_cxx_call.
3547         (build_over_call): Likewise, update call to build_cxx_call.
3548         * cp-tree.h (build_cxx_call): Update funtion prototype.
3549         * typeck.c (build_function_call): Don't call expand_tree_builtin.
3550         * rtti.c (throw_bad_cast): Update call to build_cxx_call.
3551         (throw_bad_typeid): Likewise.
3552         (build_dynamic_cast_1): Likewise.
3553
3554 2004-06-22  Richard Henderson  <rth@redhat.com>
3555
3556         * class.c (build_vfn_ref): Take a pointer not object.  Build
3557         an OBJ_TYPE_REF.
3558         (cp_fold_obj_type_ref): New.
3559         * call.c (build_over_call): Update build_vfn_ref call.
3560         * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): New.
3561         * cp-tree.h (cp_fold_obj_type_ref): Declare.
3562
3563 2004-06-21  Jason Merrill  <jason@redhat.com>
3564
3565         PR c++/16112
3566         * cp-gimplify.c (cp_gimplify_init_expr): Look through
3567         CLEANUP_POINT_EXPR.
3568
3569 2004-06-21  Mark Mitchell  <mark@codesourcery.com>
3570
3571         * cp-tree.def (NEW_EXPR): Add a fourth slot.
3572         * cp-tree.h (PARMLIST_ELLIPSIS_P): Remove.
3573         (TREE_PARMLIST): Likewise.
3574         (CALL_DECLARATOR_PARMS): Likewise.
3575         (CALL_DECLARATOR_QUALS): Likewise.
3576         (CALL_DECLARATOR_EXCEPTION_SPEC): Likewise.
3577         (cp_declarator_kind): New type.
3578         (cp_parameter_declarator): Likewise.
3579         (cp_declarator): Likewise.
3580         (cp_error_declarator): Likewise.
3581         (no_parameters): Likewise.
3582         (groktypename): Change prototype.
3583         (start_decl): Likewise.
3584         (start_handler_parms): Likewise.
3585         (get_scope_of_declarator): Likewise.
3586         (start_function): Likewise.
3587         (start_preparsed_function): New function.
3588         (start_function): Change prototype.
3589         (start_method): Likewise.
3590         (grokfield): Likewise.
3591         (grokbitfield): Likewise.
3592         (build_new): Likewise.
3593         (make_pointer_declarator): Remove.
3594         (make_reference_declarator): Likewise.
3595         (make_call_declarator): Likewise.
3596         (set_quals_and_spec): Likewise.
3597         (process_template_parm): Change prototype.
3598         (begin_function_definition): Remove.
3599         (finish_parmlist): Remove.
3600         * decl.c (groktypename): Do not use trees to represent
3601         declarators.
3602         (start_decl): Likewise.
3603         (start_handler_parms): Remove.
3604         (get_scope_of_declarator): Reimplement.
3605         (grokdeclarator): Do not use trees to represent declarators.
3606         (grokparms): Likewise.
3607         (start_function): Likewise.
3608         (start_method): Likewise.
3609         (build_void_list_mode): Do not use TREE_PARMLIST.
3610         * decl.h (grokdeclarator): Change prototype.
3611         * decl2.c (grok_method_quals): Robustify.
3612         (grok_x_components): Do not use trees to represent declarators.
3613         (grokfield): Likewise.
3614         (grokbitfield): Likewise.
3615         (start_objects): Build FUNCTION_DECLs, not declarators.
3616         (start_static_storage_duration_function): Likewise.
3617         * init.c (build_new): Simplify.
3618         * lex.c (make_pointer_declarator): Remove.
3619         (make_reference_declarator): Likewise.
3620         (make_call_declarator): Likewise.
3621         (set_quals_and_spec): Likewise.
3622         * method.c (use_thunk): Use start_preparsed_function.
3623         (synthesize_method): Likewise.
3624         (implicitly_declare_fn): Build FUNCTION_DECLs, not declarators.
3625         * optimize.c (maybe_clone_body): Use start_preparsed_function.
3626         * parser.c (cp_error_declarator): New variable.
3627         (declarator_obstack): Likewise.
3628         (alloc_declarator): New function.
3629         (make_declarator): Likewise.
3630         (make_id_declarator): Likewise.
3631         (make_pointer_declarator): Likewise.
3632         (make_reference_declarator): Likewise.
3633         (make_ptrmem_declarator): Likewise.
3634         (make_call_declarator): Likewise.
3635         (make_array_declarator): Likewise.
3636         (no_parameters): New variable.
3637         (make_parameter_declarator): Likewise.
3638         (cp_parser_check_for_definition_in_return_type): Do not use trees
3639         to represent declarators.
3640         (cp_parser_translation_unit): Likewise.
3641         (cp_parser_new_expression): Likewise.
3642         (cp_parser_new_type_id): Likewise.
3643         (cp_parser_new_declarator_opt): Likewise.
3644         (cp_parser_direct_new_declarator): Likewise.
3645         (cp_parser_condition): Likewise.
3646         (cp_parser_declaration_statement): Likewise.
3647         (cp_parser_declaration): Likewise.
3648         (cp_parser_conversion_type_id): Likewise.
3649         (cp_parser_conversion_declarator_opt): Likewise.
3650         (cp_parser_template_parameter_list): Likewise.
3651         (cp_parser_template_parameter): Likewise.
3652         (cp_parser_explicit_instantiation): Likewise.
3653         (cp_parser_init_declarator): Likewise.
3654         (cp_parser_declarator): Likewise.
3655         (cp_parser_direct_declarator): Likewise.
3656         (cp_parser_type_id): Likewise.
3657         (cp_parser_parameter_declaration_clause): Likewise.
3658         (cp_parser_parameter_declaration_list): Likewise.
3659         (cp_parser_parameter_declaration): Likewise.
3660         (cp_parser_member_declaration): Likewise.
3661         (cp_parser_exception_declaration): Likewise.
3662         (cp_parser_check_declarator_template_parameters): Likewise.
3663         (cp_parser_function_definition_from_specifiers_and_declarator):
3664         Likewise.
3665         (cp_parser_save_member_function_body): Likewise.
3666         * pt.c (process_template_parm): Add is_non_type parameter.
3667         (convert_template_argument): Adjust call to groktypename.
3668         (tsubst_call_declarator_parms): Remove use of TREE_PARMLIST.
3669         (tsubst): Do not expect declarators.
3670         (tsubst_copy_and_build): Adjust NEW_EXPR case to handle additional
3671         argument.
3672         (instantiate_decl): Use start_preparsed_function.
3673         * semantics.c (begin_function_definition): Remove.
3674         (finish_parmlist): Remove.
3675         * cp-mudflap.c (mflang_flush_calls): Build FUNCTION_DECLs, not
3676         declarators.
3677
3678 2004-06-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3679
3680         * call.c (build_vfield_ref): Add new operand for COMPONENT_REF.
3681         (build_new_method_call): Likewise.
3682         * decl.c (local_variable_p_walkfn): Don't walk into types.
3683         * decl2.c (grok_array_decl): Add new operands for ARRAY_REF.
3684         (build_anon_union_vars): Add new operand for COMPONENT_REF.
3685         * init.c (buld_new): Add new operand for ARRAY_REF.
3686         * method.c (do_build_copy_constructor): New op for COMPONENT_REF.
3687         (do_build_assign_ref): Likewise.
3688         * parser.c (cp_parser_direct_new_declarator): Add new operands
3689         for ARRAY_REF.
3690         (cp_parser_direct_declarator): Likewise.
3691         * pt.c (tsubst): Likewise.
3692         (tsubst_copy, tsubst_copy_and_build): Likewise; also add new operand
3693         for COMPONENT_REF.
3694         * semantics.c (finish_non_static_data_member): Add new operand
3695         for COMPONENT_REF.
3696         * typeck.c (build_class_member_access_expr): Likewise.
3697         (build_class_member_access_expr, finish_class_member_access_expr):
3698         Likewise.
3699         (build_ptrmemfunc_access_expr): Likewise.
3700         (build_array_ref): Add new operands for ARRAY_REF.
3701         * typeck2.c (split_nonconstant_init_1): Likewise; COMPONENT_REF too.
3702         * tree.c (count_trees_r, no_linkage_helper): Don't walk in types.
3703
3704 2004-06-21  Richard Henderson  <rth@redhat.com>
3705
3706         * dump.c (cp_dump_tree): Don't use dump_next_stmt.
3707         * parser.c (cp_parser_jump_statement): Update commentary.
3708         * pt.c (tsubst_expr): Use RETURN_EXPR.
3709         * semantics.c (finish_return_stmt): Likewise.
3710         (finalize_nrv_r): Likewise.
3711         * typeck.c, typeck2.c: Update file start commentary.
3712
3713 2004-06-21  Richard Henderson  <rth@redhat.com>
3714
3715         * semantics.c (finish_expr_stmt): Call verify_sequence_points.
3716
3717 2004-06-20  Richard Henderson  <rth@redhat.com>
3718
3719         * cp-tree.h (add_decl_stmt): Declare.
3720         * pt.c (tsubst_copy): Abort for CLEANUP_POINT_EXPR.
3721         * semantics.c (maybe_cleanup_point_expr): New.
3722         (add_decl_stmt, finish_expr_stmt, finish_return_stmt,
3723         finish_for_expr, finish_switch_cond): Use it.
3724         (finalize_nrv_r): Don't build an EXPR_STMT.  Don't frob TREE_CHAIN.
3725
3726 2004-06-20  Richard Henderson  <rth@redhat.com>
3727
3728         * cp-tree.def (CLEANUP_STMT, IF_STMT): Move from c-common.def.
3729         * cp-gimplify.c (gimplify_if_stmt): Move from c-gimplify.c.
3730         (cp_gimplify_expr): Call it.
3731         (gimplify_cleanup_stmt): Move from c-gimplify.c.
3732         (cp_genericize): New.
3733         * decl.c (finish_function): Call it.
3734         * cp-tree.h (cp_stmt_codes): Add CLEANUP_STMT, IF_STMT.
3735         (CLEANUP_BODY, CLEANUP_EXPR, CLEANUP_DECL): Move from c-common.h.
3736         (IF_COND, THEN_CLAUSE, ELSE_CLAUSE): Likewise.
3737         (cp_genericize): Declare.
3738         * cxx-pretty-print.c (pp_cxx_statement): Add CLEANUP_STMT, IF_STMT.
3739         * dump.c (cp_dump_tree): Likewise.
3740         * semantics.c (push_cleanup): Move from c-semantics.c.
3741
3742 2004-06-20  Zack Weinberg  <zack@codesourcery.com>
3743
3744         * cp-lang.c (has_c_linkage): Implement.
3745
3746         * cp-tree.h (set_mangled_name_for_decl): Don't prototype.
3747         * decl.c (duplicate_decls): Use COPY_DECL_RTL.
3748         (builtin_function_1): Don't call make_decl_rtl.
3749         (build_cp_library_fn): Don't call set_mangled_name_for_decl.
3750         (grokvardecl): Don't call mangle_decl.
3751         * except.c (nothrow_libfn_p): Look at DECL_NAME, not
3752         DECL_ASSEMBLER_NAME.
3753         * method.c (set_mangled_name_for_decl): Delete.
3754         * name-lookup.c (pushdecl): When a local extern shadows a
3755         file-scope declaration of the same object, give both DECLs the
3756         same DECL_UID.
3757         * typeck.c (cxx_mark_addressable): Don't set TREE_ADDRESSABLE
3758         on DECL_ASSEMBLER_NAME.
3759
3760 2004-06-19  Richard Henderson  <rth@redhat.com>
3761
3762         * cp-gimplify.c: Remove unnecessary prototypes.
3763         (cp_gimplify_stmt): Merge into ...
3764         (cp_gimplify_expr): ... here.  Move to end of file.  Handle
3765         stmts_are_full_exprs_p frobbing.
3766         * cp-tree.h (cp_gimplify_stmt): Remove.
3767         * pt.c (tsubst_expr): Merge prep_stmt and unify.
3768         * tree.c (init_tree): Don't set lang_gimplify_stmt.
3769
3770 2004-06-18  Richard Henderson  <rth@redhat.com>
3771
3772         PR c++/16034
3773         * semantics.c (begin_cond): New.
3774         (finish_cond): Rewrite to handle template DECL_STMTs specially.
3775         Assume that non-template decls go land before the conditional.
3776         (simplify_loop_decl_cond): Likewise.
3777         (begin_if_stmt, finish_if_stmt_cond, begin_while_stmt,
3778         finish_while_stmt_cond, finish_for_init_stmt, finish_for_cond,
3779         begin_switch_stmt, finish_switch_cond): Update to match.
3780
3781 2004-06-17  Jason Merrill  <jason@redhat.com>
3782
3783         PR c++/16015
3784         * semantics.c (simplify_aggr_init_expr): Don't return the slot.
3785         (finish_stmt_expr_expr): Update type after conversions.
3786         (finish_stmt_expr): Wrap initializer in CLEANUP_POINT_EXPR.
3787         Handle void initializer.
3788         * tree.c (build_cplus_new): Make AGGR_INIT_EXPRs void.
3789
3790 2004-06-17  Geoffrey Keating  <geoffk@apple.com>
3791
3792         * class.c (build_clone): Don't call defer_fn, let mark_used do it.
3793         * cp-tree.h (defer_fn): Delete.
3794         * decl2.c (defer_fn): Delete.
3795         (finish_file): Simplify deferred_fns loops; check that
3796         only used inline functions get into deferred_fns.
3797         (mark_used): Inline previous contents of defer_fn.
3798
3799 2004-06-16  Richard Henderson  <rth@redhat.com>
3800
3801         * cp-tree.h (COMPOUND_STMT_TRY_BLOCK, COMPOUND_STMT_BODY_BLOCK): Kill.
3802         (BIND_EXPR_TRY_BLOCK, BIND_EXPR_BODY_BLOCK): New.
3803         * cxx-pretty-print.c (pp_cxx_function_definition): Move handling
3804         of CTOR_INITIALIZER ...
3805         (pp_cxx_statement): ... here.
3806         * decl.c (begin_function_body): Don't set COMPOUND_STMT_BODY_BLOCK.
3807         (finish_function): Use alloc_stmt_list to zap entire function.
3808         * parser.c (cp_parser_compound_statement): Update commentary.
3809         * pt.c (tsubst_expr): Use BIND_EXPR instead of COMPOUND_STMT.
3810         * semantics.c (begin_compound_stmt, finish_compound_stmt): Likewise.
3811         (finish_stmt_expr): Don't look through COMPOUND_STMT.
3812
3813 2004-06-16  Geoffrey Keating  <geoffk@apple.com>
3814
3815         * pt.c (mark_decl_instantiated): Don't call defer_fn.
3816
3817 2004-06-16  Richard Henderson  <rth@redhat.com>
3818
3819         * parser.c (cp_parser_labeled_statement): Update commentary.
3820         * pt.c (tsubst_expr): Use CASE_LABEL_EXPR.
3821         * tree.c (mark_local_for_remap_r): Likewise.
3822
3823 2004-06-16  Richard Henderson  <rth@redhat.com>
3824
3825         * parser.c (cp_parser_asm_definition): Update commentary.
3826         * pt.c (tsubst_expr): Use ASM_EXPR.
3827         * semantics.c (finish_asm_stmt): Likewise.
3828
3829 2004-06-16  Richard Henderson  <rth@redhat.com>
3830
3831         * decl.c (finish_destructor_body): Use LABEL_EXPR.
3832         * parser.c (cp_parser_statement): Update commentary.
3833         * pt.c (tsubst_expr): Use LABEL_EXPR, GOTO_EXPR.
3834         * semantics.c (finish_goto_stmt, finish_label_stmt): Likewise.
3835         * tree.c (mark_local_for_remap_r): Likewise.
3836
3837 2004-06-16  Richard Henderson  <rth@redhat.com>
3838
3839         PR c++/16012
3840         * semantics.c (begin_for_stmt, begin_for_stmt): Do put the init
3841         statement in FOR_INIT_STMT for templates.
3842
3843 2004-06-15  Richard Henderson  <rth@redhat.com>
3844
3845         * call.c (initialize_reference): Don't build CLEANUP_STMT here.
3846         * cp-gimplify.c (cp_gimplify_stmt): Remove next_p argument.
3847         (genericize_try_block): Use gimplify_stmt.
3848         (genericize_catch_block, genericize_eh_spec_block): Likewise.
3849         (cp_gimplify_init_expr): Remove STMT_EXPR special case.
3850         (gimplify_must_not_throw_expr): Update voidify_wrapper_expr call.
3851         * cp-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove.
3852         (cp_tree_chain_matters_p): Remove.
3853         * cp-tree.h (COMPOUND_STMT_TRY_BLOCK): New.
3854         (COMPOUND_STMT_BODY_BLOCK): New.
3855         (STATEMENT_LIST_NO_SCOPE, STATEMENT_LIST_TRY_BLOCK): New.
3856         (EXPR_STMT_STMT_EXPR_RESULT): New.
3857         (building_stmt_tree): Check cur_stmt_list.
3858         (tf_stmt_expr_cmpd, tf_stmt_expr_body): Remove.
3859         (BCS_NO_SCOPE, BCS_TRY_BLOCK, BCS_FN_BODY): New.
3860         * decl.c (poplevel): Use pop_stmt_list for minding cleanups.
3861         (cp_finish_decl): Use push_cleanup.
3862         (start_function, finish_function): Use statement lists.
3863         (finish_stmt): Do nothing.
3864         * except.c (begin_eh_spec_block): Use statement lists.
3865         (check_handlers_1, check_handlers): Likewise.
3866         * init.c (construct_virtual_base): Don't add extra compound stmts.
3867         (build_vec_init): Likewise.
3868         * name-lookup.c (maybe_push_cleanup_level): Use statement lists.
3869         * name-lookup.h (struct cp_binding_level): Add statement_list.
3870         * parser.c (cp_parser_statement): Take the STMT_EXPR node, not a bool.
3871         (cp_parser_labeled_statement, cp_parser_expression_statement,
3872         cp_parser_statement_seq_opt): Likewise.
3873         (cp_parser_compound_statement): Likewise.  Take bool for try block.
3874         (cp_parser_selection_statement): Tidy if processing.
3875         (cp_parser_already_scoped_statement): Rewrite to do what it says.
3876         * pt.c (tsubst_copy): Move STMT_EXPR to tsubst_expr.
3877         (tsubst_expr): Rewrite STMT_EXPR processing.  Handle STATEMENT_LIST.
3878         Mind COMPOUND_STMT_TRY_BLOCK, EXPR_STMT_STMT_EXPR_RESULT.
3879         * semantics.c (do_poplevel, do_pushlevel): Use statement lists.
3880         (finish_cond): New, rewritten from FINISH_COND.
3881         (simplify_loop_decl_cond): New.
3882         (finish_expr_stmt): Avoid nested EXPR_STMTs.
3883         (begin_if_stmt, finish_if_stmt_cond, finish_then_clause,
3884         begin_else_clause, finish_else_clause, finish_if_stmt,
3885         begin_while_stmt, finish_while_stmt_cond, finish_while_stmt,
3886         begin_do_stmt, finish_do_body, begin_for_stmt, finish_for_init_stmt,
3887         finish_for_cond, finish_for_stmt, begin_switch_stmt,
3888         finish_switch_cond, finish_switch_stmt, begin_try_block,
3889         finish_try_block, finish_cleanup_try_block, finish_function_try_block,
3890         finish_handler_sequence, finish_function_handler_sequence,
3891         begin_handler, finish_handler_parms, finish_handler,
3892         begin_stmt_expr, finish_stmt_expr_expr, finish_stmt_expr): Rewrite
3893         using statement lists.
3894         (begin_compound_stmt): Replace has_no_scope argument with flags.
3895         Update all callers.  Use statement lists.
3896         (finish_compound_stmt): Likewise.
3897         (finish_decl_cleanup, finish_eh_cleanup): Use push_cleanup.
3898         (current_scope_stmt_stack): Remove.
3899         (simplify_aggr_init_expr): Don't muck with TREE_CHAIN.
3900         * typeck2.c (split_nonconstant_init_1, split_nonconstant_init):
3901         Rewrite with statement lists.
3902
3903 2004-06-15  Alexandre Oliva  <aoliva@redhat.com>
3904
3905         * parser.c: Change all assignments of c_lex_string_translate
3906         to true and false to 1 and 0.
3907         (cp_lexer_read_token): Convert type of the translated string.
3908         (cp_parser_skip_to_closing_parentheses): Preserve original
3909         value of c_lex_string_translate, and set it to -1 while
3910         running.
3911         (cp_parser_cache_group): Likewise.
3912         (cp_parser_cache_group_1): Renamed.
3913         (cp_parser_asm_operand_list): Remove redundant setting of
3914         c_lex_string_translate.
3915         (cp_parser_primary_expression) [CPP_STRING, CPP_WSTRING]:
3916         Handle chained strings.
3917
3918 2004-06-12  Andrew Pinski  <apinski@apple.com>
3919
3920         PR c++/14639
3921         Revert:
3922         2004-06-02  Andrew Pinski  <pinskia@physics.uc.edu>
3923
3924                 * cp-tree.h: Fix typo.
3925
3926                 * cp-tree.h: Include cgraph.h
3927                 (DECL_NEEDED_P): Use cgraph_*node on the decl instead of
3928                 TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.
3929
3930 2004-06-12  Jason Merrill  <jason@redhat.com>
3931
3932         PR tree-optimization/14107
3933         * decl.c (finish_function): Warn about no return in all functions.
3934
3935 2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
3936
3937         * cp-tree.h (struct language_function): Remove cannot_inline.
3938         * decl.c (save_function_data): cannot_inline is no more.
3939         (cxx_push_function_context): Likewise.
3940         * decl2.c (start_objects, start_static_storage_duration_function):
3941         Reset DECL_INLINE, set DECL_UNINLINABLE.
3942
3943 2004-06-14  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
3944
3945         PR c++/15967
3946         * search.c (lookup_field): Propagate the ambiguity list.
3947         (lookup_fnfields): Likewise.
3948
3949 2004-06-14  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
3950
3951         PR c++/15947
3952         * parser.c (cp_parser_template_name): Ctors/dtors never need a
3953         template keyword to disambiguate.
3954
3955 2004-06-14  Mark Mitchell  <mark@codesourcery.com>
3956
3957         PR c++/15096
3958         * decl.c (grokdeclarator): Ignore pointer-to-members when
3959         computing template depth.
3960
3961         PR c++/14930
3962         * name-lookup.c (pushtag): Do not try to put class declarations in
3963         explicit specialization scopes.
3964
3965 2004-06-11  Andrew Pinski  <pinskia@physics.uc.edu>
3966
3967         * decl.c (grokdeclarator): Do not depend on C99's _Bool's behavior.
3968
3969 2004-06-11  Mark Mitchell  <mark@codesourcery.com>
3970
3971         PR c++/15862
3972         * name-lookup.c (unqualified_namespace_lookup): Do not ignore type
3973         bindings for undeclared built-ins.
3974
3975 2004-06-11  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
3976
3977         * typeck2.c (abstract_virtual_errors): Reword diagnostics, make them
3978         appear at the correct location.
3979
3980 2004-06-10  Jason Merrill  <jason@redhat.com>
3981
3982         PR c++/15875
3983         Revert:
3984         2004-06-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3985         * init.c (build_offset_ref): Build SCOPE_REF with non-null
3986         TREE_TYPE for non-dependent names.
3987         * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
3988         unknown_type_node as its TREE_TYPE.
3989         * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
3990         * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
3991         (dump_expr) <SCOPE_REF case>: Likewise.
3992
3993 2004-06-10  Mark Mitchell  <mark@codesourcery.com>
3994
3995         PR c++/15227
3996         * parser.c (cp_parser_direct_declarator): Robustify.
3997
3998         PR c++/15877
3999         * pt.c (tsubst_copy): Use decl_constant_value on enumeration
4000         constants in non-dependent contexts.
4001
4002         PR c++/14211
4003         PR c++/15076
4004         * typeck.c (build_static_cast): Wrap casts in NON_LVALUE_EXPR when
4005         necessary.
4006
4007 2004-06-10  Jakub Jelinek  <jakub@redhat.com>
4008
4009         PR c++/14791
4010         * decl.c (duplicate_decls): Handle fileptr_type_node arguments
4011         specially.
4012
4013 2004-06-09  Mark Mitchell  <mark@codesourcery.com>
4014
4015         Revert:
4016         PR c++/15815
4017         2004-06-07  Mark Mitchell  <mark@codesourcery.com>
4018         * lex.c (handle_pragma_interface): Deprecate.
4019         (handle_pragma_implementation): Likewise.
4020
4021 2004-06-09  Andrew Pinski  <pinskia@physics.uc.edu>
4022
4023         * g++spec.c (lang_specific_driver): Remove check for -lm
4024         and -lmath when check it see if it was the math library.
4025
4026 2004-06-08  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
4027
4028         PR c++/7841
4029         * parser.c (cp_parser_direct_declarator): Reject constructor named
4030         as qualified template-id.
4031
4032 2004-06-07  Mark Mitchell  <mark@codesourcery.com>
4033
4034         PR c++/15815
4035         * lex.c (handle_pragma_interface): Deprecate.
4036         (handle_pragma_implementation): Likewise.
4037
4038 2004-06-07  Mark Mitchell  <mark@codesourcery.com>
4039
4040         PR c++/15766
4041         * parser.c (cp_parser_iteration_statement): Fix typo in error
4042         message.
4043
4044         PR c++/14777
4045         * pt.c (tsubst_default_argument): Do not defer access checks
4046         while substituting into the default argument.
4047
4048         PR c++/15554
4049         * pt.c (tsubst_copy): Do not try to substitute for an enumeration
4050         constant in a non-dependent context.
4051
4052         PR c++/15057
4053         * except.c (build_throw): Ensure that temp_expr has been
4054         initialized.
4055
4056 2004-06-06  Roger Sayle  <roger@eyesopen.com>
4057
4058         * cp/cp-tree.h (lvalue_or_else): Add function prototype.
4059
4060 2004-06-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
4061
4062         PR c++/15503
4063         * parser.c (cp_parser_mem_initializer_id): Gracefully reject
4064         'typename', and accept 'template'.
4065
4066 2004-06-03  Andrew Pinski  <pinskia@physics.uc.edu>
4067             Jan Hubicka  <jh@suse.cz>
4068
4069         PR c++/14639
4070         * method.c (use_think): Do not mark thunk as referenced.
4071
4072 2004-06-03  Matt Austern  <austern@apple.com>
4073
4074         PR c++/15428
4075         * decl2.c (maybe_emit_vtables): If TARGET_WEAK_NOT_IN_ARCHIVE_TOC
4076         is nonzero, and if we see a noninline definition of a key method,
4077         make the vtables nonweak.
4078
4079 2004-06-02  Matt Austern  <austern@apple.com>
4080
4081         * cp-tree.h (instantiate_decl): new boolean parameter,
4082         undefined_ok. Current behavior is equivalent to its being 0.
4083         * decl2.c (mark_used): Add new argument when calling instantiate_decl
4084         * pt.c (mark_decl_instantiated): Unconditionally make
4085         instantiations explicit unconditionally
4086         (do_decl_instantiation): Don't call SET_DECL_EXPLICIT_INSTANTIATION,
4087         since mark_decl_instantiated now does it.
4088         (instantiate_class_member): New.  Instantiate a member of an
4089         explicitly instantiated class template.
4090         (do_type_instantiation): Explicitly instantiate members of an
4091         explicitly instantiated class template.
4092         (instantiate_decl): if undefined_ok is nonzero, and if we're
4093         trying to explicitly instantiated a template with no definition,
4094         change it to an implicit instantiation.
4095         (instantiate_pending_templates): Add new argument to instantiate_decl.
4096         * tree.c (cp_cannot_inline_tree_fn): Likewise.
4097
4098 2004-06-02  Andrew Pinski  <pinskia@physics.uc.edu>
4099
4100         * cp-tree.h: Fix typo.
4101
4102         * cp-tree.h: Include cgraph.h
4103         (DECL_NEEDED_P): Use cgraph_*node on the decl instead of
4104         TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.
4105
4106 2004-06-01  Jason Merrill  <jason@redhat.com>
4107
4108         PR c++/15142
4109         * call.c (call_builtin_trap): Remove type parm.
4110         (convert_arg_to_ellipsis): Change a non-POD argument to integer type.
4111         (build_x_va_arg): Dereference a null pointer for a non-POD argument.
4112
4113 2004-06-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4114
4115         PR c++/13092
4116         * init.c (build_offset_ref): Build SCOPE_REF with non-null
4117         TREE_TYPE for non-dependent names.
4118         * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
4119         unknown_type_node as its TREE_TYPE.
4120         * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
4121         * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
4122         (dump_expr) <SCOPE_REF case>: Likewise.
4123
4124 2004-06-01  Richard Henderson  <rth@redhat.com>
4125             Andrew Pinski  <pinskia@physics.uc.edu>
4126
4127         * lex.c (reswords): Rename "__offsetof" to "__builtin_offsetof".
4128         * parser.c (struct cp_parser): Remove in_offsetof.
4129         (cp_parser_new): Don't set it.
4130         (cp_parser_unary_expression): Don't check it.
4131         (cp_parser_postfix_open_square_expression): Split out from ...
4132         (cp_parser_postfix_expression): ... here.
4133         (cp_parser_postfix_dot_deref_expression): Likewise.
4134         (cp_parser_builtin_offsetof): New.
4135         (cp_parser_primary_expression): Use it.
4136
4137 2004-06-01  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
4138
4139         PR c++/14932
4140         * parser.c (cp_parser_postfix_expression): Allow subscript
4141         operator in offsetof.
4142
4143 2004-05-31  Mark Mitchell  <mark@codesourcery.com>
4144
4145         PR c++/15701
4146         * friend.c (add_friend): Do not try to perform access checks for
4147         functions from dependent classes.
4148
4149 2004-05-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4150
4151         * cxx-pretty-print.c (pp_cxx_colon_colon): Expor.
4152         (pp_cxx_begin_template_argument_list): Turn into a function.
4153         (pp_cxx_end_template_argument_list): Likewise.
4154         (pp_cxx_separate_with): Define.
4155         (pp_cxx_unqualified_id): Tidy.
4156         (pp_cxx_primary_expression): Likewise.
4157         (pp_cxx_postfix_expression): Likewise.
4158         (pp_cxx_expression): Likewise.
4159         (pp_cxx_simple_type_specifier): Likewise.
4160         (pp_cxx_type_specifier_seq): Likewise.
4161         (pp_cxx_parameter_declaration_clause): Likewise.
4162         (pp_cxx_exception_specification): Likewise.
4163         (pp_cxx_direct_declarator): Likewise.
4164         (pp_cxx_type_id): Likewise.
4165         * cxx-pretty-print.h (pp_cxx_whitespace): Export from
4166         cxx-pretty-print.c.
4167         (pp_cxx_left_paren): Likewise.
4168         (pp_cxx_right_paren): Likewise.
4169         (pp_cxx_left_brace): Likewise.
4170         (pp_cxx_right_brace): Likewise.
4171         (pp_cxx_left_bracket): Likewise.
4172         (pp_cxx_right_bracket): Likewise.
4173         (pp_cxx_dot): Likewise.
4174         (pp_cxx_identifier): Likewise.
4175         (pp_cxx_tree_identifier): Likewise.
4176         (pp_cxx_ampersand): New macro.
4177         (pp_cxx_star): Likewise.
4178         (pp_cxx_arrow): Likewise.
4179         (pp_cxx_semicolon): Likewise.
4180         (pp_cxx_complement): Likewise.
4181         (pp_cxx_begin_template_argument_list): Declaree.
4182         (pp_cxx_end_template_argument_list): Likewise.
4183         (pp_cxx_colon_colon): likewise.
4184
4185 2004-05-31  Eric Botcazou  <ebotcazou@libertysurf.fr>
4186
4187         * parser.c (cp_parser_simple_type_specifier): Explicitly test
4188         against NULL_TREE.
4189
4190 2004-05-31  Kazu Hirata  <kazu@cs.umass.edu>
4191
4192         * call.c, class.c, cp-tree.def, decl2.c, name-lookup.c, pt.c,
4193         typeck.c: Fix comment formatting.
4194
4195 2004-05-30  Andrew Pinski  <pinskia@physics.uc.edu>
4196
4197         * cp-lang.c (cp_expand_decl): Remove.
4198         (LANG_HOOKS_EXPAND_DECL): Use c_expand_decl.
4199
4200 2004-05-30  Andreas Jaeger  <aj@suse.de>
4201
4202         * lang-specs.h: Add missing initializers for .ii.
4203
4204 2004-05-28  Aldy Hernandez  <aldyh@redhat.com>
4205
4206         * decl.c (cp_make_fname_decl): Free return value from
4207         fname_as_string.
4208
4209 2004-05-28  Mark Mitchell  <mark@codesourcery.com>
4210
4211         PR c++/15083
4212         * decl2.c (delete_sanity): Set TREE_SIDE_EFFECTS on a DELETE_EXPR,
4213         even in a templat.e
4214         * init.c (build_new): Likewise.
4215
4216         PR c++/15640
4217         * name-lookup.c (arg_assoc): Robustify.
4218
4219         PR c++/15471
4220         * typeck.c (unary_complex_lvalue): Use context_for_name_lookup
4221         when determining the scope to use for a pointer to member.
4222         (lookup_anon_field): Give it external linkage.
4223         * cp-tree.h (lookup_anon_field): Declare it.
4224         * expr.c (cplus_expand_constant): Use it.
4225
4226 2004-05-28  Mark Mitchell  <mark@codesourcery.com>
4227
4228         PR c++/14668
4229         * parser.c (cp_parser_simple_type_specifier): Call
4230         maybe_note_name_used_in_class.
4231
4232 2004-05-28  Tom Marshall  <tmarshall@real.com>
4233
4234         PR c++/15214
4235         * class.c (finish_struct_1): Warn only if the dtor is non-private or
4236         the class has friends.
4237
4238 2004-05-27  Adam Nemet  <anemet@lnxw.com>
4239
4240         PR c++/12883
4241         * decl.c (complete_array_type): Set TYPE_NEEDS_CONSTRUCTING and
4242         TYPE_HAS_NONTRIVIAL_DESTRUCTOR based on the underlying type.
4243
4244 2004-05-24  Geoffrey Keating  <geoffk@apple.com>
4245
4246         * method.c (implicitly_declare_fn): Don't call defer_fn; abort
4247         if it might be needed.
4248         * pt.c (mark_decl_instantiated): Only call defer_fn if
4249         the function actually needs processing in finish_file.
4250         * decl2.c (finish_file): Add check that elements in
4251         deferred_fns_used are really needed there.  Remove unnecessary
4252         test of DECL_SAVED_TREE.
4253
4254 2004-05-23  Paolo Bonzini  <bonzini@gnu.org>
4255
4256         * Make-lang.in: No need to specify $(LIBCPP).
4257
4258 2004-05-23  Mark Mitchell  <mark@codesourcery.com>
4259
4260         PR c++/15044
4261         * parser.c (cp_parser_class_head): Robustify.
4262
4263         PR c++/15317
4264         * parser.c (cp_parser_decl_specifier_seq): Correct error in
4265         comment.
4266         (cp_parser_constructor_declarator_p): Treat attributes
4267         as decl-specifiers.
4268
4269         PR c++/15329
4270         * typeck.c (build_unary_op): Do not attempt to resolve casts to
4271         base classes in templates.
4272
4273 2004-05-23  Mark Mitchell  <mark@codesourcery.com>
4274
4275         PR c++/15165
4276         * pt.c (instantiate_template): Robustify.
4277
4278 2004-05-23  Mark Mitchell  <mark@codesourcery.com>
4279
4280         PR c++/15025
4281         * decl.c (xref_tag): Issue errors about redeclaring template
4282         classes as non-template classes.
4283
4284 2004-05-23  Mark Mitchell  <mark@codesourcery.com>
4285
4286         PR c++/14821
4287         * name-lookup.c (supplement_binding): Allow redefinitions of
4288         namespace aliases.
4289
4290         PR c++/14883
4291         * parser.c (cp_parser_template_argument): Robustify.
4292
4293 2004-05-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4294
4295         * class.c (alter_access): Use %E format specifier to print an
4296         identifier node.  Avoid looking at the IDENTIFIER_POINTER.
4297         (push_lang_context): Likewise.
4298         * decl.c (lookup_label): Likewise.
4299         (grokdeclarator): Likewise.
4300         * parser.c (cp_parser_check_for_invalid_template_id): Likewise.
4301         * pt.c (do_type_instantiation): Likewise.
4302         * tree.c (handle_java_interface_attribute): Likewise.
4303         (handle_com_interface_attribute): Likewise.
4304         (handle_init_priority_attribute): Likewise.
4305
4306 2004-05-22  Mark Mitchell  <mark@codesourcery.com>
4307
4308         PR c++/15285
4309         PR c++/15299
4310         * pt.c (build_non_dependent_expr): Expand the set of tree nodes
4311         recognized as overloaded functions.
4312
4313 2004-05-22  Mark Mitchell  <mark@codesourcery.com>
4314
4315         PR c++/15507
4316         * class.c (layout_nonempty_base_or_field): Do not try to avoid
4317         layout conflicts for unions.
4318
4319         PR c++/15542
4320         * typeck.c (build_x_unary_op): Instantiate template class
4321         specializations before looking for "operator &".
4322
4323         PR c++/15427
4324         * typeck.c (complete_type): Layout non-dependent array types, even
4325         in templates.
4326
4327         PR c++/15287
4328         * typeck.c (build_unary_op): Do not optimize "&x[y]" when in a
4329         template.
4330
4331 2004-05-22  Roger Sayle  <roger@eyesopen.com>
4332
4333         * name-lookup.c (check_for_out_of_scope_variable): Avoid ICE by
4334         returning when TREE_TYPE is error_mark_node.
4335         * typeck.c (require_complete_type): Return error_mark_node if
4336         value's type is an error_mark_node.
4337
4338 2004-05-20  Andrew Pinski  <pinskia@physics.uc.edu>
4339
4340         * optimize.c (calls_setjmp_r): Remove.
4341         (calls_setjmp_p): Remove.
4342         * cp-tree.c (calls_setjmp_p): Remove.
4343         * decl.c (finish_function): Do not call calls_setjmp_p.
4344
4345 2004-05-18  Zack Weinberg  <zack@codesourcery.com>
4346
4347         * decl.c (cp_finish_decl): Use mark_decl_referenced.
4348         * decl2.c (maybe_make_one_only): Likewise.
4349         * method.c (use_thunk): Likewise.
4350
4351 2004-05-18  Jason Merrill  <jason@redhat.com>
4352
4353         * class.c (build_base_path): Tidy a bit.
4354
4355 2004-05-14  Geoffrey Keating  <geoffk@apple.com>
4356
4357         * name-lookup.c (struct scope_binding): New.
4358         (EMPTY_SCOPE_BINDING): New.
4359         (lookup_using_namespace): Take a scope_binding instead of a
4360         cxx_binding.
4361         (qualified_lookup_using_namespace): Likewise.
4362         (cxx_binding_clear): Delete.
4363         (do_nonmember_using_decl): Use a scope_binding instead of a
4364         cxx_binding.
4365         (lookup_tag): Don't call select_decl.
4366         (ambiguous_decl): Don't return anything (and change callers to match).
4367         Take a scope_binding as the second parameter.
4368         (lookup_namespace_name): Use a scope_binding instead of a
4369         cxx_binding.
4370         (unqualified_namespace_lookup): Likewise.
4371         (lookup_qualified_name): Likewise.
4372         (select_decl): Take a scope_binding instead of a cxx_binding.
4373         Use macros rather than hand-coding tests for type-ness.
4374
4375 2004-05-13  Diego Novillo  <dnovillo@redhat.com>
4376
4377         * cp-gimplify.c: Rename from cp-simplify.c.
4378         * Make-lang.in, optimize.c: Update.
4379
4380 2004-05-13  Diego Novillo  <dnovillo@redhat.com>
4381
4382         Merge from tree-ssa-20020619-branch.  See
4383         ChangeLog.tree-ssa for details.
4384
4385         * Make-lang.in, call.c, class.c, cp-lang.c, cp-tree.def,
4386         cp-tree.h, cvt.c, decl.c, decl2.c, error.c, except.c,
4387         expr.c, init.c, name-lookup.h, optimize.c, parser.c,
4388         pt.c, rtti.c, semantics.c, tree.c, typeck.c, typeck2.c:
4389         Merged.
4390         * cp-mudflap.c: New file.
4391         * cp-simplify.c:: New file.
4392
4393 2004-05-03  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
4394
4395         PR c++/14389
4396         * decl2.c (check_classfn): For member templates, compare also the
4397         template parameters to match the declaration.
4398         * cp-tree.h: Adjust declaration of check_classfn.
4399         * decl.c (start_decl, grokfndecl): Adjust callers of check_classfn.
4400         * friend.c (do_friend): Likewise.
4401         * pt.c (tsubst_friend_function): Likewise.
4402
4403 2004-05-01  Zack Weinberg  <zack@codesourcery.com>
4404
4405         * decl.c (reshape_init): Do not apply TYPE_DOMAIN to a VECTOR_TYPE.
4406         Instead, dig into the representation type to find the array bound.
4407
4408 2004-04-30  Jason Merrill  <jason@redhat.com>
4409
4410         Refer to base members using COMPONENT_REFs where possible.
4411         * class.c (build_simple_base_path): New fn.
4412         (build_base_path): Use it for non-virtual base references.
4413         (layout_class_type): Change base fields to their real type
4414         after layout is done.
4415         * cp-tree.h (IS_FAKE_BASE_TYPE): New macro.
4416         * cp-lang.c (cxx_get_alias_set): Use it.
4417
4418 2004-04-30  Kazu Hirata  <kazu@cs.umass.edu>
4419
4420         * class.c, cp-tree.h, decl.c, decl2.c, pt.c, rtti.c: Fix
4421         comment typos.
4422
4423 2004-04-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
4424
4425         PR c++/15064
4426         * parser.c (cp_parser_postfix_expression): typeid operator cannot be
4427         used in integral constant expressions.
4428
4429 2004-04-22  Mark Mitchell  <mark@codesourcery.com>
4430
4431         * init.c (build_aggr_init): Fix accidental use of C99 construct in
4432         previous change.
4433
4434         * class.c (initialize_array): Don't set TREE_HAS_CONSTRUCTOR on
4435         braced initializer.
4436         * cp-tree.h (BRACE_ENCLOSED_INITIALIZER_P): New macro.
4437         * decl.c (reshape_init): Use it.
4438         * init.c (perform_member_init): Remove redundant condition.
4439         (build_aggr_init): Adjust to handle brace-enclosed initializers
4440         correctly.
4441         (expand_default_init): Use BRACE_ENCLOSED_INITIALIZER_P.
4442
4443         * parser.c (cp_parser_initializer_clause): Do not set
4444         TREE_HAS_CONSTRUCTOR on the initializer.
4445         * rtti.c (tinfo_base_init): Likewise.
4446         (generic_initializer): Likewise.
4447         (ptr_initializer): Likewise.
4448         (ptm_initializer): Likewise.
4449         (class_initializer): Likewise.
4450         (get_pseudo_ti_init): Likewise.
4451         * typeck2.c (digest_init): Use BRACE_ENCLOSED_INITIALIZER_P.
4452
4453 2004-04-22  Alan Modra  <amodra@bigpond.net.au>
4454
4455         * name-lookup.c (anonymous_namespace_name): Make static.
4456
4457 2004-04-19  Roger Sayle  <roger@eyesopen.com>
4458
4459         PR middle-end/14531
4460         * class.c (build_base_path): Call fold whilst building the NULL
4461         pointer check expression trees.
4462
4463 2004-04-15  Bryce McKinlay  <mckinlay@redhat.com>
4464
4465         * init.c (build_new_1): Don't use type size argument for Java
4466         _Jv_AllocObject call.
4467
4468 2004-04-09  Danny Smith  <dannysmith@users.sourceforge.net>
4469
4470         * method.c (make_alias_for_thunk): Remove preprocessor guard on
4471         declaration and definition.
4472
4473 2004-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
4474
4475         PR c++/14808
4476         * method.c (use_thunk): Test TARGET_USE_LOCAL_THUNK_ALIAS_P rather
4477         than ASM_OUTPUT_DEF.
4478
4479 2004-04-08  Jakub Jelinek  <jakub@redhat.com>
4480
4481         * decl2.c (mark_used): Don't segfault if cfun != NULL but
4482         current_function_decl == NULL.
4483
4484 2004-04-05  Nathan Sidwell  <nathan@codesourcery.com>
4485
4486         PR c++/3518
4487         * pt.c (check_cv_quals_for_unify): Ignore bogus CV quals at outer
4488         level.
4489
4490 2004-04-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4491
4492         * init.c (decl_constant_value): Don't look at DECL_INITIAL
4493         of PARM_DECL.
4494         * tree.c (bot_manip, build_min): Don't look at TREE_CONSTANT
4495         or TREE_SIDE_EFFECTS of a type.
4496
4497 2004-04-02  Nathan Sidwell  <nathan@codesourcery.com>
4498
4499         PR c++/14007
4500         * pt.c (check_cv_quals_for_unify): Correct logic for disallowed
4501         cv-qualifier unification.
4502         * tree.c (cp_build_qualified_type_real): Renable DR295 logic.
4503
4504 2004-04-02  Jan Hubicka  <jh@suse.cz>
4505
4506         * cp-lang. (LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Define.
4507         * cp-tree.h (cp_update_decl_after_saving): Declare.
4508         * tree.c (cp_update_decl_after_saving): Define.
4509
4510 2004-04-01  Mark Mitchell  <mark@codesourcery.com>
4511
4512         PR c++/14803
4513         * typeck.c (get_delta_difference): Call fold before returning the
4514         value.
4515
4516 2004-04-01  Richard Henderson  <rth@redhat.com>
4517
4518         PR c++/14804
4519         * decl.c (cp_finish_decl): Preserve TREE_READONLY more often.
4520         * typeck2.c (split_nonconstant_init): Clear TREE_READONLY.
4521
4522 2004-04-01  Mark Mitchell  <mark@codesourcery.com>
4523
4524         PR c++/14810
4525         * name-lookup.c (maybe_push_cleanup_level): Robustify.
4526
4527 2004-04-01  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4528
4529         * class.c (VTT_TOP_LEVEL_P): Use unsigned_flag directly.
4530
4531 2004-03-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4532
4533         * call.c (joust): Use TYPE_UNSIGNED, not TREE_UNSIGNED.
4534         * class.c (check_bitfield_decl): Likewise.
4535         * cvt.c (type_promotes_to): Likewise.
4536         * decl.c (finish_enum): Likewise.
4537         * mangle.c (write_builtin_type): Likewise.
4538         * semantics.c (finish_switch_cond, finish_unary_op_expr): Likewise.
4539         * typeck.c (type_after_usual_arithmetic_conversions): Likewise.
4540         (build_binary_op): Likewise.
4541
4542 2004-03-31  Jan Hubicka  <jh@suse.cz>
4543
4544         * tree.h (optimize_function): Kill prototype.
4545         * optimize.c (dump_function, optimize_function, dump_finction): Kill.
4546         * semantics.c (expand_body): Kill.
4547
4548 2004-03-30  Mark Mitchell  <mark@codesourcery.com>
4549
4550         PR c++/14724
4551         * decl.c (start_decl_1): Do not decide whether or not to create a
4552         new cleanup level until after the type has been completed.
4553
4554         PR c++/14763
4555         * pt.c (tsubst_default_argument): Clear current_function_decl.
4556
4557 2004-03-30  Zack Weinberg  <zack@codesourcery.com>
4558
4559         * name-lookup.c, parser.c: Use new shorter form of GTY markers.
4560
4561 2004-03-29  Zack Weinberg  <zack@codesourcery.com>
4562
4563         * error.c (dump_function_name): If T's DECL_LANG_SPECIFIC
4564         is null, just print the literal name and return.
4565
4566 2004-03-25  Kazu Hirata  <kazu@cs.umass.edu>
4567
4568         * cxx-pretty-print.c: Fix comment typos.
4569
4570 2004-03-24  Kazu Hirata  <kazu@cs.umass.edu>
4571
4572         * cxx-pretty-print.c, cxx-pretty-print.h, decl.h, friend.c:
4573         Update copyright.
4574
4575 2004-03-23  Ziemowit Laski  <zlaski@apple.com>
4576
4577         * Make-lang.in (cp/mangle.o): Depend on $(TARGET_H).
4578         * mangle.c (write_type): Add call to 'mangle_fundamental_type'
4579         target hook.
4580
4581 2004-03-23  Zack Weinberg  <zack@codesourcery.com>
4582
4583         PR 12267, 12391, 12560, 13129, 14114, 14133
4584         * cp-lang.c (c_reset_state): Delete.
4585         (push_file_scope, pop_file_scope): New stubs.
4586         * parser.c (c_parse_file): Call sorry() here if called more than once.
4587
4588 2004-03-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4589
4590         * typeck.c (build_c_cast): Only look at TREE_CONSTANT_OVERFLOW
4591         for INTEGER_CST.
4592
4593 2004-03-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4594
4595         * cxx-pretty-print.c (pp_cxx_parameter_declaration_clause): Declare.
4596
4597 2004-03-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4598
4599         * error.c (enum pad): Remove.
4600         (dump_qualifiers): Likewise.
4601         (dump_type): Replace dump_qualifiers with pp_cxx_cv_qualifier_seq.
4602         (dump_aggr_type): Likewise.
4603         (dump_type_suffix): Likewise.
4604         (dump_simple_decl): Likewise.
4605         (dump_function_decl): Likewise.
4606         (cv_to_string): Likewise.
4607         (dump_type_prefix): Likewise.  Adjust return void.
4608         * cxx-pretty-print.c (pp_cxx_cv_qualifier_seq): Move to
4609         cxx_pretty_print.h.
4610         (pp_cxx_template_keyword_if_needed): Document.
4611         (pp_cxx_qualified_id): Document case FUNCTION_DECL.  Tidy.
4612         (pp_cxx_expression): Handle NON_DEPENDENT_EXPR and
4613         MUST_NOT_THROW_EXPR.
4614
4615 2004-03-21  Mark Mitchell  <mark@codesourcery.com>
4616
4617         PR c++/14616
4618         * decl.c (cp_finish_decl): Compute the size of arrays declared in
4619         templates, if their type is non-dependent.
4620
4621 2004-03-19  Mark Mitchell  <mark@codesourcery.com>
4622
4623         * call.c (build_op_delete_call): Do not forget the placement
4624         arguments when iterating through mutiple delete operators.
4625
4626         * cp-tree.h (svaed_scope): Remove last_parms.
4627         (NEW_DELETE_OPNAME_P): New macro.
4628         (last_function_parms): Remove.
4629         (do_friend): Adjust prototype.
4630         * decl.c (grokparms): Return the PARM_DECLs directly, rather than
4631         using last_function_parms.
4632         (grokfndecl): Take the PARM_DECLs as an argument, rather than
4633         using last_function_parms.
4634         (grokdeclarator): Adjust accordingly.  Do not form METHOD_TYPEs
4635         for class-specific operator new and operator delete.
4636         (grok_op_properties): Do not look for allocation functions with
4637         METHOD_TYPEs.
4638         (start_function): Use DECL_ARGUMENTS instead of
4639         last_function_parms.
4640         * decl.h (last_function_parms): Do not declare.
4641         * decl2.c (grokclassfn): Do not use last_function_parms.
4642         * friend.c (do_friend): Remove parmdecls parameter.
4643         * name-lookup.c (push_to_top_level): Do not save last_function_parms.
4644         (pop_from_top_level): Do not restore it.
4645         * pt.c (check_explicit_specialization): Do not adjust
4646         last_function_parms.
4647
4648         * name-lookup.c (do_local_using_decl): Create a local binding for
4649         types brought in via using declarations.
4650
4651         * name-lookup.c (lookup_arg_dependent): Handle block-scope
4652         function declarations correctly.
4653
4654         * semantics.c (finish_id_expression): Correct handling of
4655         conversion operators to dependent types.
4656
4657         * typeck.c (lookup_destructor): Allow the use of destructors from
4658         base classes.
4659
4660 2004-03-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4661
4662         * cxx-pretty-print.c (pp_cxx_unqualified_id): Use
4663         TEMPLATE_TYPE_PARM_INDEX instead of TYPE_FIELDS.
4664         * search.c (dfs_unuse_fields): Add two more TREE_CODES that mean
4665         the field is named TEMPLATE_TYPE_PARM_INDEX.
4666
4667 2004-03-19  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
4668
4669         PR c++/14545
4670         * parser.c (cp_parser_functional_cast): A cast to anything
4671         but integral or enumaration type is not an integral constant
4672         expression.
4673         * pt.c (value_dependent_expression_p): Handle cast expressions
4674         without operands (such as "int()").
4675
4676 2004-03-18  Mark Mitchell  <mark@codesourcery.com>
4677
4678         * semantics.c (finish_pseudo_destructor_expr): Allow differing
4679         cv-qualification between the type named by the
4680         pseudo-destructor-name and the object-type.
4681
4682         * search.c (accessible_base_p): Handle non-proper bases.
4683
4684         * name-lookup.c (do_nonmember_using_decl): If a using declaration
4685         refers to a single overloaded function, set the type of the
4686         function.
4687         * tree.c (lvalue_type): Simplify.
4688         * typeck.c (type_unknown_p): Do not assume all OVERLOADs have an
4689         unknown type.
4690         (build_unary_op): Handle OVERLOADs with known types.
4691
4692         * decl.c (duplicate_decls): Do not destroy DECL_ARGUMENTS for
4693         function templates.
4694
4695         * parser.c (cp_parser_postfix_expression): Handle the use of
4696         "typename" in non-dependent contexts.  Convert appropriately when
4697         when using a qualified name after "->" or ".".
4698
4699         * call.c (conditional_conversion): Honor the requirement that some
4700         conversions refer to the original object.
4701
4702 2004-03-18  Mark Mitchell  <mark@codesourcery.com>
4703
4704         * call.c (build_conditional_expr): Do not call force_rvalue for
4705         operands of void_type when the conditional expression itself has
4706         void type.
4707         * name-lookup.c (pushdecl): Don't consider a declaration of a
4708         function named "main" to be an overload of a type named "main".
4709         * parser.c (cp_parser_template_name): Perform name lookup when the
4710         template name is proceeded by "template" if the qualifying scope
4711         is non-dependent.
4712         * typeck.c (composite_pointer_type_r): Correctly handle
4713         pointer-to-member types.
4714         (build_const_cast): Likewise.
4715
4716 2004-03-18  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4717
4718         * cp-tree.def (TEMPLATE_TYPE_PARM, TYPEOF_TYPE): Update comments.
4719         * cp-tree.h (NEW_EXPR_USE_GLOBAL, DELETE_EXPR_USE_GLOBAL): Add check.
4720         (DELETE_EXPR_USE_VEC, COMPOUND_EXPR_OVERLOADED): Likewise.
4721         (KOENIG_LOOKUP_P, PTRMEM_OK_P, TEMPLATE_TYPE_PARM_INDEX): Likewise.
4722         (TYPENAME_TYPE_FULLNAME): Add check and use type.values.
4723         (TYPEOF_TYPE_EXPR): New macro.
4724         * class.c (finish_struct_bits): Use TYPE_VFIELD and TYPE_METHODS.
4725         * error.c (dump_type): Use TYPEOF_TYPE_EXPR.
4726         * pt.c (tsubst): Likewise.
4727         * semantics.c (finish_typeof): Likewise.
4728         * search.c (dfs_unuse_fields): Handle TYPENAME_TYPE, TYPEOF_TYPE,
4729         and TEMPLATE_TYPE_PARM.
4730         * typeck.c (comptypes): Use TYPE_ORIG_SIZE_TYPE, not TYPE_DOMAIN.
4731         (build_array_ref): Use TYPE_DOMAIN, not TYPE_VALUES.
4732
4733 2004-03-16  Mark Mitchell  <mark@codesourcery.com>
4734
4735         PR c++/14586
4736         * cp-tree.h (build_new_op): Change prototype.
4737         (build_x_binary_op): Likewise.
4738         * call.c (build_new_op): Add overloaded_p parameter.
4739         * decl2.c (grok_array_decl): Adjust call to build_new_op.
4740         * parser.c (cp_parser_binary_expression): Note that uses of
4741         overloaded operators prevents an expression from being considered
4742         an integral constant.
4743         * pt.c (tsubst_copy_and_build): Adjust calls to build_new_op and/or
4744         build_x_binary_op.
4745         * semantics.c (finish_call_expr): Likewise.
4746         * typeck.c (rationalize_conditional_expr): Likewise.
4747         (build_x_indirect_ref): Likewise.
4748         (build_x_binary_op): Likewise.
4749         (build_x_unary_op): Likewise.
4750         (build_x_compound_expr): Likewise.
4751         (build_modify_expr): Likewise.
4752         * typeck2.c (build_x_arrow): Likewise.
4753
4754 2004-03-15  Kazu Hirata  <kazu@cs.umass.edu>
4755
4756         * cp-lang.c, ptree.c: Update copyright.
4757
4758 2004-03-13  Mark Mitchell  <mark@codesourcery.com>
4759
4760         PR c++/14550
4761         * parser.c (cp_parser_non_integral_constant_expression): Encode
4762         more of the idiom that surrounded calls to this function within
4763         the function itself
4764         (cp_parser_primary_expression): Adjust accordingly.
4765         (cp_parser_postfix_expression): Likewise.
4766         (cp_parser_unary_expression): Likewise.
4767         (cp_parser_cast_expression): Likewise.
4768         (cp_parser_assignment_expression): Likewise.
4769         (cp_parser_expression): Likewise.
4770         (cp_parser_new_expression): Note that new-expressions are not
4771         allowed in integral constant expressions.
4772         (cp_parser_delete_expression): Likewise.
4773
4774 2004-03-12  Matt Austern  <austern@apple.com>
4775
4776         * decl2.c (maybe_make_one_only): Look at
4777         TARGET_EXPLICIT_INSTANTIATION_ONE_ONLY when deciding whether
4778         to make an explicit instantiation weak.
4779         * method.c (use_thunk): Make sure we call comdat_linkage
4780         when appropriate.
4781         * pt.c (do_type_instantiation): On systems where weak symbols
4782         don't go in a static archive's TOC, explicit instantiation of a
4783         class must imply *explicit* instantiation of its memeber.
4784
4785 2004-03-11  Kazu Hirata  <kazu@cs.umass.edu>
4786
4787         * call.c, cp-tree.h, pt.c: Fix comment typos.
4788
4789 2004-03-10  Mark Mitchell  <mark@codesourcery.com>
4790
4791         PR c++/14510
4792         * decl.c (xref_tag): Disregard non-type declarations when
4793         looking up a tagged type.
4794
4795 2004-03-09  Nathan Sidwell  <nathan@codesourcery.com>
4796
4797         PR c++/14397
4798         * call.c (convert_like_real): Build a const qualified temporary,
4799         when testing ctor access.
4800
4801 2004-03-09  Mark Mitchell  <mark@codesourcery.com>
4802
4803         * call.c (initialize_reference): Fix typo.
4804
4805 2004-03-09  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
4806
4807         PR c++/14409
4808         * pt.c (determine_specialization): For member templates, match also
4809         constness.
4810
4811         PR c++/14448
4812         * parser.c (cp_parser_initializer_clause): Fold initializer if it is
4813         non-dependent.
4814         * pt.c (tsubst_copy_and_build): Handle NOP_EXPRs.
4815
4816 2004-03-09  Mark Mitchell  <mark@codesourcery.com>
4817
4818         PR c++/14230
4819         * call.c (initialize_reference): Handle initializers that are
4820         class-member access expressions applies to rvalues.
4821
4822 2004-03-09  Mark Mitchell  <mark@codesourcery.com>
4823
4824         PR c++/14432
4825         * name-lookup.c (supplement_binding): Ignore functions that are
4826         marked DECL_ANTICIPATED.
4827
4828 2004-03-08  Mark Mitchell  <mark@codesourcery.com>
4829
4830         PR c++/14401
4831         * class.c (check_field_decls): Complain about non-static data
4832         members of reference type in unions.  Propagate
4833         CLASSTYPE_REF_FIELDS_NEED_INIT and
4834         CLASSTYPE_READONLY_FIELDS_NEED_INIT from the types of non-static
4835         data members.
4836         * init.c (perform_member_init): Complain about mbmers with const
4837         type that are not explicitly initialized.
4838
4839 2004-03-08  Mark Mitchell  <mark@codesourcery.com>
4840
4841         * class.c (check_methods): Don't use IDENTIFIER_ERROR_LOCUS.
4842         * cp-tree.h (DECL_INVALID_OVERRIDER_P): New macro.
4843         (lang_identifier): Remove implicit_decl and error_locus.
4844         (IDENTIFIER_IMPLICIT_DECL): Remove.
4845         (SET_IDENTIFIER_IMPLICTI_DECL): Likewise.
4846         (IDENTIFIER_ERROR_LOCUS): Likewise.
4847         (SET_IDENTIFIER_ERROR_LOCUS): Likewise.
4848         (TYPE_ASSEMBLER_NAME_STRING): Likewise.
4849         (TYPE_ASSEMBLER_NAME_LENGTH): Likewise.
4850         (implicitly_declare): Remove.
4851         * decl.c (warn_extern_redeclared_static): Remove check of
4852         IDENTIFIER_IMPLICIT_DECL.
4853         (duplicate_decls): Don't check IDENTIFIER_ERROR_LOCUS.
4854         (implicitly_declare): Remove.
4855         (grok_ctor_properties): Don't set IDENTIFIER_ERROR_LOCUS.
4856         (start_function): Don't check IDENTIFIER_IMPLICIT_DECL.
4857         (start_method): Don't check IDENTIFIER_ERROR_LOCUS.
4858         * lex.c (unqualified_name_lookup_error): Create a dummy VAR_DECL
4859         in the innermost scope, rather than at namespace scope.
4860         * name-lookup.c (push_local_binding): Give it external linkage.
4861         (pushdecl): Remove dead code.
4862         * name-lookup.h (push_local_binding): Declare it.
4863         * ptree.c (cxx_print_identifier): Don't print
4864         IDENTIFIER_IMPLICIT_DECL or IDENTIFIER_ERROR_LOCUS.
4865         * search.c (check_final_overrider): Use DECL_INVALID_OVERRIDER_P,
4866         not IDENTIFIER_ERROR_LOCUS.
4867         * typeck.c (build_function_call): Remove dead code.
4868
4869 2004-03-08  Jason Merrill  <jason@redhat.com>
4870
4871         PR c++/13170
4872         * decl.c (xref_tag): Remove attribute handling.
4873         * cp-tree.h: Adjust prototype.
4874         * decl.c, parser.c, rtti.c: Adjust callers.
4875         * parser.c (cp_parser_class_head): Pass back attributes in the
4876         class head.
4877         (cp_parser_class_specifier): Adjust.
4878
4879 2004-03-08  Matt Austern  <austern@apple.com>
4880
4881         PR debug/14079
4882         * name-lookup.c (add_decl_to_level): Add extern variables, as well
4883         as static, to static_decls array.
4884
4885 2004-03-05  Jason Merrill  <jason@redhat.com>
4886
4887         * tree.c (list_hash_pieces): s/TYPE_HASH/TREE_HASH/.
4888
4889 2004-03-04  Geoffrey Keating  <geoffk@apple.com>
4890
4891         * decl.c (grokfndecl): Update old incorrect comment.
4892         (grokvardecl): Diagnose C++ variables of type with no linkage.
4893
4894 2004-03-01  Mark Mitchell  <mark@codesourcery.com>
4895
4896         PR c++/14369
4897         * pt.c (build_non_dependent_expr): Do not create a
4898         NON_DEPENDENT_EXPR for a THROW_EXPR.
4899
4900 2004-03-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4901
4902         PR c++/14369
4903         * error.c (dump_expr): Handle THROW_EXPR.
4904
4905 2004-03-01  Mark Mitchell  <mark@codesourcery.com>
4906
4907         PR c++/14360
4908         * parser.c (cp_parser_postfix_expression): Do not perform Koenig
4909         lookup if ordinary name-lookup finds a non-function.
4910         * pt.c (tsubst_copy_and_build): Likewise.
4911
4912         PR c++/14361
4913         * parser.c (cp_parser_late_parsing_default_args): Check that there
4914         are no extra tokens after the end of the default-argument
4915         expression.
4916
4917 2004-03-01  Mark Mitchell  <mark@codesourcery.com>
4918
4919         PR c++/14324
4920         * lex.c (retrofit_lang_decl): Treat entities with no linkage as
4921         having C++ linkage for name-mangling purposes.
4922
4923         PR c++/14260
4924         * parser.c (cp_parser_direct_declarator): Recognize constructor
4925         declarators that use a template-id to name the class being
4926         constructed.
4927
4928         PR c++/14337
4929         * pt.c (tsubst_qualified_id): Handle dependent qualifying scopes.
4930         (tsubst_expr): Do not call tsubst_copy, even when
4931         processing_template_decl.
4932
4933 2004-03-01  Jeff Law  <law@redhat.com>
4934
4935         * init.c (build_vec_delete_1): Convert 2nd argument to NE_EXPR to
4936         the proper type.
4937
4938 2004-02-29  Mark Mitchell  <mark@codesourcery.com>
4939
4940         PR c++/14138
4941         * name-lookup.h (push_scope): Change prototype.
4942         * name-lookup.c (push_scope): Do not reenter the current class
4943         scope.
4944         * decl.c (grokfndecl): Check return code from push_scope before
4945         calling pop_scope.
4946         * decl2.c (check_classfn): Likewise.
4947         * parser.c (cp_parser_conversion_function_id): Likewise.
4948         (cp_parser_init_declarator): Likewise.
4949         (cp_parser_direct_declarator): Likewise.
4950         (cp_parser_class_specifier): Likewise.
4951         (cp_parser_class_head): Likewise.
4952         (cp_parser_lookup_name): Likewise.
4953         (cp_parser_constructor_declarator_p): Likewise.
4954         * pt.c (instantiate_class_template): Likewise.
4955         (resolve_typename_type): Likewise.
4956
4957 2004-02-29  Mark Mitchell  <mark@codesourcery.com>
4958
4959         PR c++/14267
4960         * typeck.c (build_modify_expr): Remove more of the cast-as-lvalue
4961         extension.
4962
4963         PR debug/12103
4964         * class.c (update_vtable_entry_for_fn): Do not go through
4965         covariance machinery if the type returned by an overrider is the
4966         same as the original.
4967
4968 2004-02-29  Kazu Hirata  <kazu@cs.umass.edu>
4969
4970         * call.c: Fix a comment typo.
4971
4972 2004-02-27  Ziemowit Laski  <zlaski@apple.com>
4973
4974         * tree.c (pod_type_p): Treat VECTOR_TYPEs as PODs.
4975
4976 2004-02-26  Mark Mitchell  <mark@codesourcery.com>
4977
4978         PR c++/14278
4979         * parser.c (cp_parser_parameter_declaration_list): Commit
4980         to fewer tentative parses.
4981
4982 2004-02-26  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
4983
4984         PR c++/14284
4985         * pt.c (dependent_type_p_r): A template template parameter is a
4986         dependent type.
4987
4988 2004-02-26  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
4989
4990         PR c++/14246
4991         * mangle.c (write_template_arg_literal): Don't rely on identity for
4992         boolean constants.
4993
4994 2004-02-24  Jason Merrill  <jason@redhat.com>
4995
4996         * tree.c (build_exception_variant): Use check_qualified_type.
4997
4998 2004-02-23  Zack Weinberg  <zack@codesourcery.com>
4999             Kazu Hirata  <kazu@cs.umass.edu>
5000
5001         * decl.c (cxx_init_decl_processing): Don't check
5002         flag_writable_strings.
5003
5004 2004-02-23  Andrew Pinski  <pinskia@physics.uc.edu>
5005
5006         PR c++/14156
5007         * typeck.c (maybe_warn_about_returning_address_of_location):
5008         Change check for VAR_DECL to use DECL_P instead.
5009
5010 2004-02-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5011
5012         PR c++/14250
5013         * cvt.c (build_expr_type_conversion): Type must be complete before
5014         looking up for conversions.
5015
5016 2004-02-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5017
5018         PR c++/14143
5019         * name-lookup.c (arg_assoc_class): Don't look into template
5020         arguments if it is not a primary template.
5021
5022 2004-02-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5023
5024         PR c++/12007
5025         * method.c (use_thunk): Always clone function argument tree.
5026
5027 2004-02-20  Mark Mitchell  <mark@codesourcery.com>
5028
5029         PR c++/14199
5030         * pt.c (tsubst_copy): Call mark_used for a PARM_DECL.
5031
5032         PR c++/14173
5033         * semantics.c (begin_class_definition): Set TYPE_PACKED correctly
5034         for all type variants.
5035
5036 2004-02-19  Mark Mitchell  <mark@codesourcery.com>
5037
5038         PR c++/13927
5039         * decl.c (duplicate_decls): Return error_mark_node for invalid
5040         redeclarations.
5041         * name-lookup.c (push_namespace): Ignore the return value from
5042         pushdecl.
5043         * pt.c (push_template_decl_real): Robustify.
5044
5045         PR c++/14186
5046         * name-lookup.c (push_class_level_binding): Do not complain about
5047         adding a binding for a member whose name is the same as the
5048         enclosing class if the member is located in a base class of the
5049         current class.
5050
5051 2004-02-19  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5052
5053         PR c++/14181
5054         * parser.c (cp_parser_new_expression): Parse an ill-formed
5055         direct-new-declarator after a parenthesized type-id to emit good
5056         diagnostic.
5057
5058 2004-02-18  Kazu Hirata  <kazu@cs.umass.edu>
5059
5060         * cp-tree.def, cvt.c: Update copyright.
5061
5062 2004-02-17  Mark Mitchell  <mark@codesourcery.com>
5063
5064         PR c++/11326
5065         * cp-tree.h (abi_version_at_least): Remove.
5066         * mangle.c: Include flags.h.
5067
5068 2004-02-15  Mark Mitchell  <mark@codesourcery.com>
5069
5070         PR c++/13971
5071         * call.c (build_conditional_expr): Handle conversions between
5072         class types which result in differently cv-qualified type
5073         variants.
5074
5075         PR c++/14086
5076         * class.c (delete_duplicate_fields_1): Remove.
5077         (delete_duplicate_fields): Likewise.
5078         (finish_struct_anon): Remove check for members with the same name
5079         as their enclosing class.
5080         (check_field_decls): Do not call duplicate_fields.
5081         * decl.c (grokdeclarator): Remove check for static data members
5082         with the same name as their enclosing class.
5083         * name-lookup.c (push_class_level_binding): Check for members with
5084         the same name as their enclosing class.
5085
5086 2004-02-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5087
5088         PR c++/14085
5089         * error.c (dump_decl): Handle TEMPLATE_TYPE_PARM.
5090
5091 2004-02-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5092
5093         PR c++/13635
5094         * pt.c (push_template_decl_real): Make sure DECL_TI_ARGS of DECL
5095         has full set of arguments.
5096
5097 2004-02-13  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5098
5099         PR c++/13927
5100         * error.c (dump_decl) <ALIAS_DECL>: Dump as simple declarations.
5101
5102 2004-02-13  Mark Mitchell  <mark@codesourcery.com>
5103
5104         PR c++/14122
5105         * cp-tree.h (delete_sanity): Change prototype.
5106         * decl2.c (delete_sanity): Make doing_vec a bool, not an int.
5107         Remove dead code.  Adjust code to warn about deleting an array.
5108         * typekc.c (decay_conversion): Use build_address and build_nop.
5109
5110         PR c++/14108
5111         * search.c (accessible_p): Do not check access in thunks.
5112
5113         PR c++/14083
5114         * call.c (build_conditional_expr): Call force_rvalue on the
5115         non-void operand in the case that one result is a throw-expression
5116         and the other is not.
5117
5118 2004-02-13  Ian Lance Taylor  <ian@wasabisystems.com>
5119
5120         PR c++/9851
5121         * parser.c (cp_parser_pseudo_destructor_name): Check for errors on
5122         the type name and look ahead for ::~, and bail out early with a
5123         better error message if the parse is going to fail.
5124
5125 2004-02-12  Mark Mitchell  <mark@codesourcery.com>
5126
5127         * call.c (conversion_kind): New type.
5128         (conversion_rank): Likewise.
5129         (conversion): Likewise.
5130         (CONVERSION_RANK): New macro.
5131         (conversion_obstack): New variable.
5132         (obstack_initialized): Likewise.
5133         (z_candidate): Change type of convs and second_conv.
5134         (candidate_warning): New type.
5135         (IDENTITY_RANK): Remove.
5136         (EXACT_RANK): Likewise.
5137         (PROMO_RANK): Likewise.
5138         (STD_RANK): Likewise.
5139         (PBOOL_RANK): Likewise.
5140         (USER_RANK): Likewise.
5141         (ELLIPSIS_RANK): Likewise.
5142         (BAD_RANK): Likewise.
5143         (ICS_RANK): Likewise.
5144         (ICS_STD_RANK): Likewise.
5145         (ICS_USER_FLAG): Likewise.
5146         (ICS_ELLIPSIS_FLAG): Likewise.
5147         (ICS_THIS_FLAG): Likewise.
5148         (ICS_BAD_FLAG): Likewise.
5149         (NEED_TEMPORARY_P): Likewise.
5150         (CHECK_COPY_CONSTRUCTOR_P): Likewise.
5151         (USER_CONV_CAND): Likewise.
5152         (USER_CONV_FN): Likewise.
5153         (conversion_obstack_alloc): New function.
5154         (alloc_conversion): Likewise.
5155         (validate_conversion_obstack): Likewise.
5156         (alloc_conversions): Likewise.
5157         (build_conv): Adjust to deal with new conversion data structures.
5158         (build_identity_conv): New function.
5159         (build_ambiguous_conv): Likewise.
5160         (standard_conversion): Adjust to deal with new conversion data
5161         structures.
5162         (convert_class_to_reference): Likewise.
5163         (direct_reference_binding): Likewise.
5164         (reference_binding): Likewise.
5165         (implicit_conversion): Likewise.
5166         (add_candidate): Likewise.
5167         (add_function_candidate): Likewise.
5168         (add_conv_candidate): Likewise.
5169         (build_builtin_candidate): Likewise.
5170         (print_z_candidate): Likewise.
5171         (merge_conversion_sequences): Likewise.
5172         (build_user_type_conversion_1): Likewise.
5173         (build_user_type_conversion): Likewise.
5174         (build_new_function_call): Likewise.
5175         (build_object_call): Likewise.
5176         (conditional_conversion): Likewise.
5177         (build_conditional_expr): Likewise.
5178         (build_new_op): Likewise.
5179         (build_op_delete_call): Likewise.
5180         (convert_like_real): Likewise.
5181         (build_over_call): Likewise.
5182         (build_new_method_call): Likewise.
5183         (is_subseq): Likewise.
5184         (maybe_handle_implicit_object): Likewise.
5185         (maybe_handle_ref_bind): Likewise.
5186         (compare_ics): Likewise.
5187         (source_type): Likewise.
5188         (add_warning): Likewise.
5189         (joust): Likewise.
5190         (can_convert_arg): Likewise.
5191         (can_convert_arg_bad): Likewise.
5192         (perform_implicit_conversion): Likewise.
5193         (perform_direct_initialization_if_possible): Likewise.
5194         (initialize_reference): Likewise.
5195         * cp-lang.c (cp_tree_size): Do not handle WRAPPER.
5196         * cp-tree.def (WRAPPER): Likewise.
5197         (IDENTITY_CONV): Remove.
5198         (LVALUE_CONV): Likewise.
5199         (QUAL_CONV): Likewise.
5200         (STD_CONV): Likewise.
5201         (PTR_CONV): Likewise.
5202         (PMEM_CONV): Likewise.
5203         (BASE_CONV): Likewise.
5204         (REF_BIND): Likewise.
5205         (USER_CONV): Likewise.
5206         (AMBIG_CONV): Likewise.
5207         (RVALUE_CONV): Likewise.
5208         * cp-tree.h (tree_wrapper): Remove.
5209         (WRAPPER_ZC): Remove.
5210         (lang_tree_node): Remove wrapper.
5211         (LOOKUP_SPECULATIVELY): Remove.
5212         (build_op_delete_call): Adjust prototype.
5213         (validate_conversion_obstack): Declare.
5214         (build_zc_wrapper): Remove.
5215         * cvt.c (convert_to_reference): Remove dead code.
5216         (ocp_convert): Likewise.
5217         * decl.c (redeclaration_error_message): Correct handling of
5218         templates.
5219         (finish_destructor_body): Do not use LOOKUP_SPECULATIVELY.
5220         (cp_tree_node_structure): Remove WRAPPER case.
5221         * decl2.c (finish_file): Call validate_conversion_obstack.
5222         * init.c (build_new_1): Remove use of LOOKUP_SPECULATIVELY.
5223         (build_op_delete_call): Likewise.
5224         (build_x_delete): Likewise.
5225         (build_delete): Adjust call to build_op_delete_call.
5226         * pt.c (tsubst_friend_declaration): Adjust code to determine
5227         whether or not a friend template is a definition.
5228         (tsubst_decl): Clear DECL_INITIAL for new FUNCTION_DECLs.
5229         * tree.c (build_zc_wrapper): Remove.
5230
5231 2004-02-12  Zack Weinberg  <zack@codesourcery.com>
5232
5233         * cp-lang.c: Don't define LANG_HOOKS_BUILTIN_TYPE_DECLS.
5234         * cp-tree.h: Don't declare cxx_builtin_type_decls.
5235         * decl.c (builtin_type_decls, cxx_builtin_type_decls): Delete.
5236         (record_builtin_type): Call debug_hooks->type_decl on the TYPE_DECL.
5237
5238 2004-02-10  Mark Mitchell  <mark@codesourcery.com>
5239
5240         * typeck.c (lookup_destructor): Fix typo in error message.
5241
5242 2004-02-09  Kazu Hirata  <kazu@cs.umass.edu>
5243
5244         * call.c, parser.c, tree.c: Fix comment typos.
5245
5246 2004-02-07  Zack Weinberg  <zack@codesourcery.com>
5247
5248         Bug 13856
5249         * optimize.c (maybe_clone_body): Don't update DECL_ESTIMATED_INSNS.
5250         * decl.c (duplicate_decls, start_function): Likewise.
5251
5252 2004-02-07  Zack Weinberg  <zack@codesourcery.com>
5253
5254         * name-lookup.c (pushdecl): Issue shadow warnings directly.
5255         * parser.c (free_parser_stacks): Delete.
5256
5257 2004-02-07  Kazu Hirata  <kazu@cs.umass.edu>
5258
5259         * rtti.c: Update copyright.
5260
5261 2004-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5262
5263         PR c++/14033
5264         * decl.c (require_complete_types_for_parms): Do not insert
5265         error_mark_node in the parameter list.
5266
5267 2004-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5268
5269         PR c++/14028
5270         * parser.c (cp_parser_enclosed_template_argument_list): Emit straight
5271         error when terminator can not be found.
5272
5273 2004-02-05  Kelley Cook  <kcook@gcc.gnu.org>
5274
5275         Make-lang.in (po-generated):  Delete.
5276
5277 2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>
5278
5279         * call.c (type_passed_as): Replace PROMOTE_PROTOTYPES with
5280         targetm.calls.promote_prototypes.
5281
5282 2004-02-05  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5283
5284         PR middle-end/13750
5285         Revert:
5286         2004-01-15  Geoffrey Keating  <geoffk@apple.com>
5287         PR pch/13361
5288         * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
5289         (handle_pragma_implementation): Likewise.
5290
5291 2004-02-05  Mark Mitchell  <mark@codesourcery.com>
5292
5293         PR c++/13714
5294         * typeck.c (lookup_destructor): Tweak error message.
5295
5296 2004-02-05  Jan Hubicka  <jh@suse.cz>
5297
5298         * tree.c (cp_cannot_inline_tree_fn):  Allow inlining of comdat
5299         functions.
5300
5301 2004-02-05  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5302
5303         PR c++/14008
5304         * parser.c (cp_parser_diagnose_invalid_typename): Removed parsing
5305         code, only emits the diagnostic now. Added lookup of the identifier
5306         and support for qualified ids.
5307         (cp_parser_parse_and_diagnose_invalid_type_name): New function.
5308         Parse an (invalid) type name as id-expression within a declarator.
5309         (cp_parser_simple_declaration): Use it.
5310         (cp_parser_member_declaration): Likewise.
5311         (cp_parser_make_typename_type): New function. Handle errors through
5312         cp_parser_diagnose_invalid_typename.
5313         (cp_parser_elaborated_type_specifier): Use it.
5314
5315 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
5316
5317         PR c++/13932
5318         * call.c (convert_like_real): Use "converting" rather than
5319         "argument" as the descriptive keyword to
5320         dubious_conversion_warnings.
5321         * typeck.c (convert_for_assignment): Do not call
5322         dubious_conversion_warnings.
5323
5324 2004-02-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5325
5326         PR c++/13086
5327         * init.c (build_delete): Emit a more informative error message in
5328         case of an incomplete type, and on the correct source line.
5329
5330 2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>
5331
5332         * error.c, search.c: Update copyright.
5333
5334 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
5335
5336         PR c++/9941
5337         * rtti.c (tinfo_base_init): Use import_export_tinfo to decide the
5338         linkage for the typeinfo name string.
5339
5340 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
5341
5342         PR c++/13969
5343         * cp-tree.h (fold_non_dependent_expr): New function.
5344         * parser.c (cp_parser_fold_non_dependent_expr): Remove.
5345         (cp_parser_template_argument): Use fold_non_dependent_expr.
5346         (cp_parser_direct_declarator): Likewise.
5347         * pt.c (fold_non_dependent_expr): New function.
5348         (convert_nontype_argument): Use it.
5349         (tsubst_qualified_id): Simplify.
5350         (tsubst_copy_and_build): Likewise.
5351
5352 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
5353
5354         * decl.c (cxx_push_function_context): Do not set
5355         current_function_is_thunk.
5356         * method.c (use_thunk): Set CALL_FROM_THUNK on the call to the
5357         actual function.
5358
5359 2004-02-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5360
5361         PR c++/13997
5362         * pt.c (more_specialized_class): Increase processing_template_decl
5363         while partial ordering.
5364
5365 2004-02-03  Mark Mitchell  <mark@codesourcery.com>
5366
5367         PR c++/13925
5368         * decl.c (start_function): Do not call pushdecl for any
5369         instantiation or specialization of a primary template.
5370
5371 2004-02-03  Mark Mitchell  <mark@codesourcery.com>
5372
5373         PR c++/13950
5374         * parser.c (cp_parser_class_name): Robustify.
5375
5376         PR c++/13970
5377         * parser.c (cp_parser_cache_group): Do not consume the EOF token.
5378
5379         PR c++/14002
5380         * semantics.c (finish_id_expression): Do not return an
5381         IDENTIFIER_NODE when lookup finds a PARM_DECL.
5382
5383 2004-02-03  Mark Mitchell  <mark@codesourcery.com>
5384
5385         PR c++/13978
5386         * pt.c (build_non_dependent_expr): Do not build
5387         NON_DEPENDENT_EXPRs for FUNCTION_DECLs or TEMPLATE_DECLs.
5388
5389         PR c++/13968
5390         * semantics.c (finish_id_expression): Do not return an
5391         IDENTIFIER_NODE when lookup finds a VAR_DECL.
5392
5393         PR c++/13975
5394         * parser.c (cp_parser_simple_declaration): When skipping to the
5395         end of the statement swallow the terminating semicolon.
5396
5397 2004-02-02  Mark Mitchell  <mark@codesourcery.com>
5398
5399         PR c++/13113
5400         * init.c (build_offset_ref): Improve error recovery for invalid
5401         uses of non-static member functions.
5402
5403         PR c++/13854
5404         * cp-tree.h (cp_build_type_attribute_variant): New function.
5405         * class.c (build_clone): Use cp_build_type_attribute_variant.
5406         * decl.c (duplicate_decls): Likewise.
5407         * pt.c (copy_default_args_to_explicit_spec): Likewise.
5408         (tsubst_function_type): Likewise.
5409         * tree.c (build_exception_variant): Check attributes before
5410         concluding that two types are the same.
5411         (cp_build_type-attribute_variant): New method.
5412         * typeck.c (merge_types): Use cp_build_type_attribute_variant.
5413
5414         PR c++/13907
5415         * call.c (convert_class_to_reference): Keep better track of
5416         pedantically invalid user-defined conversions.
5417
5418 2004-02-01  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5419
5420         PR c++/13957
5421         * pt.c (tsubst_qualified_id): Improved error message when a type
5422         is expected but not found.
5423
5424 2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>
5425
5426         * class.c: Fix comment typos.
5427         * decl.c: Likewise.
5428         * error.c: Likewise.
5429         * parser.c: Likewise.
5430         * pt.c: Likewise.
5431         * search.c: Likewise.
5432         * typeck.c: Likewise.
5433
5434 2004-01-30  Richard Henderson  <rth@redhat.com>
5435
5436         PR c++/13693
5437         * method.c (use_thunk): Don't force_target_expr for void thunks.
5438         * tree.c (build_target_expr_with_type): Assert non-void type.
5439         (force_target_expr): Likewise.
5440
5441 2004-01-30  Michael Matz  <matz@suse.de>
5442
5443         * parser.c (cp_parser_labeled_statement): Accept case ranges.
5444
5445 2004-01-30  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5446
5447         DR206
5448         PR c++/13813
5449         * decl.c (grokdeclarator): Check immediatly type completeness for
5450         non-dependent types.
5451
5452 2004-01-30  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5453
5454         PR c++/13683
5455         * call.c (convert_arg_to_ellipsis): Don't emit a warning if within
5456         a sizeof expression.block
5457
5458 2004-01-29  Mark Mitchell  <mark@codesourcery.com>
5459
5460         PR c++/13883
5461         * mangle.c (write_encoding): Correct encoding of member template
5462         constructors.
5463
5464 2004-01-28  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5465
5466         * parser.c (cp_parser_template_id): Parse tentatively `[:' after a
5467         template name as it was `<::' (digraph typo).
5468         (cp_parser_nth_token_starts_template_argument_list_p): New function.
5469         (cp_parser_id_expression): Use it.
5470         (cp_parser_nested_name_specifier_opt): Likewise.
5471         (cp_parser_template_name): Likewise.
5472         (cp_parser_class_name): Likewise.
5473         (cp_lexer_get_preprocessor_token): Use c_lex_with_flags.
5474
5475 2004-01-28  Mark Mitchell  <mark@codesourcery.com>
5476
5477         PR c++/13791
5478         * typeck.c (merge_types): Do not merge attributes into
5479         TYPENAME_TYPEs.
5480
5481         PR c++/13736
5482         * parser.c (cp_parser_direct_declarator): Do not prevent
5483         backtracking inside a parenthesized declarator.
5484         (cp_parser_parameter_declaration): Fix typo in comment.
5485
5486 2004-01-28  Jan Hubicka  <jh@suse.cz>
5487
5488         * semantics.c (expand_body)  Do emit_associated_thunks before
5489         expansion.
5490
5491 2004-01-27  Devang Patel  <dpatel@apple.com>
5492
5493         * name-lookup.c: Include "debug.h"
5494         (do_namespace_alias): Invoke debug_hooks to emit debug info
5495         for namespace alias.
5496         (do_local_using_decl): Invoke debug_hooks to emit debug info
5497         for using decl.
5498         (do_class_using_decl): Same.
5499         (do_toplevel_using_decl): Same.
5500         (do_using_directive): Same.
5501         (cp_emit_debug_info_for_using): New function.
5502         * Make-lang.in (cp/parser.o): Depend on debug.h
5503         (cp/name-lookup.o): Same.
5504
5505 2004-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5506
5507         * cp-tree.h (language_function, lang_type_header): Use
5508         BOOL_BITFIELD.
5509         * name-lookup.h (cp_binding_level): Likewise.
5510
5511 2004-01-26  Mark Mitchell  <mark@codesourcery.com>
5512
5513         PR c++/13663
5514         * semantics.c (finish_for_expr): Check for unresolved overloaded
5515         functions.
5516
5517         * class.c (add_method): Just check processing_template_decl to
5518         determine whether or not we are within a template.
5519         * decl2.c (maybe_retrofit_in_chrg): Likewise.
5520         * init.c (decl_constant_value): Check the type of the declaration,
5521         not TREE_READONLY.
5522         * name-lookup.c (maybe_push_to_top_level): Rename to ...
5523         (push_to_top_level): ... this.
5524         * name-lookup.h (maybe_push_to_top_level): Do not declare it.
5525         * pt.c (push_template_decl_real): Reorder condition for speed.
5526         (convert_template_argument): Use dependency-checking functions in
5527         place of uses_template_parms.
5528         (lookup_template_class): Avoid calling uses_template_parms more
5529         than once.
5530         (uses_template_parms): Reimplement, using dependency-checking
5531         functions.
5532         (instantiate_class_template): Use push_to_top_level, not
5533         maybe_push_to_top_level.
5534         (type_unification_real): Simplify.
5535         (type_dependent_expression_p): Handle OFFSET_REFs and
5536         TEMPLATE_DECLs.
5537         (any_dependent_template_arguments_p): Handle multiple levels of
5538         template argument.
5539         * semantics.c (expand_or_defer_fn): Do not check
5540         uses_template_parms for template instantiations.
5541         * typeck.c (comptypes): Avoid calling cp_type_quals.
5542
5543 2004-01-25  Mark Mitchell  <mark@codesourcery.com>
5544
5545         PR c++/13833
5546         * call.c (build_over_call): Do not convert arguments when
5547         processing a template.
5548         * pt.c (build_non_dependent_expr): Do not build a
5549         NON_DEPENDENT_EXPR for arithmetic constants.
5550
5551 2004-01-25  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5552
5553         PR c++/13810
5554         * parser.c (cp_parser_type_parameter): When cp_parser_id_expression
5555         returns a TYPE_DECL. no further lookup is required.
5556         * semantics.c (check_template_template_default_arg): A TYPE_DECL
5557         is invalid. Rework to give better diagnostics.
5558
5559 2004-01-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5560
5561         PR c++/13797
5562         * pt.c (instantiate_class_template): Add an error_mark_node
5563         check.
5564         (tsubst_decl) <TEMPLATE_DECL case>: Likewise.
5565
5566 2004-01-23  Andrew Pinski  <pinskia@physics.uc.edu>
5567
5568         PR c++/13701
5569         * decl.c (finish_function): Move the call to
5570         finish_fname_decls below the call to
5571         finish_eh_spec_block.
5572
5573 2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>
5574
5575         * optimize.c, typeck2.c: Update copyright.
5576
5577 2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>
5578
5579         * Make-lang.in, call.c, class.c, decl2.c, except.c, expr.c,
5580         init.c, mangle.c, typeck.c: Update copyright.
5581
5582 2004-01-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
5583
5584         * parser.c (cp_parser_class_specifier): Prevent garbage collection.
5585
5586 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
5587
5588         * Make-lang.in: Replace $(docdir) with doc.
5589         (c++.info, c++.srcinfo): Dummy entry.
5590         (c++.man, c++.srcman): New rules.
5591         (c++.install-man): Revamp rule.
5592
5593 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
5594
5595         * Make-lang.in (CXX_INSTALL_NAME, GXX_INSTALL_NAME,
5596         CXX_TARGET_INSTALL_NAME, GXX_TARGET_INSTALL_NAME): Define via a
5597         immediate $(shell) instead of deferred backquote.
5598
5599 2004-01-19  Mark Mitchell  <mark@codesourcery.com>
5600
5601         PR c++/13651
5602         * parser.c (cp_parser_postfix_expression): When encountering
5603         incomplete type on left-hand side of "->" or ".", treat the entire
5604         expression as erroneous.
5605
5606         PR c++/13592
5607         * call.c (build_field_call): Remove.
5608         (n_build_method_call): Likewise.
5609         (build_method_call): Likewise.
5610         (build_new_method_call): Do not call build_field_call.
5611         * class.c (n_build_method_call): Remove.
5612         (print_class_statistics): Do not print it.
5613         * cp-tree.h (build_method_call): Remove declaration.
5614         (finish_object_call_expr): Likewise.
5615         (build_new_1): Do not use build_method_call.
5616         * parser.c (cp_parser_postfix_expression): Use finish_call_expr
5617         when the function appearing on the right-hand-side of "." or "->"
5618         is not actually a function.
5619         * pt.c (tsubst_copy_and_build): Likewise.
5620         * semantics.c (finish_object_call_expr): Remove.
5621
5622 2004-01-18  Mark Mitchell  <mark@codesourcery.com>
5623
5624         PR c++/13710
5625         * pt.c (tsubst): Use finish_typeof.
5626
5627 2004-01-18  Jason Merrill  <jason@redhat.com>
5628
5629         PR c++/11725
5630         * except.c (build_throw): In a template, set
5631         current_function_returns_abnormally.
5632
5633 2004-01-17  Fred Fish  <fnf@intrinsity.com>
5634
5635         PR c++/11895
5636         * decl.c (reshape_init): Handle VECTOR_TYPE like ARRAY_TYPE,
5637         except don't call array_type_nelts() with a VECTOR_TYPE.
5638
5639 2004-01-16  Jan Hubicka  <jh@suse.cz>
5640
5641         * mangle.c (write_mangled_name): Remove inline modifier.
5642
5643 2004-01-16  Mark Mitchell  <mark@codesourcery.com>
5644
5645         PR c++/13574
5646         * decl.c (compute_array_index_type): Fix grammar in comment.
5647         * init.c (build_zero_init): Handle zero-sized arrays correctly.
5648
5649         PR c++/13178
5650         * call.c (name_as_c_string): Print conversion operator names
5651         correctly.
5652
5653         PR c++/13478
5654         * call.c (initialize_reference): Pass -1 for inner parameter to
5655         convert_like_real.
5656
5657 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5658
5659         PR c++/13407
5660         * parser.c (cp_parser_base_specifier): Check for an invalid
5661         keyword `typename' and emit an user-friendly error message.
5662
5663 2004-01-15  Geoffrey Keating  <geoffk@apple.com>
5664
5665         PR pch/13361
5666         * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
5667         (handle_pragma_implementation): Likewise.
5668
5669 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5670
5671         PR c++/9259
5672         * typeck.c (build_class_member_access_expr): Allow to access members
5673         of the currently open class.
5674         (finish_class_member_access_expr): Likewise.
5675
5676 2004-01-15  Alexandre Oliva  <aoliva@redhat.com>
5677
5678         PR c++/13659
5679         * name-lookup.c (validate_nonmember_using_decl): Take scope and
5680         name by value, instead of computing them.
5681         (do_local_using_decl, do_toplevel_using_decl): Add scope and name
5682         arguments.  Pass them to validate_nonmember_using_decl.
5683         * name-lookup.h (do_local_using_decl): Adjust.
5684         (do_toplevel_using_decl): Likewise.
5685         * parser.c (cp_parser_using_declaration): Likewise.
5686         * pt.c (tsubst_expr): Likewise.
5687
5688 2004-01-15  Alexandre Oliva  <aoliva@redhat.com>
5689
5690         PR c++/13594
5691         PR c++/13658
5692         * name-lookup.c (qualified_lookup_using_namespace): Search
5693         strongly-associated namespaces first, and only then try other
5694         namespaces.
5695
5696 2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>
5697
5698         * Make-lang.in (c++.srcextra): Dummy entry.
5699
5700 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5701
5702         PR c++/8856
5703         * parser.c (cp_parser_template_name): Don't try to parse a
5704         conversion-function-id, as it cannot be a template-name.
5705         (cp_parser_simple_type_specifier): Check for invalid template-ids
5706         even after a built-in type.
5707
5708 2004-01-14  Jan Hubicka  <jh@suse.cz>
5709
5710         PR c++/12850
5711         * pt.c (instantiate_decl):  Do not increase function_depth.
5712
5713 2004-01-14  Danny Smith  <dannysmith@users,sourceforge.net>
5714
5715         PR c++/9021
5716         PR c++/11005
5717         * parser.c (cp_parser_elaborated_type_specifier): Warn about
5718         attributes and discard.
5719         * decl.c (xref_tag): Don't overwite existing attributes with
5720         NULL_TREE.
5721
5722 2004-01-14  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5723
5724         PR c++/12335
5725         * parser.c (cp_parser_lookup_name): Return error_mark_node if there
5726         is no destructor while looking up a BIT_NOT_EXPR.
5727
5728 2004-01-13  Ian Lance Taylor  <ian@wasabisystems.com>
5729
5730         * cxxfilt.c: Remove unused file.
5731
5732 2004-01-14  Jan Hubicka  <jh@suse.cz>
5733
5734         Partial fix to PR c++/12850
5735         * decl2.c (mark_used): Do not proactively instantiate templates
5736         when compiling in unit-at-a-time or not optimizing.
5737         * optimize.c (maybe_clone_body): Do not increase function depth.
5738
5739 2004-01-13  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5740
5741         PR c++/13474
5742         * pt.c (tsubst) <INTEGER_TYPE>: Remove obsolete array index tweaking.
5743
5744 2004-01-12  Steven Bosscher  <stevenb@suse.de>
5745
5746         PR c++/13558
5747         * parser.c (cp_parser_member_declaration): Any non-type is also
5748         not a class or a function.
5749
5750 2004-01-12  Jason Merrill  <jason@redhat.com>
5751
5752         PR c++/12815
5753         * class.c (build_base_path): Do not mark vtable references as
5754         TREE_CONSTANT.
5755         (build_vtbl_ref_1): Likewise.
5756
5757 2004-01-12  Richard Henderson  <rth@redhat.com>
5758
5759         PR opt/10776
5760         * typeck2.c (split_nonconstant_init_1, split_nonconstant_init): New.
5761         (store_init_value): Use it.
5762         * decl.c (check_initializer): Expect full initialization code
5763         from store_init_value.
5764         * init.c (expand_aggr_init_1): Likewise.
5765         * decl2.c (maybe_emit_vtables): Abort if runtime init needed.
5766
5767 2004-01-12  Mark Mitchell  <mark@codesourcery.com>
5768
5769         * class.c (layout_class_type): For non-POD class types, also copy
5770         the DECL_SIZE and DECL_MODE of fields to the base class type.
5771
5772 2004-01-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5773
5774         PR c++/13289
5775         * pt.c (instantiate_decl): Set DECL_TEMPLATE_INSTANTIATED before
5776         calling regenerate_decl_from_template.
5777
5778 2004-01-12  Scott Brumbaugh  <scottb.lists@verizon.net>
5779
5780         PR c++/4100
5781         * parser.c (cp_parser_decl_specifier_seq): Add check for a friend
5782         decl-specifier occurring along with a class definition.
5783
5784 2004-01-12  Ian Lance Taylor  <ian@wasabisystems.com>
5785
5786         * parser.c (cp_parser_decl_specifier_seq): Add parenthetical
5787         clauses to comments describing declares_class_or_enum.
5788         (cp_parser_type_specifier): Set *declares_class_or_enum to 0, not
5789         false.
5790
5791 2004-01-12  Jan Hubicka  <jh@suse.cz>
5792
5793         * pt.c (for_each_template_parm): Do not check for duplicates.
5794         (for_each_template_parm): Use walk_tree duplicate checking code.
5795
5796 2004-01-11  Ian Lance Taylor  <ian@wasabisystems.com>
5797
5798         PR c++/3478
5799         * parser.c (cp_parser_decl_specifier_seq): If the first decl_spec
5800         is error_mark_node, don't add any more decl_specs.
5801         (cp_parser_init_declarator): After committing to a declaration, if
5802         the decl_specifiers start with error_mark_node, issue an error and
5803         change the type to "int".
5804
5805 2004-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>
5806
5807         PR bootstrap/7817
5808         * Make-lang.in: Copy gcc.1 to g++.1 rather than using .so.
5809
5810 2004-01-10  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5811
5812         DR 337
5813         PR c++/9256
5814         * pt.c (tsubst): Substitution must fail if we are attempting to
5815         create an array with element type that is an abstract class type.
5816         * decl.c (cp_finish_decl): Strip pointers and array types recursively
5817         before calling abstract_virtuals_error.
5818
5819 2004-01-09  Alexandre Oliva  <aoliva@redhat.com>
5820
5821         * name-lookup.c (qualified_lookup_using_namespace): Consider
5822         strong using directives even if we've already found a binding.
5823
5824 2004-01-09  Mark Mitchell  <mark@codesourcery.com>
5825
5826         * cp-tree.h (cxx_expand_expr): Change prototype.
5827         * expr.c (cxx_expand_expr): Add alt_rtl parameter.
5828
5829 2004-01-08  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5830
5831         PR c++/12573
5832         * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
5833         looking into them recursively. They can be there because of the
5834         new __offsetof__ extension.
5835
5836 2004-01-07  Zack Weinberg  <zack@codesourcery.com>
5837
5838         * parser.c (cp_parser_save_member_function_body): Mark the
5839         definition static.
5840
5841 2004-01-05  Mark Mitchell  <mark@codesourcery.com>
5842
5843         PR c++/13057
5844         * class.c (build_clone): Copy type attributes from the original
5845         function to the clone.
5846
5847         PR c++/12815
5848         * class.c (build_vtbl_ref_1): Do not unconditionally mark vtable
5849         references as constant.
5850
5851         PR c++/12132
5852         * parser.c (cp_parser_explicit_instantiation): Improve error
5853         recovery.
5854         (cp_parser_require): Improve indication of the error location.
5855
5856         PR c++/13451
5857         * parser.c (cp_parser_class_head): Reorder logic to check for
5858         invalid qualification.
5859
5860 2004-01-04  Mark Mitchell  <mark@codesourcery.com>
5861
5862         PR c++/13157
5863         * name-lookup.c (lookup_using_namespace): Remove spacesp
5864         parameter.
5865         (unqualified_namespace_lookup): Likewise.
5866         (lookup_qualified_name): Adjust accordingly.
5867         (lookup_name_real): Likewise.
5868         (lookup_arg_dependent): Do not eliminate the namespace of the
5869         functions found by unqualified name lookup unless that is the
5870         current namespace.
5871
5872 2004-01-04  Andrew Pinski  <pinskia@physics.uc.edu>
5873
5874         * semantics.c (push_deferring_access_checks): Fix format.
5875         (resume_deferring_access_checks): Likewise.
5876         (stop_deferring_access_checks): Likewise.
5877         (pop_deferring_access_checks): Likewise.
5878         (get_deferred_access_checks): Likewise.
5879         (pop_to_parent_deferring_access_checks): Likewise.
5880         (perform_deferred_access_checks): Likewise.
5881         (perform_or_defer_access_check): Likewise.
5882
5883 2004-01-04  Richard Henderson  <rth@redhat.com>
5884
5885         * call.c (build_over_call): Don't create a save_expr of an
5886         aggregate, but rather its address.
5887
5888 2004-01-04  Mark Mitchell  <mark@codesourcery.com>
5889
5890         PR c++/13529
5891         * parser.c (cp_parser_postfix_expression): Allow "." to appear in
5892         an offsetof expression.
5893
5894         * parser.c (cp_parser_parameter_declaration): Fix comment.
5895
5896         PR c++/12226
5897         * call.c (CHECK_COPY_CONSTRUCTOR_P): New macro.
5898         (reference_binding): Set it when appropriate.
5899         (build_temp): New function, split out from ...
5900         (convert_like_real): ... here.  Honor CHECK_COPY_CONSTRUCTOR_P.
5901         (initialize_reference): Likewise.
5902
5903         PR c++/13536
5904         * parser.c (cp_parser): Add in_type_id_in_expr_p.
5905         (cp_parser_new): Initialize it.
5906         (cp_parser_postfix_expression): Set it.
5907         (cp_parser_sizeof_operand): Likewise.
5908         (cp_parser_parameteR_declaration): Do not commit early to tenative
5909         parsers when in_type_id_in_expr_p is set.
5910
5911 2004-01-03  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5912
5913         PR c++/13094
5914         * parser.c (cp_parser_template_argument): Don't call
5915         make_unbound_class_template directly.
5916         (cp_parser_lookup_name): Don't extract TEMPLATE_DECL from
5917         UNBOUND_CLASS_TEMPLATE tree node.
5918
5919 2004-01-02  Richard Sandiford  <rsandifo@redhat.com>
5920
5921         PR target/12729
5922         * method.c (use_thunk): Pass the CALL_EXPR through force_target_expr.
5923
5924 2004-01-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5925
5926         PR c++/13520
5927         * cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): New macro.
5928         (DECL_FUNCTION_TEMPLATE_P): Use it.
5929         (DECL_CLASS_TEMPLATE_P): Likewise.
5930         * parser.c (cp_parser_lookup_name): Add is_template parameter.
5931         (cp_parser_type_parameter): Adjust call to cp_parser_lookup_name.
5932         (cp_parser_template_name): Likewise.
5933         (cp_parser_elaborated_type_specifier): Likewise.
5934         (cp_parser_namespace_name): Likewise.
5935         (cp_parser_class_name): Likewise.
5936         (cp_parser_lookup_name_simple): Likewise.
5937
5938 See ChangeLog.3 for earlier changes.