OSDN Git Service

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