OSDN Git Service

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