OSDN Git Service

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