OSDN Git Service

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