OSDN Git Service

./:
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2007-01-17  Ian Lance Taylor  <iant@google.com>
2
3         * class.c (add_method): Call VEC_reserve_exact rather than passing
4         a negative size to VEC_reserve.
5
6 2007-01-11  Simon Martin  <simartin@users.sourceforge.net>
7
8         PR c++/29573
9         * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
10
11 2007-01-10  Mark Mitchell  <mark@codesourcery.com>
12
13         PR c++/28999
14         * decl.c (make_typename_type): If the qualified name is not a
15         type, issue an error.
16         * parser.c (cp_parser_elaborated_type_specifier): Fix comment
17         formatting.
18
19 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
20
21         * rtti.c: Include target.h.
22         (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
23         don't emit typeinfo for fundamental types as weak.
24         * Make-lang.in (cp/rtti.o): Update and correct dependencies.
25
26 2007-01-08  Richard Guenther  <rguenther@suse.de>
27
28         * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
29
30 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
31
32         * call.c (standard_conversion): Pass flag to
33         vector_types_convertible_p to disallow emission of note.
34         * typeck.c (convert_for_assignment): Pass flag to
35         vector_types_convertible_p to allow emission of note.
36         (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
37         to disallow emission of note.
38
39 2007-01-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
40
41         PR c++/28986
42         * typeck.c (build_binary_op): Call overflow_warning if
43         TREE_OVERFLOW_P is true for the result and not for any of the
44         operands.
45         
46 2007-01-06  Lee Millward  <lee.millward@codesourcery.com>
47
48        PR c++/19439
49        * class.c (add_method): Don't wait until template
50        instantiation time to complain about duplicate methods.
51         
52 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
53
54         PR c/19978
55         * semantics.c (finish_unary_op_expr): Warn only if result
56         overflowed and operands did not.
57
58 2007-01-05  Ian Lance Taylor  <iant@google.com>
59
60         * typeck.c (build_binary_op): Warn about comparing a non-weak
61         address to NULL.
62
63 2007-01-05  Douglas Gregor  <doug.gregor@gmail.com>
64
65         * pt.c (tsubst): Propagate the need for structural equality checks
66         when reducing the level of template parameters.
67
68 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
69
70         * pt.c: Fix a comment typo.
71
72 2006-01-02  Ian Lance Taylor  <iant@google.com>
73
74         * semantics.c (maybe_convert_cond): Optionally warn when using an
75         assignment as a condition.
76         * typeck.c (convert_for_assignment): Optionally warn about
77         assigning the result of an assignment to a bool.
78
79 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
80
81         * pt.c (canonical_template_parms): Correct typo in comment.
82         
83 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
84
85         * typeck.c (structural_comptypes): Renamed from "comptypes".
86         (comptypes): Use canonical type information to perform fast type
87         comparison. When VERIFY_CANONICAL_TYPES, verify that the
88         canonical type comparison returns the same results as we would see
89         from the current, structural check. Support COMPARE_STRUCTURAL
90         when we need structural checks.
91         * decl.c (typename_compare): Fix comment.
92         (build_typename_type): TYPENAME_TYPE nodes require structural
93         equality checks, because they resolve different based on the
94         current class type.
95         (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
96         require structural equality checks (for now).
97         (build_ptrmemfunc_type): Build the canonical pointer to member
98         function type.
99         (compute_array_index_type): Whenever we build a new index type
100         to represent the size of an array in a template, we need to mark
101         this index type as requiring structural equality. This goes for
102         arrays with value-dependent sizes with the current ABI, or all
103         arrays with ABI-1.
104         * tree.c (cplus_array_hash): New.
105         (struct cplus_array_info): New.
106         (cplus_array_compare): New.
107         (cplus_array_htab): New.
108         (build_cplus_array_type_1): Use a hash table to cache the array
109         types we build. Build the canonical array type for each array
110         type.
111         (cp_build_qualified_type_real): When building a cv-qualified array
112         type, use the hash table of array types and build canonical array
113         types as necessary.
114         (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
115         use structural equality (for now).
116         * cp-tree.h (COMPARE_STRUCTURAL): New.
117         * pt.c (canonical_template_parms): New.
118         (canonical_type_parameter): New.
119         (process_template_parm): Find the canonical type parameter.
120         (lookup_template_class): When we have named the primary template
121         type, set the canonical type for our template class to the primary
122         template type. If any of the template arguments need structural
123         equality checks, the template class needs structural equality
124         checks.
125         (tsubst): When reducing the level of a template template
126         parameter, we require structural equality tests for the resulting
127         parameter because its template parameters have not had their types
128         canonicalized. When reducing a template type parameter, find the
129         canonical reduced type parameter.
130         (any_template_arguments_need_structural_equality_p): New.
131
132 2006-12-31  Simon Martin  <simartin@users.sourceforge.net>
133
134         PR c++/29731
135         * parser.c (cp_parser_primary_expression): Return error_mark_node when
136         a statement-expression is found outside of a function body.
137
138 2006-12-28  Kazu Hirata  <kazu@codesourcery.com>
139
140         * cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P):
141         Remove.
142
143         * decl2.c: Fix a comment typo.
144
145 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
146
147         PR C++/30225
148         * decl.c (cxx_builtin_function): Only copy the decl if adding
149         it to the std namespace.
150
151 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
152
153         PR C++/30168
154         * optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.
155
156 2006-12-22  Kazu Hirata  <kazu@codesourcery.com>
157
158         * decl.c: Fix a coment typo.
159
160 2006-12-18  Ian Lance Taylor  <iant@google.com>
161
162         * decl.c (start_preparsed_function): Add support for
163         -Wmissing-declarations.
164
165 2006-12-16  Simon Martin  <simartin@users.sourceforge.net>
166
167         PR c++/29475
168         * cp-tree.h (struct deferred_access_check): New structure to represent a
169         deferred access check. It replaces the previous representation as a tree.
170         (get_deferred_access_checks): Return a vector of struct
171         deferred_access_check instead of a tree list.
172         (perform_access_checks): Take a vector of struct deferred_access_check
173         instead of a tree list.
174         * semantics.c (struct deferred_access): Store the deferred access checks
175         as a vector of struct deferred_access_check instead of a tree list.
176         (push_deferring_access_checks): Handle the change in struct
177         deferred_access.
178         (get_deferred_access_checks): Likewise.
179         (pop_to_parent_deferring_access_checks): Likewise.
180         (perform_or_defer_access_check): Likewise.
181         (perform_access_checks): Take a vector of struct deferred_access_check
182         instead of a tree list.
183         * parser.c (struct tree_check): New structure to store various data
184         associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token.
185         (struct cp_token): Changed the value field to be a union with a pointer to
186         a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID
187         tokens and a tree field for all other tokens.
188         (eof_token): Adjusted due to the change in struct cp_token.
189         (cp_lexer_get_preprocessor_token): Likewise.
190         (cp_lexer_purge_token): Likewise.
191         (cp_lexer_purge_tokens_after): Likewise.
192         (cp_lexer_print_token): Likewise.
193         (cp_parser_error): Likewise.
194         (cp_parser_identifier): Likewise.
195         (cp_parser_string_literal): Likewise.
196         (cp_parser_primary_expression): Likewise.
197         (cp_parser_unqualified_id): Likewise.
198         (cp_parser_parenthesized_expression_list): Likewise.
199         (cp_parser_storage_class_specifier_opt): Likewise.
200         (cp_parser_function_specifier_opt): Likewise.
201         (cp_parser_type_specifier): Likewise.
202         (cp_parser_simple_type_specifier): Likewise.
203         (cp_parser_initializer_list): Likewise.
204         (cp_parser_member_specification_opt): Likewise.
205         (cp_parser_attribute_list): Likewise.
206         (cp_parser_objc_expression): Likewise.
207         (cp_parser_objc_protocol_qualifiers): Likewise.
208         (cp_parser_objc_selector): Likewise.
209         (cp_parser_objc_declaration): Likewise.
210         (cp_parser_objc_statement): Likewise.
211         (cp_parser_omp_clause_name): Likewise.
212         (cp_parser_omp_clause_default): Likewise.
213         (cp_parser_omp_clause_schedule): Likewise.
214         (cp_parser_omp_parallel): Likewise.
215         (cp_parser_initial_pragma): Likewise.
216         (pragma_lex): Likewise.
217         (cp_parser_pre_parsed_nested_name_specifier): Likewise.
218         (cp_parser_nested_name_specifier_opt): Likewise.
219         Use cp_token::u::tree_check_value to save the token's value, the
220         associated deferred checks and its qualifying scope.
221         (cp_parser_template_id): Likewise.
222         (cp_parser_template_declaration_after_export): Adjusted the call to
223         get_deferred_access_checks.
224         (cp_parser_init_declarator): Take the access checks as a vector of struct
225         deferred_access_check instead of a tree list.
226         (cp_parser_single_declaration): Likewise.
227         (cp_parser_perform_template_parameter_access_checks): Likewise.
228         (cp_parser_simple_declaration): Adjusted the call to
229         cp_parser_init_declarator.
230         (cp_parser_explicit_specialization): Adjusted the call to
231         cp_parser_single_declaration.
232
233 2006-12-13  Ian Lance Taylor  <iant@google.com>
234
235         PR c++/19564
236         PR c++/19756
237         * parser.c (cp_parser_expression_stack_entry): Add field
238         lhs_type.
239         (cp_parser_binary_expression): Track tree code of left hand side
240         of expression.  Use it when calling build_x_binary_op.
241         (cp_parser_selection_statement): Add if_p parameter.  Change all
242         callers.  Warn about ambiguous else.
243         (cp_parser_statement): Add if_p parameter.  Change all callers.
244         (cp_parser_implicitly_scoped_statement): Likewise.
245         * typeck.c (build_x_binary_op): Add parameters arg1_code and
246         arg2_code.  Change all callers.  Call warn_about_parentheses.
247         * cp-tree.h (build_x_binary_op): Update declaration.
248
249 2006-12-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
250
251         * decl.c (build_enumerator): Update error message to match C
252         front-end.
253         
254 2006-12-11  Jan Hubicka  <jh@suse.cz>
255
256         * decl2.c (var_finalized_p): Update for renamed varpool functions.
257
258 2006-12-09  Zack Weinberg  <zackw@panix.com>
259
260         * parser.c (yydebug, enum pragma_omp_clause): Delete.
261
262 2006-12-07  Mark Mitchell  <mark@codesourcery.com>
263
264         PR c++/29732
265         * cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations.
266         (explicit_class_specialization_p): Declare.
267         * pt.c (explicit_class_specialization_p): New function.
268         * parser.c (cp_parser_init_declarator): Check correct number of
269         template parameters for in-class function definitions.
270         (cp_parser_check_declrator_template_parameters): Stop looking for
271         template classes when we find an explicit specialization.
272
273 2006-12-07  Lee Millward  <lee.millward@codesourcery.com>
274
275         PR c++/29980
276         * cp_parser_elaborated_type_specifier: Check
277         the return value of check_elaborated_type_specifier.
278
279 2006-12-06  Mark Mitchell  <mark@codesourcery.com>
280
281         PR c++/29730
282         * parser.c (cp_parser_init_declarator): Reject initialization of
283         functions.
284
285 2006-12-05  Mark Mitchell  <mark@codesourcery.com>
286
287         PR c++/29729
288         * decl2.c (check_member_template): Move check for member
289         templates in local classes to ...
290         * parser.c (cp_parser_template_declaration_after_export):
291         ... here.
292
293         PR c++/29728
294         * decl.c (check_array_designated_initializer): New function.
295         (maybe_deduce_size_from_array_init): Use it.
296         (reshape_init_array): Likewise.
297
298 2006-12-05  Aldy Hernandez  <aldyh@redhat.com>
299
300         Merge from gimple-tuples-branch.
301
302         2006-10-05  Aldy Hernandez  <aldyh@redhat.com>
303
304         * cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
305         (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
306         (cxx_omp_clause_copy_ctor): Same.
307         (cxx_omp_clause_assign_op): Same.
308
309         2006-09-28  Aldy Hernandez  <aldyh@redhat.com>
310
311         * cp-tree.h (union lang_tree_node): Gimple statements do not
312         have a TREE_CHAIN.
313         (TREE_INDIRECT_USING): Look in base.
314
315 2006-12-04  Jan Hubicka  <jh@suse.cz>
316
317         * cp-objcp-common.c (cp_expr_size): Return NULL in the case
318         size is undefined.
319
320 2006-12-04  Mark Mitchell  <mark@codesourcery.com>
321
322         PR c++/29733
323         * pt.c (tsubst_decl): Disallow variables of function type.
324
325         PR c++/29632
326         * call.c (add_builtin_candidate): Do not permit NULL pointer
327         constants to be compared with template parameters.
328
329 2006-12-04  Eric Botcazou  <ebotcazou@adacore.com>
330
331         * pt.c (for_each_template_parm_r) <INTEGER_TYPE>: New case.
332         Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.
333
334 2006-12-03  Richard Henderson  <rth@redhat.com>
335             Andrew Pinski  <pinskia@gmail.com>
336
337         PR C++/14329
338         * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR.
339
340 2006-12-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
341
342         PR C++/30033
343         * decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.
344
345 2006-12-02  Kazu Hirata  <kazu@codesourcery.com>
346
347         * name-lookup.c: Follow spelling conventions.
348
349 2006-12-01  Geoffrey Keating  <geoffk@apple.com>
350
351         * decl.c (poplevel): Check DECL_INITIAL invariant.
352         (duplicate_decls): Preserve DECL_INITIAL when eliminating
353         a new definition in favour of an old declaration.
354         (start_preparsed_function): Define and document value of
355         DECL_INITIAL before and after routine.
356         (finish_function): Check DECL_INITIAL invariant.
357         * parser.c
358         (cp_parser_function_definition_from_specifiers_and_declarator):
359         Skip duplicate function definitions.
360
361 2006-12-01  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
362
363         PR c++/30022
364         * typeck.c (type_after_usual_arithmetic_conversions):
365         Fix assertion for vector types.
366         (build_binary_op): Use temporary for inner type of vector types.
367
368 2006-12-01  Ryan Mansfield  <rmansfield@qnx.com>
369
370         PR c++/29066
371         * typeck.c (build_binary_op):  Fix pointer to member function
372         comparison for ptrmemfunc_vbit_in_delta targets.
373
374 2006-12-01  Dirk Mueller  <dmueller@suse.de>
375
376         PR c++/18313
377         * decl.c (grokdeclarator): Warn for type qualifiers on return
378         type for non-dependent types.
379         * pt.c (tsubst_function_type): Warn for type qualifiers on
380         return type for dependent types.
381
382 2006-11-30  Geoffrey Keating  <geoffk@apple.com>
383
384         * rtti.c (get_tinfo_decl): Handle return value from
385         pushdecl_top_level_and_finish.
386
387 2006-11-29  Lee Millward  <lee.millward@codesourcery.com>
388
389         PR c++/29022
390         * parser.c (cp_parser_class_head): Move processing
391         of any base classes to...
392         (cp_parser_class_specifier) ...here. Take an extra
393         tree* parameter for any base classes. Only process
394         them if the opening brace was found.
395
396 2006-11-28  Jakub Jelinek  <jakub@redhat.com>
397
398         PR c++/29735
399         * decl.c (grokfndecl): Check main's type after applying
400         attributes, not before.
401
402 2006-11-27  Mark Mitchell  <mark@codesourcery.com>
403
404         * class.c (build_vcall_offset_vtbl_entries): Do not add vcall
405         entries for a primary construction virtual table.
406
407 2006-11-26  Mark Mitchell  <mark@codesourcery.com>
408
409         PR c++/29886
410         * parser.c (cp_parser): Add in_function_body.
411         (cp_parser_new): Initialize it.
412         (cp_parser_primary_expression): Use parser->in_function_body
413         instead of at_function_scope_p.
414         (cp_parser_asm_definition): Likewise.
415         (cp_parser_direct_declarator): Likewise.
416         (cp_parser_class_specifier): Clear parser->in_function_body.
417         (cp_parser_constructor_declarator_p): Use parser->in_function_body
418         instead of at_function_scope_p.
419         (cp_parser_function_body_after_declarator): Set
420         parser->in_function_body.
421
422 2006-11-21      Douglas Gregor <doug.gregor@gmail.com>
423
424         * cp-tree.def (STATIC_ASSERT): New.
425         * cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT.
426         * error.c (dump_decl): Handle STATIC_ASSERT.
427         * cp-tree.h (STATIC_ASSERT_CONDITION): New.
428         (STATIC_ASSERT_MESSAGE): New.
429         (STATIC_ASSERT_SOURCE_LOCATION): New.
430         (struct tree_static_assert): New.
431         (enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT.
432         (union lang_tree_node): Add static_assertion.
433         (finish_static_assert): Declare.
434         * cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT.
435         (pp_cxx_declaration): Handle STATIC_ASSERT.
436         * pt.c (instantiate_class_template): Handle
437         STATIC_ASSERT members.
438         (tsubst_expr): Handle STATIC_ASSERT statements.
439         * semantics.c (finish_static_assert): New.
440         * lex.c (D_CPP0X): New.
441         (reswords): Add static_assert keyword.
442         (init_reswords): If not flag_cpp0x, mask out C++0x keywords.
443         * parser.c (cp_parser_block_declaration): Parse static
444         assertions.
445         (cp_parser_static_assert): New.
446         (cp_parser_member_declaration): Parse static assertions.
447
448 2006-11-21  Jakub Jelinek  <jakub@redhat.com>
449
450         PR c++/29570
451         * decl.c (cp_finish_decl): Check for value dependent brace enclosed
452         scalar initializer.
453
454         PR c++/29734
455         * cp-tree.h (WANT_VECTOR): Define.
456         (WANT_ARITH): Add WANT_VECTOR.
457         * cvt.c (build_expr_type_conversion): Handle vector types.
458         * typeck.c (build_unary_op): Add WANT_VECTOR to
459         build_expr_type_conversion flags.
460
461 2006-11-20  Simon Martin  <simartin@users.sourceforge.net>
462
463         PR c++/29475
464         * cp-tree.h (enforce_access, perform_or_defer_access_check): Added an
465         extra argument that represents the declaration to use to print
466         potential error messages.
467         * init.c (build_offset_ref): Adjusted the call to
468         perform_or_defer_access_check.
469         * class.c (alter_access, resolve_address_of_overloaded_function):
470         Likewise.
471         * decl.c (make_typename_type, make_unbound_class_template): Likewise.
472         * search.c (lookup_member): Likewise.
473         * friend.c (add_friend): Likewise.
474         * parser.c (cp_parser_template_id,
475         cp_parser_pre_parsed_nested_name_specifier): Likewise.
476         * semantics.c (finish_non_static_data_member,
477         check_accessibility_of_qualified_id, finish_id_expression): Likewise.
478         (pop_to_parent_deferring_access_checks, perform_access_checks,
479         perform_or_defer_access_check): Adjusted the call to enforce_access.
480         * call.c (enforce_access): Use the new extra argument to build the
481         error message.
482         (build_op_delete_call): Adjusted the call to
483         perform_or_defer_access_check.
484         (build_over_call): Likewise.
485
486 2006-11-16  Dirk Mueller  <dmueller@suse.de>
487
488         * name-lookup.c (begin_scope): Use GGC_CNEW instead of
489         GGC_NEW and memset.
490
491 2006-11-13  Roger Sayle  <roger@eyesopen.com>
492
493         * rtti.c (get_pseudo_ti_init): Ensure that the offset field of the
494         base type info initializer has the correct type.
495
496 2006-11-13  Mark Mitchell  <mark@codesourcery.com>
497
498         PR c++/29518
499         * pt.c (coerce_template_parms): Do not skip_evaluation while
500         substituting template arguments.
501
502 2006-11-11  Richard Guenther  <rguenther@suse.de>
503
504         * typeck.c (build_unary_op): Remove handling of FIX_CEIL_EXPR,
505         FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
506
507 2006-11-03  Roger Sayle  <roger@eyesopen.com>
508
509         * call.c (build_op_delete_call): Test user-visible type against
510         size_type_node, instead of against the internal type, sizetype.
511         * class.c (type_requires_array_cookie): Likewise.
512         * mangle.c (write_builtin_type) <INTEGER_TYPE>: Remove special
513         handling of TYPE_IS_SIZETYPE.
514         * typeck.c (type_after_usual_arithmetic_conversions): Remove
515         special case handling of TYPE_IS_SIZETYPE.
516         (comptypes): Likewise.
517
518 2006-11-01  Danny Smith  <dannysmith@users.sourceforge.net>
519
520         * decl.c (get_atexit_node): Reference atexit, not __cxa_exit.
521         if targetm.cxx.use_atexit_for cxa_atexit.
522         (start_cleanup_fn): Likewise.
523         (register_dtor_fn): Likewise.
524
525 2006-09-25  Geoffrey Keating  <geoffk@apple.com>
526
527         * decl2.c (cp_write_global_declarations): Rename from
528         cp_finish_file.
529         * cp-lang.c (finish_file): Don't call cp_finish_file.
530         * cp-tree.h (cp_write_global_declarations): Rename from
531         cp_finish_file.
532         * cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to
533         cp_write_global_declarations.
534
535 2006-10-31  Geoffrey Keating  <geoffk@apple.com>
536
537         * name-lookup.c (get_anonymous_namespace_name): New.
538         (push_namespace_with_attribs): Use get_anonymous_namespace_name.
539         * decl2.c (start_objects): Update for rename of
540         get_file_function_name_long.
541
542 2006-10-30  Dirk Mueller  <dmueller@suse.de>
543
544         PR c++/28704
545         * decl.c (grokdeclarator): Duplicate diagnostic message
546         for easier translation.
547         * decl.c (grokdeclarator): Fix line-wrapping.
548
549 2006-10-30  Dirk Mueller  <dmueller@suse.de>
550
551         PR c++/6321
552         * decl.c (grokfndecl): Use check_main_parameter_types.
553
554 2006-10-30  Dirk Mueller  <dmueller@suse.de>
555
556         PR c++/28669
557         * decl.c (grokfndecl): Duplicate warning message for
558         easier translation.
559
560 2006-10-30  Dirk Mueller  <dmueller@suse.de>
561
562         * typeck.c (build_unary_op): Fix indenting. Use G_().
563
564 2006-10-29  Dirk Mueller  <dmueller@suse.de>
565
566         PR c++/29089
567         * typeck.c (build_unary_op): Duplicate warning message
568         for easier translation.
569
570 2006-10-29  Dirk Mueller  <dmueller@suse.de>
571
572         PR c++/16307
573         * typeck.c (build_array_ref): Warn for char subscriptions
574         on pointers.
575
576 2006-10-29  Kazu Hirata  <kazu@codesourcery.com>
577
578         * decl.c: Fix a comment typo.
579
580 2006-10-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
581
582         PR C++/29295
583         * typeck.c (build_unary_op): Use same_type_p when comparing to
584         boolean type.
585
586 2006-10-29  Dirk Mueller  <dmueller@suse.de>
587
588         PR c++/29033
589         * typeck.c (build_binary_op): Duplicate warning message
590         for better translation.
591
592 2006-10-23  Rafael Avila de Espindola  <rafael.espindola@gmail.com>
593
594         * decl.c (builtin_function_1): Move common code to
595         add_builtin_function.
596         (builtin_function): Rename to cxx_builtin_function.
597         Change the signature.
598         * call.c: Include langhooks.h.
599         (build_java_interface_fn_ref):  Replace calls to
600         builtin_function with add_builtin_function.
601         * Make-lang.in (cp/call.o): Depend on langhooks.h.
602         * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
603         cxx_builtin_function.
604         * cp-tree.h (builtin_function): Rename to cxx_builtin_function.
605         Change the signature.
606
607 2006-10-22  Nathan Sidwell  <nathan@codesourcery.com>
608
609         PR c++/20647
610         * rtti.c (tinfo_base_init): The type info string is always global.
611
612 2006-10-20  Lee Millward  <lee.millward@codesourcery.com>
613             Mark Mitchell <mark@codesourcery.com>
614
615         PR c++/28053
616         * decl2.c (grokbitfield): Detect invalid non-integral
617         types earlier when possible.
618
619 2006-10-18  Mark Shinwell  <shinwell@codesourcery.com>
620
621         PR c++/26884
622         * typeck2.c (digest_init): Raise error upon attempts to
623         initialize arrays with variables.
624
625 2006-10-17  Lee Millward  <lee.millward@codesourcery.com>
626
627         PR c++/27952
628         * cp-tree.h (xref_basetypes): Return bool instead of void.
629         * decl.c (xref_basetypes): Adjust definition. Return false
630         if the class bases are invalid.
631         * parser.c (cp_parser_class_head): Check the return value
632         from xref_basetypes.
633
634 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
635
636         PR c++/28261
637         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Add
638         comment.
639
640         PR c++/28261
641         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): New
642         function.
643         (cp_parser_constructor_declarator_p): Use it.
644         (cp_parser_check_type_definition): Return a value indicating
645         whether or not the definition is valid.
646         (cp_parser_enum_specifier): Skip invalid enum definitions.
647
648 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
649
650         PR c++/29039
651         * typeck2.c (build_functional_cast): Don't zero-initialize
652         non-PODs; instead, call their constructors.
653         * method.c (synthesize_method): Always build mem-initializers, if
654         we're synthesizing the default constructor.
655
656 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
657
658         PR c++/27270
659         * decl.c (reshape_init_class): Move check for designated
660         to ...
661         * parser.c (cp_parser_initializer_list): ... here.
662         * pt.c (tsubst_copy_and_build): Use finish_compound_literal.
663
664 2006-10-16  Mark Mitchell  <mark@codesourcery.com>
665
666         PR c++/27270
667         * typeck2.c (process_init_constructor_array): Reword comment.
668         * pt.c (tsubst_copy_and_built): Call reshape_init before calling
669         digest_init.
670
671         PR c++/29408
672         * parser.c (cp_parser_using_declaration): Stop parsing when
673         something goes wrong with an access declaration.
674
675         PR c++/29435
676         * typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent
677         types when their sizes are required.  Refine test for VLAs.
678
679         PR c++/28211
680         * parser.c (cp_parser_template_argument): Don't consider "&var" a
681         possible constant-expression.
682         * pt.c (convert_nontype_argument): Refine handling of arguments of
683         pointer type.
684
685 2006-10-13  Mark Mitchell  <mark@codesourcery.com>
686
687         PR c++/28506
688         * parser.c (function_declarator_p): New function.
689         (cp_parser_init_declarator): Use it.
690         (cp_parser_member_declaration): Likewise.
691
692 2006-10-12  Mark Mitchell  <mark@codesourcery.com>
693
694         PR c++/29318
695         * rtti.c (get_tinfo_decl): Refuse to create type info objects for
696         variably modified types.
697
698 2006-10-12 Lee Millward <lee.millward@codesourcery.com>
699
700        PR c++/27961
701        * decl.c (start_decl): Return error_mark_node if a
702        function is initialized like a variable.
703        (check_var_type): If a variable of field is declared void,
704        set the type to error_mark_node.
705        (grokdeclarator): Check the return type of check_var_type.
706        * class.c (finish_struct_1): Robustify.
707
708 2006-10-11  Mark Mitchell  <mark@codesourcery.com>
709
710         PR c++/29175
711         * decl.c (check_initializer): Issue errors about trying to
712         initialize arrays whose elements have variable size.
713
714 2006-10-11  Lee Millward  <lee.millward@codesourcery.com>
715
716         PR c++/29024
717         * cp-tree (struct cp_decl_specifier_seq): Rename to
718         conflicting_specifiers_p
719         * parser.c (cp_parser_set_storage_class): Set
720         conflicting_specifiers_p for the input decl specifier
721         if a typedef specifier is present. Rename uses of
722         multiple_specifiers_p to conflicting_specifiers_p.
723         (cp_parser_decl_specifier_seq) <RID_TYPEDEF>: If a storage
724         class specifier has already been set for this declaration,
725         set conflicting_specifiers_p to true on the decl_specs.
726         * decl.c (grokdeclarator): Rename uses of
727         multiple_specifiers_p to conflicting_specifiers_p.
728
729 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
730
731         * Make-lang.in: Added "c++.pdf" target support.
732
733 2006-10-10  Richard Guenther  <rguenther@suse.de>
734
735         PR rtl-optimization/29323
736         * decl.c (finish_function): Set TREE_NOTHROW only for
737         functions that bind local.
738
739 2006-10-09  Richard Henderson  <rth@redhat.com>
740
741         Revert emutls patch.
742
743 2006-10-04  Richard Henderson  <rth@redhat.com>
744             Jakub Jelinek  <jakub@redhat.com>
745
746         * decl.c (grokvardecl): Don't error if !have_tls.
747         (grokdeclarator): Likewise.
748         * parser.c (cp_parser_omp_threadprivate): Likewise.
749
750 2006-10-03  Mark Mitchell  <mark@codesourcery.com>
751
752         PR c++/29020
753         * friend.c (do_friend): Improve comments; add assertion.
754         * parser.c (cp_parser_nested_name_specifier_opt): Resolve
755         typenames for qualified names used in declarations, even when
756         caching qualified name lookup.
757
758         PR c++/29138
759         * decl2.c (grokfield): Don't handle access declarations here.
760         * parser.c (cp_parser_using_declaration): Handle access
761         declarations too.
762         (cp_parser_block_declaration): Adjust calls to
763         cp_parser_using_declaration.
764         (cp_parser_member_declaration): Likewise.  Use
765         cp_parser_using_declaration to look for access_declarations.
766
767 2006-10-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
768
769         PR c++/29291
770         * init.c (build_new): Check for invalid init.
771
772 2006-10-02  Mark Mitchell  <mark@codesourcery.com>
773
774         PR c++/29226
775         * typeck.c (cxx_sizeof_or_alignof_type): Tidy.  In templates, do
776         not try to actually evaluate sizeof for a VLA type.
777
778 2006-10-01  Mark Mitchell  <mark@codesourcery.com>
779
780         PR c++/29105
781         * pt.c (tsubst_baselink): Substituteinto the qualifying scope.
782         * semantics.c (baselink_for_fns): Build a baselink, even when
783         processing a template.
784
785         PR c++/29080
786         * parser.c (cp_parser_postfix_dot_deref_expression): Use
787         BASELINK_ACCESS_BINFO as the qualifying scope when calling
788         adjust_result_of_qualified_name_lookup.
789
790 2006-09-25  Lee Millward  <lee.millward@codesourcery.com>
791
792         PR c++/27329
793         PR c++/26938
794         * cp-tree.h (redeclare_class_template): Adjust declaration
795         to return bool instead of void.
796         * pt.c (redeclare_class_template): Update definition.
797         Return false on error.
798         * decl.c (xref_tag): Return error_mark_node if
799         redeclare_class_template returned false.
800
801         PR c++/27667
802         * cp-tree.h (begin_specialization): Return bool
803         instead of void.
804         * pt.c (check_specialization_scope): Likwise.
805         Adjust comment. Return false if a specialization
806         isn't permitted in the current scope.
807         (begin_specialization): Use the return value of
808         check_specialization_scope.
809         * parser.c (cp_parser_explicit_specialization): If
810         begin_specialization returned false, skip the rest
811         of the specialization.
812
813 2006-09-21  Mark Mitchell  <mark@codesourcery.com>
814
815         PR c++/29016
816         * typeck.c (build_unary_op): Don't form an ADDR_EXPR around a
817         BASELINK.
818
819 2006-09-21  Lee Millward  <lee.millward@codesourcery.com>
820
821         PR c++/28861
822         * decl.c (shadow_tag): Return error_mark_node
823         if maybe_process_partial_specialization failed.
824
825         PR c++/28303
826         * decl.c (grokdeclarator): Return error_mark_node on
827         declaration with two or more data types.
828
829 2006-09-20  Danny Smith  <dannysmith@users.sourceforge.net>
830
831         PR target/27650
832         * class.c (check_for_override): Remove dllimport from virtual
833         methods.
834
835 2006-09-18  Steven Bosscher  <steven@gcc.gnu.org>
836
837         PR c++/29087
838         * parser.c (cp_parser_labeled_statement): Return nothing.  Do
839         not take in_statement_expr and in_compound as arguments.  Rename
840         to cp_parser_label_for_labeled_statement.  Parse only the label,
841         not the statement.
842         (cp_parser_statement): Parse the statement of a labeled-statement
843         from here, using tail recursion.
844
845 2006-09-14  Andrew Pinski  <pinskia@physics.uc.edu>
846
847         PR C++/29002
848         * init.c (build_zero_init): If we have an error mark node for
849         the array size, return.
850
851 2006-09-10  Mark Mitchell  <mark@codesourcery.com>
852
853         PR c++/28991
854         * cp-objcp-common.c (cxx_staticp): New function.
855         * cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
856         * cp-tree.h (cxx_staticp): New function.
857
858 2006-09-09  Jason Merrill  <jason@redhat.com>
859
860         PR c++/28996
861         * cvt.c (convert_to_void): Strip COMPONENT_REF to functions.
862
863 2006-09-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
864
865         PR c++/28858
866         * parser.c (cp_parser_skip_until_found): Rename to
867         cp_parser_skip_to_end_of_template_parameter_list.  Remove last two
868         parameters.  Track levels of '< ... >'.  Stop at '{', '}', or ';'.
869         Reorganize.  Adjust comment.
870         (cp_parser_template_declaration_after_export): Adjust call.
871         (cp_parser_enclosed_template_argument_list): Likewise.
872
873 2006-09-07  Andrew Pinski  <pinskia@physics.uc.edu>
874
875         PR C++/28906
876         * init.c (build_new_1): Build a distinct type copy
877         for the array type that was returned from
878         build_cplus_array_type.
879
880 2006-09-07  Jason Merrill  <jason@redhat.com>
881
882         PR c++/27371
883         * cvt.c (convert_to_void): Enable previous change.
884
885         PR c++/26957
886         * method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
887         parms.
888
889 2006-09-07  Simon Martin  <simartin@users.sourceforge.net>
890
891         PR c++/28284
892         * pt.c (fold_non_dependent_expr): Make sure expr is not
893         dereferenced if it is NULL.
894
895 2006-09-06  Zak Kipling  <zak@transversal.com>
896
897         PR c++/26195
898         * decl.c (make_rtl_for_nonlocal_decl),
899         (start_preparsed_function): Don't use lbasename on
900         input_filename when calling get_fileinfo.
901         * semantics.c (begin_class_definition): Likewise.
902         * lex.c (cxx_make_type): Likewise.
903         (handle_pragma_interface): Call get_fileinfo on input_filename,
904         not on the parameter to the directive.
905
906 2006-09-06  Mark Mitchell  <mark@codesourcery.com>
907
908         PR c++/28903
909         * pt.c (tsubst): Use fold_non_dependent_expr to fold array
910         dimensions.
911
912         PR c++/28886
913         * pt.c (unify): Avoid unnecessary calls to fold_build2 for array
914         dimensions.
915
916 2006-09-06  Jason Merrill  <jason@redhat.com>
917
918         PR c++/27371
919         * cvt.c (convert_to_void): Strip useless TARGET_EXPR.
920         * cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
921         * tree.c (build_cplus_new): Set it.
922
923         PR c++/26696
924         * cvt.c (convert_to_void): Replace a subexpression with no side
925         effects with void_zero_node.
926         * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
927         (get_first_fn): Ditto.
928         * decl.c (grokdeclarator): No need to look through COMPONENT_REF.
929
930 2006-09-05  Jason Merrill  <jason@redhat.com>
931
932         PR c++/26571
933         * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
934         where the name is a type used incorrectly.
935
936         PR c++/26671
937         * typeck.c (maybe_warn_about_returning_address_of_local): Look
938         through COMPONENT_REF and ARRAY_REF.
939
940         PR c++/26102
941         * name-lookup.c (do_class_using_decl): Try to find the base even
942         if bases_dependent_p.
943         * pt.c (type_dependent_expression_p): A USING_DECL is dependent.
944
945         PR c++/19809
946         * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
947
948 2006-09-04  Nathan Sidwell  <nathan@codesourcery.com>
949
950         PR 23287 Revert my 2006-09-01 patch.
951         * parser.c: Reverted.
952         * pt.c: Reverted.
953
954 2006-09-02  Lee Millward  <lee.millward@codesourcery.com>
955
956         PR c++/27670
957         PR c++/27493
958         PR c++/27494
959         PR c++/27397
960         * parser.c (cp_parser_template_parameter_list): Add
961         invalid template parameters to the parameter list as
962         error_mark_node.
963
964 2006-09-02  Jakub Jelinek  <jakub@redhat.com>
965
966         PR c++/28878
967         * except.c (build_throw): Only set current_function_returns_abnormally
968         if cfun is not NULL.
969
970         PR c++/26917
971         * repo.c (repo_file): Remove.
972         (open_repo_file, reopen_repo_file_for_write): Return fopened
973         FILE * instead of setting global repo_file variable.
974         (init_repo): Adjust caller.
975         (finish_repo): Likewise.  Return instead of goto out before
976         reopen_repo_file_for_write has been called.
977
978 2006-09-01  Nathan Sidwell  <nathan@codesourcery.com>
979
980         PR c++/28705
981         * semantics.c (finish_call_expr): Add assert.
982         * name-lookup.c (lookup_arg_dependent): Check we found an overload
983         or an object.
984
985         PR c++/23287
986         * parser.c (cp_parser_id_expression): Add member_p
987         argument. Update all callers.
988         (cp_parser_unqualified_id): Likewise.  Lookup a destructor name in
989         the object's scope, if valid.
990         (cp_parser_global_scope_opt): Add object_scope_valid_p.  Update
991         callers.
992         (cp_parser_postfix_dot_deref_expression): Set object_scope.
993         * pt.c (tsubst_copy_and_build): Lookup dependent dtor name here.
994
995 2006-08-30  Jason Merrill  <jason@redhat.com>
996
997         PR c++/26670
998         * class.c (check_field_decls): Don't unset TYPE_PACKED until all
999         the fields have been processed.
1000
1001 2006-08-29  Andrew Pinski  <pinskia@physics.uc.edu>
1002
1003         PR C++/28349
1004         * call.c (build_x_va_arg): Remove the reference type
1005         from the type before creating the pointer type.
1006
1007 2006-08-29  J"orn Rennecke  <joern.rennecke@st.com>
1008
1009         PR c++/28139
1010         * except.c (expand_start_catch_block): Use correct types for bitwise
1011         copy.
1012
1013 2006-08-28  Jason Merrill  <jason@redhat.com>
1014
1015         PR c++/26670
1016         * class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
1017         fields can't be packed.
1018
1019         PR c++/26577
1020         * cvt.c (convert_to_void): Don't automatically load from volatiles
1021         of TREE_ADDRESSABLE type.
1022
1023 2006-08-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1024
1025         PR c++/28860
1026         * cp-tree.h (maybe_process_partial_specialization): Return
1027         tree instead of void.
1028         * parser.c (cp_parser_class_head): Use return value of
1029         maybe_process_partial_specialization.
1030         * pt.c (maybe_process_partial_specialization): Return error_mark_node
1031         for broken specializations, TYPE otherwise.  Check for template
1032         template parameters.
1033
1034 2006-08-27  Mark Mitchell  <mark@codesourcery.com>
1035
1036         PR c++/28058
1037         * pt.c (register_specialization): Return error_mark_node for
1038         specialization-after-instantiation.
1039         * decl2.c (mark_used): Mark the main function used when one of its
1040         clones is used.
1041
1042 2006-08-27  Lee Millward  <lee.millward@codesourcery.com>
1043
1044         PR c++/26573
1045         * class.c (check_field_decls): Don't issue error about
1046         local classes containing static data members.
1047
1048 2006-08-26  Joseph S. Myers  <joseph@codesourcery.com>
1049
1050         PR c++/24009
1051         * parser.c (struct cp_token): Add input_file_stack_index.
1052         (eof_token): Update.
1053         (cp_lexer_get_preprocessor_token): Save input_file_stack_tick.
1054         (cp_lexer_set_source_position_from_token): Restore input file
1055         stack.
1056
1057 2006-08-26  Lee Millward  <lee.millward@codesourcery.com>
1058
1059         PR c++/28736
1060         PR c++/28737
1061         PR c++/28738
1062         * pt.c (process_template_parm): Store invalid template
1063         parameters as a TREE_LIST with a TREE_VALUE of error_mark_node.
1064         (push_inline_template_parms_recursive): Check for template
1065         parameters having a TREE_VALUE of error_mark_node rather than
1066         check the parameter itself.
1067         (mangle_class_name_for_template): Likewise.
1068         (comp_template_parms): When comparing the individual template
1069         parameters, return 1 if either is error_mark_node.
1070         (current_template_args): Robustify.
1071         (redeclare_class_template): Likewise.
1072
1073 2006-08-26  Mark Mitchell  <mark@codesourcery.com>
1074
1075         PR c++/28588
1076         * class.c (resolve_address_of_overloaded_function): Add
1077         access_path parameter.  Perform access checks.
1078         (instantiate_type): Adjust call to
1079         resolve_address_of_overloaded_function.  Remove unnecessary code.
1080         * tree.c (is_overloaded_fn): Document.  Return 2 when there are
1081         acutally multiple functions.
1082         (really_overloaded_fn): Use is_overloaded_fn.
1083         * mangle.c (write_expression): Handle BASELINKs.
1084         * cp-tree.h (really_overloaded_fn): Return bool.
1085         (baselink_for_fns): Declare.
1086         * search.c (lookup_member): Check access for single static
1087         functions here.
1088         * pt.c (convert_nontype_argument_function): Handle BASELINKs.
1089         (tsubst_copy_and_build): Generate BASELINKs for template-ids.
1090         * semantics.c (finish_call_expr): Use baselink_for_fns.
1091         (baselink_for_fns): New function.
1092         (finish_id_expression): Use it.
1093         * parser.c (cp_parser_template_argument): Don't strip BASELINKs.
1094
1095         PR c++/28595
1096         * pt.c (tsubst): Issue errors about attempts to create VLAs at
1097         template-instantiation time.
1098
1099 2006-08-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1100
1101         PR c++/28853
1102         * typeck2.c (cxx_incomplete_type_diagnostic): Handle template
1103         template parameters.  Improve error message for template type
1104         parameters.
1105
1106         PR c++/28852
1107         * cp-tree.h (grok_op_properties): Return bool instead of void.
1108         * decl.c (grokfndecl): Discard invalid operator declarations.
1109         (copy_fn_p): Revert change for PR 27547.
1110         (grok_op_properties): Return error status (true on success).
1111         * pt.c (tsubst_decl): Discard invalid operator declarations.
1112
1113 2006-08-25  Mark Mitchell  <mark@codesourcery.com>
1114
1115         PR c++/28056
1116         * decl.c (grokdeclarator): Disallow declarations with qualified
1117         names in local scopes.
1118
1119 2006-08-25  Nathan Sidwell  <nathan@codesourcery.com>
1120
1121         PR c++/27787
1122         * decl.c (make_typename_type): Only try and resolve it when
1123         context is not dependent.  Refactor.
1124         * decl2.c (check_classfn): Push to class scope before looking for
1125         the function.
1126
1127 2006-08-24  Danny Smith   <dannysmith@users.sourceforge.net>
1128
1129         PR driver/28528
1130         * g++spec.c (lang_specific_driver): Always check if we need to
1131         swallow a space-separated  arg to '-x'.
1132         * lang-specs.h: Don't create ouput files for '-xc++-header'
1133         if -fsyntax-only.
1134
1135 2006-08-23  Jason Merrill  <jason@redhat.com>
1136
1137         PR c++/27714
1138         * pt.c (push_template_decl_real): A friend template with class
1139         scope isn't primary.
1140
1141 2006-08-23  Benjamin Smedberg <benjamin@smedbergs.us>
1142
1143         PR c++/28687
1144         * rtti.c (build_dynamic_cast, build_dynamic_cast_1):
1145         Move -fno-rtti check to be more specific.
1146
1147 2006-08-22  Jason Merrill  <jason@redhat.com>
1148
1149         PR c++/23372
1150         * call.c (build_over_call): Don't make a copy here if build_call
1151         will make one too.
1152
1153 2006-08-22  Andrew Pinski  <pinskia@physics.uc.edu>
1154
1155         PR C++/28450
1156         * cp/init.c (build_zero_init): Handle VECTOR_TYPE and
1157         COMPLEX_TYPEs.
1158
1159 2006-08-22  Simon Martin  <simartin@users.sourceforge.net>
1160
1161         PR c++/28420
1162         * parser.c (cp_parser_postfix_expression): Make sure that the
1163         saved value for parser->type_definition_forbidden_message is
1164         restored before returning to avoid an invalid free().
1165
1166 2006-08-22  Jason Merrill  <jason@redhat.com>
1167
1168         PR c++/28659
1169         * typeck.c (merge_types): If either of the types have the right
1170         attributes, return that one.
1171
1172         * tree.c (cp_build_type_attribute_variant): Make sure we aren't
1173         doing this to class types.
1174         * typeck.c (original_type): Deal with type quals properly.
1175
1176 2006-08-21  Jason Merrill  <jason@redhat.com>
1177
1178         PR c++/27115
1179         * semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
1180         just leave the expression as it is.
1181         (finish_stmt_expr): If the statement-expression has class type,
1182         wrap it in a TARGET_EXPR.
1183         * cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
1184         CLEANUP_POINT_EXPR.
1185         * except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.
1186
1187 2006-08-21  Lee Millward  <lee.millward@codesourcery.com>
1188
1189         PR c++/26269
1190         * decl.c (duplicate_decls): Return early if either
1191         newdecl or olddecl is error_mark_node.
1192
1193          PR c++/28505
1194         * decl.c (grokdeclarator): Return early after
1195         issuing diagnostic about an incomplete type.
1196
1197         PR c++/28741
1198         * tree.c (decl_anon_ns_mem_p): Robustify.
1199         * decl2.c (determine_visibility): Likewise.
1200
1201 2006-08-20  Mark Mitchell  <mark@codesourcery.com>
1202
1203         PR c++/28341
1204         * tree.c (cast_valid_in_integral_constant_expression_p): New
1205         function.
1206         * cp-tree.h (tsubst_copy_and_build): Adjust prototype.
1207         * pt.c (tsubst_expr): Add integral_constant_expression_p
1208         parameter.
1209         (fold_non_dependent_expr): Adjust callers of
1210         tsubst_{expr,copy_and_build}.
1211         (tsubst_friend_function): Likewise.
1212         (tsubst_template_arg): Likewise.
1213         (tsubst_default_argument): Likewise.
1214         (tsubst_decl): Likewise.
1215         (tsubst): Likewise.
1216         (tsubst_omp_clasuses): Likewise.
1217         (regenerate_decl_fromp_template): Likewise.
1218         (instantiate_decl): Likewise.
1219         (tsubst_initializer_list): Likewise.
1220         (tsubst_enum): Likewise.
1221         (tsubst_expr): Use RECUR throughout.
1222         (tsubst_copy_and_build): Change definition of RECUR.  Do not allow
1223         invalid casts in integral constant expressions.
1224         * parser.c (cp_parser_postfix_expression): Use
1225         cast_valid_in_integral_constant_expression_p.
1226         (cp_parser_cast_expression): Likewise.
1227         (cp_parser_functional_cast): Likewise.
1228
1229         PR c++/28346
1230         * pt.c (tsubst_qualified_id): Do not strip references from
1231         OFFSET_REFs.
1232
1233 2006-08-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1234
1235         PR c++/28606
1236         * parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
1237         Fix formatting.
1238         (cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
1239         for valid type-names.
1240         (cp_parser_unqualified_id): Fix error handling for destructors.
1241
1242         PR c++/28710
1243         * decl.c (xref_tag): Improve error message.  Return early on error.
1244
1245         PR c++/28711
1246         * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Robustify.
1247
1248 2006-08-17  Paolo Bonzini  <bonzini@gnu.org>
1249
1250         PR c++/28573
1251         * semantics.c (finish_offsetof): Add new argument to fold_offsetof.
1252
1253 2006-08-16  Andrew Pinski  <pinskia@physics.uc.edu>
1254
1255         PR c++/28302
1256         * typeck.c (build_unary_op <case BIT_NOT_EXPR:>): Don't call
1257         perform_integral_promotions for non integral type.
1258
1259 2006-08-16  Jason Merrill  <jason@redhat.com>
1260
1261         PR c++/28385
1262         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
1263         if arg is a function.
1264
1265 2006-08-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1266
1267         PR c++/28593
1268         * init.c (build_new): Return early on invalid placement.
1269
1270 2006-08-15  Lee Millward  <lee.millward@codesourcery.com>
1271
1272         PR c++/28594
1273         * pt.c (process_template_parm): Robustify.
1274
1275 2006-08-14  Steve Ellcey  <sje@cup.hp.com>
1276
1277         PR c++/28288
1278         PR c++/14556
1279         * operators.def: Remove <?, ?>, <?=, and >?= operators.
1280         * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
1281         (cp_parser_warn_min_max): Remove.
1282
1283 2006-08-11  Jason Merrill  <jason@redhat.com>
1284
1285         PR c++/28559
1286         * parser.c (cp_parser_elaborated_type_specifier): Also ignore
1287         attributes applied to a TYPENAME_TYPE.
1288
1289 2006-08-09  Lee Millward  <lee.millward@codesourcery.com>
1290
1291         PR c++/28637
1292         * pt.c (coerce_template_parms): Copy across the
1293         invalid template arguments to the new template inner arguments.
1294         (retrieve_specialization): Robustify.
1295
1296         PR c++/28638
1297         * pt.c (coerce_template_template_parms): Robustify.
1298
1299         PR c++/28639
1300         * error.c (dump_template_parms): Robustify.
1301
1302         PR c++/28640
1303         * pt.c (redeclare_class_template): Robustify.
1304
1305         PR c++/28641
1306         * pt.c (type_unification_real): Robustify.
1307
1308 2006-08-03  Lee Millward  <lee.millward@codesourcery.com>
1309
1310         PR c++/28347
1311         * decl.c (start_decl): Return error_mark_node if a
1312         diagnostic was issed for an invalid typedef initialization.
1313
1314 2006-08-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1315
1316         PR c++/27508
1317         * parser.c (cp_parser_unqualified_id): Check for invalid scopes
1318         when parsing destructor names.
1319
1320         PR c++/28274
1321         * decl.c (duplicate_decls): Call check_default_args here.
1322         (start_preparsed_function): Do not call check_default_args.
1323         * name-lookup.c (pushdecl_maybe_friend): Only call
1324         check_default_args if duplicate_decls got bypassed.
1325
1326 2006-08-02  Richard Guenther  <rguenther@suse.de>
1327
1328         PR c++/28479
1329         Revert
1330         2006-07-05  Richard Guenther  <rguenther@suse.de>
1331         Andrew Pinski  <pinskia@gcc.gnu.org>
1332
1333         PR c++/27084
1334         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
1335         top level qualifiers for pointer type comparisons.
1336
1337 2006-08-02  Mark Mitchell  <mark@codesourcery.com>
1338
1339         PR c++/28557
1340         * pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.
1341
1342 2006-07-31  Mark Mitchell  <mark@codesourcery.com>
1343
1344         PR c++/28523
1345         * tree.c (stabilize_expr): Tweak documentation.  Add assertion.
1346         (stabilize_call): Tweak documentation.
1347         (stabilize_init): Only call stabilize_call for calls.
1348
1349 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
1350
1351         PR c++/28432
1352         * decl2.c (check_classfn): Remove early return.
1353         * search.c (lookup_member): Return NULL with bad type.
1354
1355 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
1356
1357         PR c++/28256
1358         * decl.c (check_initializer): Check for 1 initializer on scalar types.
1359
1360 2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
1361
1362         PR debug/23336
1363         * pt.c (tsubst_copy_and_build): Mark used enum types.
1364         * semantics.c (finish_id_expression): Likewise.
1365
1366 2006-07-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1367
1368         PR c++/6634
1369         * decl.c (grokdeclarator): Check whether "long" or "short" was
1370         specified for non-integral types.
1371
1372 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1373
1374         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
1375
1376 2006-07-28  Lee Millward  <lee.millward@codesourcery.com>
1377
1378         PR c++/27668
1379         PR c++/27962
1380         * pt.c (process_template_parm) Store invalid template
1381         parameters as error_mark_node in the paramater list.
1382         (push_inline_template_parms_recursive): Handle invalid
1383         template parameters.
1384         (comp_template_parms): Likewise.
1385         (check_default_tmpl_arg): Likewise.
1386         (coerce_template_template_parms): Likewise.
1387         (mangle_class_name_for_template): Likewise.
1388         (tsubst_template_parms): Likewise.
1389         * error.c (dump_template_argument_list): Likewise.
1390
1391 2006-07-28  Kazu Hirata  <kazu@codesourcery.com>
1392
1393         * cp-tree.h: Fix a comment typo.
1394
1395 2006-07-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1396
1397         PR c++/27572
1398         * decl.c (grokdeclarator): Return error_mark_node after invalid
1399         typedef.
1400
1401 2006-07-23  Daniel Jacobowitz  <dan@codesourcery.com>
1402
1403         PR c++/28460
1404         * decl.c (grokvardecl): Use FROB_CONTEXT.
1405         * pt.c (register_specialization): Likewise.
1406
1407 2006-07-23  Mark Mitchell  <mark@codesourcery.com>
1408
1409         PR c++/28025
1410         * cp-tree.h (LOOKUP_HIDDEN): New macro.  Reformat comments.
1411         * name-lookup.c (unqualified_namespace_lookup): There is no way to
1412         have a hidden name in non-namespace scopes.
1413         * pt.c (tsubst_friend_class): Look for hidden names.
1414         * decl.c (lookup_and_check_tag): Fix typo in comment.
1415
1416         * semantics.c (finish_compound_literal): Fix typo in comment.
1417
1418 2006-07-21  Jason Merrill  <jason@redhat.com>
1419
1420         * decl2.c (determine_visibility): Don't propagate visibility from
1421         type to decl.
1422         (constrain_class_visibility): Don't warn in system headers.
1423         Don't warn about pointer fields.
1424
1425 2006-07-20  Mike Stump  <mrs@apple.com>
1426
1427         * decl2.c (determine_visibility_from_class): Don't use hidden
1428         visibility for explicit instantiations.
1429
1430 2006-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1431
1432         PR c++/28250
1433         * pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
1434         valid decls.  Cleanup.
1435
1436         PR c++/28363
1437         * semantics.c (check_template_template_default_arg): Simplify
1438         error handling.
1439
1440 2006-07-20  Jason Merrill  <jason@redhat.com>
1441
1442         PR c++/28407
1443         * decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
1444         const variables with implicit internal linkage.
1445         * tree.c (decl_linkage): Only return lk_external if it's set.
1446
1447         PR c++/28409
1448         * decl2.c (constrain_visibility): Ignore the anonymous namespace
1449         for extern "C" decls.
1450         (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.
1451
1452         * decl2.c (constrain_visibility): Remove specified and reason
1453         parameters.  Don't touch decls that already have explicit visibility.
1454         (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from
1455         template.
1456         (determine_visibility_from_class): Reverse sense of
1457         DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
1458         (constrain_class_visibility): Only complain about member visibility
1459         if the member type is another class.  Don't change visibility of the
1460         current class.
1461
1462 2006-07-19  Mark Mitchell  <mark@codesourcery.com>
1463
1464         PR c++/28338
1465         * decl.c (layout_var_decl): Don't call push_local_name here.
1466         (initialize_artificial_var): Assert artificiality.
1467         (cp_finish_decl): Call push_local_name here.
1468
1469 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
1470
1471         PR c++/28337
1472         * typeck.c (build_binary_op): Short-circuit pointer arithmetic in
1473         templates.
1474
1475 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
1476
1477         PR c++/28048
1478         * semantics.c (check_accessibility_of_qualified_id): Robustify.
1479
1480         PR c++/28235
1481         * pt.c (tsubst_decl): Handling substitutions into a static data
1482         member from within the scope of the tempalte itself.
1483
1484 2006-07-18  Lee Millward  <lee.millward@gmail.com>
1485
1486         PR c++/28258
1487         * method.c (locate_copy): Check for non_reference
1488         returning error_mark_node.
1489
1490         PR c++/28260
1491         * decl.c (duplicate_decls): Return error_mark_node
1492         on ambiguous declaration.
1493
1494 2006-07-18  Steve Ellcey  <sje@cup.hp.com>
1495
1496         PR c++/27495
1497         * search.c (adjust_result_of_qualified_name_lookup): Change
1498         assert to part of if statement.
1499
1500 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
1501
1502         PR c++/28291
1503         * decl.c (reshape_init_class): Return error_mark_node on error.
1504
1505 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
1506
1507         PR c++/28304
1508         * decl2.c (check_classfn): Return NULL_TREE on error.
1509
1510 2006-07-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1511
1512         PR c++/28250
1513         * name-lookup.c (pushdecl_maybe_friend): Return early on
1514         error_mark_node.
1515         * except.c (expand_start_catch_block): Use error_mark_node instead
1516         of NULL_TREE for invalid decls.
1517         * parser.c (cp_parser_exception_declaration): Return error_mark_node
1518         on invalid catch parameter. Simplify.
1519
1520 2006-07-16  Jakub Jelinek  <jakub@redhat.com>
1521
1522         PR c++/28370
1523         * decl2.c (note_vague_linkage_var): Removed.
1524         (finish_static_data_member_decl): Add decl to pending_statics vector
1525         directly.  Do it even for non-public decls.
1526
1527 2006-07-15  Lee Millward  <lee.millward@gmail.com>
1528
1529         PR c++/28292
1530         * decl2.c (acceptable_java_type): Robustify. Use
1531         proper Boolean return type instead of return 1.
1532         (check_java_method): Don't issue error about
1533         type not being an acceptable Java parameter if
1534         it's error_mark_node.
1535
1536         PR c++/28269
1537         * parser.c (cp_parser_elaborated_type_specifier):
1538         Return early if an invalid type was detected.
1539
1540 2006-07-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1541
1542         PR c++/28249
1543         * parser.c (cp_parser_check_decl_spec): New function.
1544         (cp_parser_decl_specifier_seq): Factor out check for repeated
1545         decl-specifiers into cp_parser_check_decl_spec. Use it.
1546         (cp_parser_type_specifier_seq): Use it.
1547
1548         PR c++/28294
1549         * semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
1550         only.
1551
1552         PR c++/28387
1553         * decl2.c (cplus_decl_attributes): Check for invalid decls.
1554
1555 2006-07-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1556
1557         PR c++/28343
1558         * decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
1559         * decl2.c (grokfield): Likewise.
1560
1561 2006-07-12  Geoffrey Keating  <geoffk@apple.com>
1562
1563         * decl2.c (determine_visibility): Don't change visibility of
1564         function locals because of -fvisibility-inlines-hidden.
1565
1566 2006-07-12  Jason Merrill  <jason@redhat.com>
1567
1568         PR c++/28217
1569         * semantics.c (note_decl_for_pch): Don't premangle templates.
1570
1571 2006-07-12  Martin Michlmayr  <tbm@cyrius.com>
1572
1573         * typeck.c (string_conv_p): Remove spurious quotation mark in
1574         warning.
1575
1576 2006-07-07  Lee Millward  <lee.millward@gmail.com>
1577             Andrew Pinski  <pinskia@gmail.com>
1578
1579         PR c++/27820
1580         * decl.c (define_label): Return error_mark_node on error.
1581         * semantics.c (finish_label_stmt): Don't call
1582         add_stmt for invalid labels.
1583
1584 2006-07-06  Jason Merrill  <jason@redhat.com>
1585
1586         PR c++/28279
1587         * decl2.c (finish_static_data_member_decl): Don't assert
1588         TREE_PUBLIC.
1589
1590 2006-07-05  Jason Merrill  <jason@redhat.com>
1591
1592         PR c++/13983
1593         PR c++/17519
1594         * class.c (check_field_decls): Check TYPE_PACKED after
1595         stripping array types.
1596         (finish_struct_bits): Don't copy TYPE_SIZE here.
1597
1598         PR c++/18681
1599         * friend.c (is_friend): Fix DR 45 implementation.
1600
1601 2006-07-05  Richard Guenther  <rguenther@suse.de>
1602         Andrew Pinski  <pinskia@gcc.gnu.org>
1603
1604         PR c++/27084
1605         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
1606         top level qualifiers for pointer type comparisons.
1607
1608 2006-07-01  Jason Merrill  <jason@redhat.com>
1609
1610         PR c++/28215
1611         * method.c (make_thunk): Unset DECL_USE_TEMPLATE and
1612         DECL_TEMPLATE_INFO.
1613
1614 2006-06-30  Jason Merrill  <jason@redhat.com>
1615
1616         PR c++/26577
1617         * call.c (build_new_method_call): Force evaluation of the
1618         instance pointer, not the object.
1619
1620 2006-06-30  Kazu Hirata  <kazu@codesourcery.com>
1621
1622         * decl2.c: Fix a comment typo.
1623
1624 2006-06-30  Jason Merrill  <jason@redhat.com>
1625
1626         PR c++/18698
1627         * decl2.c (grokfield): Only try to treat the decl as an access
1628         declaration if the scope is a class.
1629
1630 2006-06-29  Jason Merrill  <jason@redhat.com>
1631
1632         PR c++/26905
1633         PR c++/26612
1634         PR c++/27000
1635         PR c++/26984
1636         PR c++/19134
1637         * decl2.c (determine_visibility): Overhaul.
1638         (determine_visibility_from_class): Likewise.
1639         (min_vis_r, type_visibility, constrain_visibility): New fns.
1640         (constrain_visibility_for_template): Likewise.
1641         (constrain_class_visibility): Likewise.
1642         * decl.c (cp_finish_decl): Call determine_visibility for function
1643         decls, too.
1644         * name-lookup.c (pushtag): Call determine_visibility.
1645         * decl.c (duplicate_decls): Don't copy visibility from template to
1646         specialization.
1647         * pt.c (check_explicit_specialization): Likewise.
1648         (lookup_template_class, tsubst_decl): Call determine_visibility.
1649         * class.c (finish_struct_1): Call constrain_class_visibility.
1650
1651         PR c++/26905
1652         PR c++/21675
1653         PR c++/17470
1654         * parser.c (cp_parser_explicit_instantiation): Pass the attributes
1655         to grokdeclarator.
1656         (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
1657         (cp_parser_enum_specifier): Likewise.
1658         (cp_parser_elaborated_type_specifier): Apply attributes if this
1659         declares only the class.
1660         (cp_parser_class_specifier): Apply leading attributes immediately.
1661         * semantics.c (begin_class_definition): Add attributes parameter,
1662         apply them to the type.
1663
1664         PR c++/21581
1665         PR c++/25915
1666         * tree.c (decl_anon_ns_mem_p): New function.
1667         * cp-tree.h: Declare it.
1668         * decl2.c (determine_visibility): Make anonymous namespace
1669         members static.
1670         (min_vis_r, constrain_visibility): Likewise.
1671         * rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
1672         pseudo-types.
1673         * decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
1674         global_namespace.
1675         * name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
1676         on anonymous namespaces.
1677
1678 2006-06-28  Jason Merrill  <jason@redhat.com>
1679
1680         PR c++/27424
1681         * pt.c (convert_template_argument): Pass all template arguments
1682         on to coerce_template_template_parms.
1683
1684 2006-06-25  Lee Millward  <lee.millward@gmail.com>
1685             Mark Mitchell <mark@codesuorcery.com>
1686
1687         PR c++/28054
1688         * decl2.c (grokbitfied): Remove check for grokdeclarator
1689         returning NULL_TREE, instead check for error_mark_node
1690         to indicate failure.
1691         * decl.c (grokdeclarator): Adjust block comment.
1692
1693 2006-06-25  Lee Millward  <lee.millward@gmail.com>
1694
1695         PR c++/28051
1696         * mangle.c (mangle_conv_op_name_for_type): Check for
1697         invalid types.
1698         * name-lookup.c (push_class_level_binding): Robustify.
1699         (do_class_using_decl): Return early if name is error_mark_node.
1700
1701 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
1702
1703         PR c++/28114
1704         * name-lookup.c (pushtag): Return if we have error_mark_node.
1705
1706 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
1707
1708         PR c++/27019
1709         * typeck2.c (process_init_constructor_array): Set ce->value on errors.
1710
1711 2006-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1712
1713         PR c++/28112
1714         * parser.c (cp_parser_attribute_list): Skip attributes with invalid
1715         arguments.  Fix comment.
1716
1717         PR c++/11468
1718         * init.c (build_new_1): Handle error_mark_nodes returned by
1719         build_java_class_ref.
1720         (build_java_class_ref): Do not abort compilation, but return
1721         error_mark_node.  Improve error message.  Fix indentation.
1722
1723 2006-06-23  Danny Smith   <dannysmith@users.sourceforge.net>
1724
1725         PR target/27789
1726         * decl.c (start_decl): Check that dllimports are not initialized.
1727
1728 2006-06-22  Lee Millward  <lee.millward@gmail.com>
1729
1730         PR c++/27805
1731         * typeck2.c (build_m_component_ref): Use error_operand_p.
1732
1733         PR c++/27821
1734         * decl.c (grokdeclarator): Return error_mark_node on
1735         invalid uses of the scope resolution operator.
1736
1737 2006-06-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1738
1739         PR c++/28111
1740         * pt.c (determine_specialization): Check for invalid decls.
1741
1742         PR c++/28110
1743         * pt.c (unify) <case TEMPLATE_PARM_INDEX>: Check for invalid
1744         parameters.
1745
1746         PR c++/28109
1747         * rtti.c (get_tinfo_decl_dynamic): Robustify.
1748
1749 2006-06-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1750
1751         PR c++/28052
1752         * init.c (push_base_cleanups): Skip members with invalid types.
1753         * typeck.c (build_class_member_access_expr): Robustify.
1754
1755 2006-06-19  Mark Mitchell  <mark@codesourcery.com>
1756
1757         * pt.c (instantiate_template): Fix typo in comment.
1758
1759 2006-06-19  Richard Guenther  <rguenther@suse.de>
1760
1761         * parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near
1762         power-of-two token vector size.
1763
1764 2006-06-16  Mark Mitchell  <mark@codesourcery.com>
1765
1766         PR c++/28016
1767         * decl.c (cp_finsh_decl): Do not emit uninstantiated static data
1768         members.
1769
1770         PR c++/27979
1771         * call.c (standard_conversion): Strip cv-qualifiers from bitfield
1772         types.
1773
1774         PR c++/27884
1775         * decl.c (have_extern_spec): Remove.
1776         (start_decl): Do not check have_extern_spec.
1777         (start_function): Likewise.
1778         * cp-tree.h (have_extern_spec): Remove.
1779         * parser.c (cp_parser_linkage_specification): Don't set
1780         have_extern_spec.
1781         (cp_parser_init_declarator): Likewise.
1782         (cp_parser_parameter_declaration): Do not treat parameters as
1783         within the scope of an unbraced linkage specification.
1784
1785 2006-06-15  Mark Mitchell  <mark@codesourcery.com>
1786
1787         PR c++/27689
1788         * cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New
1789         macro.
1790         * pt.c (unify): Use it.
1791
1792         PR c++/27666
1793         * call.c (build_conditional_expr): Robustify.
1794
1795         PR c++/27640
1796         * pt.c (instantiate_template): Set processing_template_decl to
1797         zero while performing substitutions.
1798
1799 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
1800
1801         PR c++/27665
1802         * parser.c (cp_parser_unqualified_id): Use constructor_name_p to
1803         identify destructors.
1804         (cp_parser_nested_name_specifier_opt): Remove invalid
1805         optimization.
1806         (cp_parser_template_id): Refine heuristic for determining whether
1807         we are entering a scope.
1808
1809         PR c++/27648
1810         * parser.c (cp_parser_declarator): Robustify.
1811
1812         PR c++/26559
1813         * pt.c (tsubst_expr): Use finish_omp_atomic.
1814         (value_dependent_expression_p): All CALL_EXPRs are dependent.
1815         * semantics.c (finish_omp_atomic): Rework to use standard
1816         paradigms for handling non-dependent expressions.
1817
1818 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1819
1820         * typeck.c (build_modify_expr): Tidy diagnostic message.
1821
1822 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
1823
1824         PR c++/28018
1825         * typeck.c (build_modify_expr): Disallow array assignment.
1826
1827 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1828
1829         * cp-tree.def: Fix typo.
1830
1831 2006-06-13  Mark Mitchell  <mark@codesourcery.com>
1832
1833         PR c++/27227
1834         * decl.c (decls_match): Allow an extern "C" variable declarations
1835         from different namespaces to match.
1836         (duplicate_decls): Disallow redeclaring a variable with a
1837         different linkage specification.
1838
1839 2006-06-13  Jakub Jelinek  <jakub@redhat.com>
1840
1841         PR middle-end/27793
1842         * cp-tree.h (cxx_int_tree_map): New struct.
1843         (struct language_function): Add extern_decl_map field.
1844         * name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
1845         to cp_function_chain->extern_decl_map hash table instead of
1846         copying over DECL_UID.
1847         * cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
1848         functions.
1849         (cp_genericize_r): Remap DECL_EXTERN local decls using
1850         cp_function_chain->extern_decl_map hash table.
1851         * decl.c (finish_function): Clear extern_decl_map.
1852
1853 2006-06-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1854
1855         PR c++/27601
1856         * semantics.c (finish_offsetof): Handle pseudo-destructors.
1857
1858         PR c++/27933
1859         * name-lookup.c (lookup_qualified_name): Always return error_mark_node
1860         if lookup fails.
1861
1862         PR c++/27951
1863         * decl2.c (finish_anon_union): Return early if build_anon_union_vars
1864         fails.
1865
1866 2006-06-12  Roger Sayle  <roger@eyesopen.com>
1867
1868         PR c++/21210
1869         * typeck2.c (build_functional_cast): Use cp_convert to construct
1870         non-aggregate initializers instead of the user-level build_c_cast.
1871
1872 2006-06-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1873
1874         PR c++/27601
1875         * cp-tree.h (finish_offsetof): Add prototype.
1876         * semantics.c (finish_offsetof): New function.
1877         * parser.c (cp_parser_builtin_offsetof): Call it instead of
1878         fold_offsetof.
1879         * pt.c (tsubst_copy_and_build): Likewise.
1880
1881 2006-06-06  Mark Mitchell  <mark@codesourcery.com>
1882
1883         PR c++/27177
1884         * call.c (standard_conversion): Require that the derived type be
1885         complete when performing a derived-to-base conversion.
1886
1887 2006-06-04  Mark Mitchell  <mark@codesourcery.com>
1888
1889         PR c++/27819
1890         * decl.c (cp_finish_decl): Process initializers for static data
1891         members with non-dependent initializers, even in templates.
1892
1893         PR c++/27722
1894         * decl.c (maybe_deduce_size_from_array_init): If the declaration
1895         is erroneous, give it an erroneous type.
1896         (layout_var_decl): If the type is erroneous, give up.
1897         (check_initializer): Likewise.
1898
1899         PR c++/27807
1900         * cp-tree.h (TYPE_OBJ_P): New macro.
1901         (TYPE_PTROB_P): Use it.
1902         (TYPE_REF_OBJ_P): Likewise.
1903         * semantics.c (finish_compound_literal): Do not permit compound
1904         literals of non-object types.
1905
1906         PR c++/27806
1907         * typeck.c (original_type): Robustify.
1908
1909 2006-06-05  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1910
1911         PR c++/27804
1912         * init.c (constant_value_1): Return decl instead of error_mark_node
1913         for invalid initializers.
1914
1915 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
1916
1917         PR c++/27592
1918         * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion
1919         on operand of the COND_EXPR for the null pointer check.
1920
1921 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
1922
1923         PR c++/26740
1924         * typeck.c (build_unary_op): Mark the function as being used.
1925
1926 2006-06-01  Alexandre Oliva  <aoliva@redhat.com>
1927
1928         PR c++/26660
1929         * parser.c (cp_parser_initial_pragma): Read one more token for
1930         caller after reading PCH file in.
1931
1932 2006-05-31  Mark Mitchell  <mark@codesourcery.com>
1933
1934         PR c++/27801
1935         * call.c (perform_implicit_conversion): Do not actually perform
1936         conversions in templates.
1937
1938         PR c++/26496
1939         * call.c (resolve_args): Check for invalid uses of bound
1940         non-static member functions.
1941         * init.c (build_offset_ref): Return error_mark_node for errors.
1942
1943         PR c++/27385
1944         * decl.c (reshape_init): Robustify.
1945         (reshape_init_array_1): Likewise.
1946
1947 2006-05-30  Mark Mitchell  <mark@codesourcery.com>
1948
1949         PR c++/27808
1950         * parser.c (cp_parser_decl_specifier_seq): Issue errors about
1951         "friend" specifiers that do not appear in class scopes.
1952
1953         PR c++/27803
1954         * class.c (check_bitfield_decl): Ensure that all bitfields have
1955         integral type.
1956
1957 2006-05-29  Kazu Hirata  <kazu@codesourcery.com>
1958
1959         * pt.c (convert_nontype_argument): Fix a typo in an error
1960         message.
1961
1962 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
1963
1964         * decl.c, decl2.c, parser.c: Fix comment typos.  Follow
1965         spelling conventions.
1966
1967 2006-05-24  Mark Mitchell  <mark@codesourcery.com>
1968
1969         PR c++/20103
1970         * decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
1971         error_mark_node to indicate an initialization is OK.
1972         (start_decl): Likewise.  Adjust call to start_decl_1.
1973         (start_decl_1): Add initialized parameter.  Simplify.
1974         * except.c (initialize_handler_parm): Adjust call to
1975         setart_decl_1.
1976         (expand_start_catch_block): Let cp_finish_decl initialize catch
1977         parameters.
1978         * cp-tree.h (start_decl_1): Adjust prototype.
1979         * pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
1980         (instantiate_decl): Let cp_finish_decl handle initialization.
1981         * semantics.c (finish_compound_literal): Create a temporary
1982         variable for the literal.
1983         * typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
1984         cases.
1985         * decl2.c (finish_static_data_member_decl): Don't set
1986         DECL_INITIAL.
1987         (grokfield): Do not try to initialize functions.
1988
1989 2006-05-23  Mark Mitchell  <mark@codesourcery.com>
1990
1991         PR c++/20173
1992         * pt.c (determine_specialization): Disallow partial
1993         specializations of templates.
1994
1995 2006-05-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1996
1997         PR c++/27716
1998         * typeck.c (build_modify_expr): Test arguments for error_operand_p.
1999
2000         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.
2001
2002 2006-05-21  Mark Mitchell  <mark@codesourcery.com>
2003
2004         PR c++/27210
2005         * cp-tree.h (cp_save_expr): New function.
2006         * init.c (build_new): Correct logic for zero-element array
2007         warning.  Use cp_save_expr.
2008         * tree.c (cp_save_expr): New function.
2009
2010 2006-05-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2011
2012         PR c++/27398
2013         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
2014         or void_type_node.
2015
2016 2006-05-19  Mike Stump  <mrs@apple.com>
2017
2018         * typeck.c (default_conversion): Remove static.
2019
2020 2006-05-19  Mark Mitchell  <mark@codesourcery.com>
2021
2022         PR c++/26433
2023         * cp-tree.h (begin_function_try_block): Change prototype.
2024         (finish_function_handler_sequence): Likewise.
2025         * parser.c (cp_parser_function_try_block): Adjust calls.
2026         * pt.c (tsubst_expr): Adjust calls.
2027         * semantics.c (begin_function_try_block): Create an artificial
2028         outer scope.
2029         (finish_function_handler_sequence): Close it.
2030
2031 2006-05-18  Mark Mitchell  <mark@codesourcery.com>
2032
2033         PR c++/27471
2034         PR c++/27506
2035         * typeck.c (decay_conversion): Convert bitfields to their declared
2036         types here.  Improve documentation.  Avoid use of cp_convert.
2037         (default_conversion): Make it static.  Perform integral promotions
2038         before lvalue-to-rvalue, function-to-pointer, and array-to-pointer
2039         conversions.
2040         * init.c (build_init): Remove.
2041         (expand_default_init): Do not call rvalue.
2042         * call.c (null_ptr_cst_p): Robustify.
2043         (build_conditional_expr): Tidy.
2044         * except.c (build_throw): Do not perform lvalue-to-rvalue
2045         conversion on operand before initializing temporary.
2046         * tree.c (convert.h): Include it.
2047         (convert_bitfield_to_declared_type): Use convert_to_integer, not
2048         cp_convert.
2049         (rvalue): Don't convert bitfields to their declared type here.
2050         * cp-tree.h (build_init): Remove.
2051         (default_conversion): Likewise.
2052         * typeck2.c (build_m_component_ref): Do not perform
2053         lvalue-to-rvalue, function-to-pointer, or array-to-pointer
2054         conversions here.  Correct error message.
2055
2056 2006-05-17  Mark Mitchell  <mark@codesourcery.com>
2057
2058         PR c++/26122
2059         * decl2.c (check_member_template): Remove checks for virtual
2060         functions.
2061         * parser.c (cp_parser_function_specifier_opt): Complain about
2062         virtual templates.
2063         (cp_parser_pure_specifier): Likewise.
2064
2065         PR c++/26068
2066         * parser.c (cp_parser_set_storage_class): Check for
2067         invalid uses of storage classes on unbraced linkage
2068         specifications.
2069         (cp_parser_decl_specifier_seq): Pass keywords, not storage classes,
2070         to cp_parser_set_storage_class.
2071
2072 2006-05-17  Jakub Jelinek  <jakub@redhat.com>
2073
2074         PR c++/27491
2075         * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR
2076         on CONSTRUCTORs.
2077
2078         PR middle-end/27415
2079         * parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
2080         on combined parallel workshare constructs.
2081         * pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag.
2082
2083 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
2084
2085         PR driver/26885
2086         * Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS).
2087
2088 2006-05-15  Mark Mitchell  <mark@codesourcery.com>
2089
2090         PR c++/27339
2091         * cp-tree.h (perform_access_checks): New function.
2092         * semantics.c (perform_access_checks): New function.
2093         (perform_deferred_access_checks): Use it.
2094         * parser.c (cp_parser_simple_declaration): Adjust call to
2095         cp_parser_init_declarator.
2096         (cp_parser_type_parameter): Do not defer checks in default
2097         arguments.
2098         (cp_parser_explicit_specialization): Adjust call to
2099         cp_parser_single_declaration.
2100         (cp_parser_init_declarator): Perform template-parameter access
2101         checks.
2102         (cp_parser_parameter_declaration): Do not defer checks for
2103         template parameter default arguments.
2104         (cp_parser_template_declaration_after_export): Gather access
2105         checks for template parameters, and pass them to
2106         cp_parser_single_declaration.
2107         (cp_parser_template_parameter_access_checks): New function.
2108         (cp_parser_single_declaration): Add checks parameter.
2109
2110         PR c++/27505
2111         * call.c (convert_like_real): Convert bitfields to their declared
2112         types when forming an rvalue.
2113         * tree.c (convert_bitfield_to_declared_type): New function.
2114         (rvalue): Use it.
2115         * cp-tree.h (convert_bitfield_to_declare_type): Declare it.
2116
2117 2006-05-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2118
2119         PR c++/27582
2120         * pt.c (any_dependent_template_arguments_p): Return early on invalid
2121         argument list.
2122
2123         PR c++/27581
2124         * search.c (adjust_result_of_qualified_name_lookup): Skip on
2125         invalid context_class.
2126
2127         PR c++/27315
2128         * pt.c (do_decl_instantiation): Return early on invalid decl.
2129
2130         PR c++/27559
2131         * pt.c (push_template_decl_real): Return error_mark_node instead
2132         of broken decl.
2133
2134         PR c++/27496
2135         * pt.c (tsubst_friend_class): Return early on invalid friend
2136         declarations.
2137
2138 2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>
2139
2140         * Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H).
2141         (cp/decl2.o): Likewise.
2142         (cp/typeck.o): Likewise.
2143         (cp/cvt.o): Likewise.
2144         (cp/parser.o): Likewise.
2145         (cp/call.o): Replace target.h with $(TARGET_H).
2146
2147 2006-05-14  Alexandre Oliva  <aoliva@redhat.com>
2148
2149         * pt.c (build_non_dependent_expr): Leave ADDR_EXPR of
2150         COMPONENT_REF alone.
2151
2152 2006-05-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2153
2154         PR c++/27547
2155         * decl.c (copy_fn_p): Return early on non-member functions.
2156
2157 2006-05-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2158
2159         PR c++/27447
2160         * decl2.c (build_memfn_type): Skip invalid functions and class types.
2161
2162 2006-05-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2163
2164         PR c++/27427
2165         * pt.c (convert_nontype_argument): Return early on invalid arguments.
2166
2167         * pt.c (process_template_parm): Remove superfluous temporary.
2168
2169         PR c++/27430
2170         * pt.c (process_template_parm): Handle erroneous non-type parameters.
2171
2172         PR c++/27423
2173         * typeck.c (convert_for_initialization): Skip erroneous types.
2174
2175         PR c++/27422
2176         * typeck.c (convert_arguments): Return early on args with
2177         invalid types.
2178
2179 2006-05-03  Aldy Hernandez  <aldyh@redhat.com>
2180
2181         PR/21391
2182         * typeck.c (build_static_cast_1): Save casted types in used types
2183         hash table.
2184         (build_reinterpret_cast_1): Same.
2185         * rtti.c (build_dynamic_cast_1): Same.
2186
2187 2006-05-04  Jakub Jelinek  <jakub@redhat.com>
2188
2189         PR c++/27359
2190         * parser.c (cp_parser_omp_for_loop): Only call
2191         cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
2192         called.
2193
2194 2006-05-02  Mark Mitchell  <mark@codesourcery.com>
2195
2196         PR c++/27102
2197         * decl.c (grokdeclarator): Robustify checks for defining members
2198         of incomplete types.
2199
2200         PR c++/27309
2201         * class.c (add_method): Call grok_special_member_properties.
2202         * decl.c (grokdeclarator): Don't call it here.
2203         (copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
2204         assignment operator.  Set TYPE_HAS_CONSTURCTOR if DECL is a
2205         constructor.
2206         (start_method): Don't call grok_special_member_properties.
2207         * method.c (implicitly_declare_fn): Likewise.
2208         * pt.c (instantiate_class_template): Likewise.
2209         * decl2.c (grokfield): Likewise.
2210
2211 2006-05-02  Jakub Jelinek  <jakub@redhat.com>
2212
2213         PR middle-end/27337
2214         * cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
2215         * cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
2216         * cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.
2217
2218 2006-04-30  Mark Mitchell  <mark@codesourcery.com>
2219
2220         PR c++/27094
2221         * pt.c (tsubst_default_argument): Increment function_depth around
2222         call to tsubst_expr.
2223         * parser.c (cp_parser_parameter_declaration): Likewise.
2224         * decl2.c (mark_used): Tidy.
2225
2226 2006-04-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2227
2228         PR c++/27278
2229         * decl.c (grok_op_properties): Skip operators with invalid args
2230         when checking for class-type or enum-type args.
2231
2232 2006-04-29  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2233
2234         PR c++/27279
2235         * decl.c (copy_fn_p): Skip functions with invalid first arg.
2236
2237 2006-04-27  Mark Mitchell  <mark@codesourcery.com>
2238
2239         PR c++/27292
2240         * tree.c (rvalue): Convert bitfields to their declared types.
2241
2242         PR c++/27102
2243         * typeck2.c (cxx_incomplete_type_diagnostic): Handle
2244         TYPENAME_TYPE.
2245
2246 2006-04-24  Mark Mitchell  <mark@codesourcery.com>
2247
2248         PR c++/27292
2249         * typeck.c (decay_conversion): Don't adjust bitfield types.
2250         (perform_integral_promotions): Treat bitfield enums as enums, not
2251         as short integer types.
2252         * tree.c (rvalue): Convert bitfields to their correct types.
2253
2254 2006-04-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2255
2256         PR c++/19963
2257         * class.c (layout_class_type): Skip fields with invalid types.
2258
2259 2006-04-23  Mark Mitchell  <mark@codesourcery.com>
2260
2261         PR c++/26912
2262         * cp-tree.h (build_this_parm): Declare.
2263         (grok_method_quals): Remove.
2264         (build_memfn_type): Declare.
2265         (build_artificial_parm): Declare.
2266         (do_friend): Remove quals parameter.
2267         * decl.c (build_this_parm): New function.
2268         (grokfndecl): Use it.  Do not pass quals to grokclassfn.
2269         (grokdeclarator): Rename quals to memfn_quals.  Avoid allocating
2270         unnecessary TYPE_DECLs.  Correct qualification of member function
2271         types.  Tidy.
2272         * method.c (implicitly_declare_fn): Use build_this_parm.
2273         * friend.c (do_friend): Remove quals parameter.
2274         * decl2.c (grok_method_quals): Remove.
2275         (build_memfn_type): New function.
2276         (build_artificial_parm): Give it external linkage.
2277         (grokclassfn): Remove quals parameter.  Do not build "this"
2278         PARM_DECL here.
2279
2280         PR c++/26534
2281         * cp-tree.h (is_bitfield_expr_with_lowered_type): New function.
2282         * typeck.c (is_bitfield_expr_with_lowered_type): New function.
2283         (decay_conversion): Convert bitfield expressions to the correct
2284         type.
2285         (build_modify_expr): Remove spurious conversions.
2286         * class.c (layout_class_type): Modify the type of bitfields to
2287         indicate a limited range.
2288         * call.c (standard_conversion): Adjust the type of bitfield
2289         expressions used in an rvalue context.
2290         (build_conditional_expr): Likewise.
2291
2292 2006-04-22  Kazu Hirata  <kazu@codesourcery.com>
2293
2294         * decl.c: Fix comment typos.
2295
2296 2006-04-21  Eric Christopher  <echristo@apple.com>
2297
2298         * decl.c: Fix typo in function name.
2299
2300 2006-04-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2301
2302         PR c++/26558
2303         * parser.c (cp_parser_class_name): Check for invalid typenames.
2304         Rearrange code.
2305
2306         PR c++/26739
2307         * pt.c (tsubst_friend_function): Return early if
2308         pushdecl_namespace_level fails.
2309
2310         PR c++/26036
2311         * typeck.c (convert_arguments): Return error_mark_node instead of
2312         error_mark_list.
2313         * cp-tree.h (error_mark_list): Remove declaration.
2314         * decl.c (error_mark_list): Remove definition.
2315         (cxx_init_decl_processing): Do not initialize error_mark_list.
2316
2317         PR c++/10385
2318         * rtti.c (build_dynamic_cast_1): Check for invalid conversions
2319         before calling convert_to_reference.
2320         * cvt.c (convert_to_reference): Assert that reftype is a
2321         REFERENCE_TYPE.
2322
2323 2006-04-19  Mark Mitchell  <mark@codesourcery.com>
2324
2325         PR c++/27102
2326         * class.c (currently_open_class): Tidy.
2327         * decl.c (grokdeclarator): If we encounter an erroneous
2328         declarator, assume that we have already issued an error message
2329         and return.  Return error_mark_node instead of NULL_TREE in more
2330         places.  Issue errors about function definitions that do not have
2331         a function declarator.  Check for complete types for all function
2332         definitions.
2333         * cp-tree.h (cp_error_declarator): Remove.
2334         (currently_open_class): Change return type.
2335         * parser.c (cp_parser_id_expression): Add optional_p parameter.
2336         (cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
2337         (cp_parser_id_expression): Likewise.
2338         (cp_parser_unqualified_id): If the name is optional, return
2339         NULL_TREE.
2340         (cp_parser_postfix_dot_deref_expression): Adjust calls.
2341         (cp_parser_type_parameter): Likewise.
2342         (cp_parser_unqualified_id): Likewise.
2343         (cp_parser_direct_declarator): Likewise.
2344         (cp_parser_declarator_id): Add optional_p parameter.
2345         (cp_parser_function_definition_from_specifiers_and_declarator):
2346         Assume that start_function indicates failure only if it has issued
2347         an error.
2348         (cp_parser_omp_var_list_no_open): Adjust calls.
2349
2350 2006-04-17  Janis Johnson  <janis187@us.ibm.com>
2351
2352         PR c++/26114, c++/26115
2353         * typeck.c (cxx_mark_addressable): Restore check for extra_warnings.
2354         * class.c (check_field_decls): Ditto.
2355
2356 2006-04-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2357
2358         * init.c (build_offset_ref): Remove superfluous temporary.
2359
2360 2006-04-16  Mark Mitchell  <mark@codesourcery.com>
2361
2362         PR c++/26365
2363         * typeck.c (finish_class_member_access_expr): Robustify
2364
2365 2006-04-15  Kazu Hirata  <kazu@codesourcery.com>
2366
2367         * Make-lang.in (cp/pt.o): Depend on vecprim.h.
2368         * pt.c: Include vecprim.h.
2369         (inline_parm_levels): Change the type to VEC(int,heap) *.
2370         (inline_parm_levels_used): Remove.
2371         (maybe_begin_member_template_processing,
2372         maybe_end_member_template_processing): Use VEC instead of
2373         VARRAY.
2374
2375         * cp/call.c: Fix comment typos.
2376
2377 2006-04-12  Mark Mitchell  <mark@codesourcery.com>
2378
2379         * parser.c (cp_parser_init_declarator): Initialize local variables
2380         aggressively.
2381
2382 2006-04-12  Roger Sayle  <roger@eyesopen.com>
2383
2384         * parser.c (cp_parser_init_declarator): Initialise
2385         is_parenthesized_init to false to avoid compiler warning.
2386
2387 2006-04-11  Mark Mitchell  <mark@codesourcery.com>
2388
2389         * cp-tree.h (build_operator_new_call): Adjust prototype.
2390         (build_new_method_call): Likewise.
2391         (build_op_delete_call): Likewise.
2392         * init.c (build_raw_new_expr): New function.
2393         (build_new_1): Pass information as parameters, rather than
2394         bundling it into a NEW_EXPR.
2395         (build_new): Adjust accordingly.
2396         (build_vec_delete_1): Adjust for changes to build_op_delete_call.
2397         (build_delete): Likewise.
2398         * decl.c (finish_destructor_body): Likewise.
2399         * call.c (build_operator_new_call): Return the allocation function
2400         used.
2401         (build_op_delete_call): Take allocation function as parameter.
2402         (build_special_member_call): Adjust call to build_new_method_call.
2403         (build_new_method_call): Return function called.
2404         * pt.c (tsubst_copy_and_build): Adjust call to
2405         build_new_method_call.
2406         * semantics.c (finish_call_expr): Likewise.
2407         * parser.c (cp_parser_postfix_expression): Likewise.
2408         * typeck2.c (cxx_incomplete_type_diagnostic): Refer to
2409         "incomplete", not "undefined", types.
2410
2411         PR c++/26295
2412         * decl.c (grokdeclarator): Remove namespace-handling code for
2413         pointers-to-members.
2414         * parser.c (cp_parser_ptr_operator): Check for qualified names
2415         using namespaces.
2416
2417         PR c++/26122
2418         * parser.c (cp_parser_init_declarator): Adjust logic for deciding
2419         whether or not to look for a pure-specifier.
2420         (cp_parser_member_declaration): Likewise.
2421
2422 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
2423
2424         * decl2.c, pt.c, semantics.c: Fix comment typos.
2425
2426 2006-04-06  Roger Sayle  <roger@eyesopen.com>
2427
2428         * call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check.
2429
2430 2006-04-05  Jason Merrill  <jason@redhat.com>
2431
2432         * name-lookup.c (push_namespace_with_attribs): Temporarily disable
2433         default hidden visibility for anonymous namespace.
2434
2435 2006-03-29  Roger Sayle  <roger@eyesopen.com>
2436
2437         PR c++/22494
2438         * init.c (build_vec_delete_1): Convert BASE pointer's type to
2439         the base pointer type to avoid a type mismatch in the EQ_EXPR.
2440
2441 2006-03-24  Carlos O'Donell  <carlos@codesourcery.com>
2442
2443         * search.c (maybe_suppress_debug_info): If
2444         flag_emit_class_debug_always then don't suppress.
2445
2446 2006-03-22  Jason Merrill  <jason@redhat.com>
2447
2448         * name-lookup.c (push_namespace_with_attribs): Only apply hidden
2449         visibility to anonymous namespaces if HAVE_GAS_HIDDEN.
2450
2451 2006-03-21  Jakub Jelinek  <jakub@redhat.com>
2452
2453         PR c++/26691
2454         * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments.
2455
2456 2006-03-21  Jason Merrill  <jason@redhat.com>
2457
2458         PR c++/21581
2459         * parser.c (cp_parser_declaration): Support attributes on
2460         anonymous namespaces.
2461         * name-lookup.c (push_namespace_with_attribs): Anonymous
2462         namespaces default to hidden visibility.
2463
2464 2006-03-20  Jason Merrill  <jason@redhat.com>
2465
2466         PR c++/21764, c++/19238
2467         * decl.c (cp_finish_decl): Call determine_visibility later.
2468         (start_preparsed_function): Likewise.
2469         * cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
2470         (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
2471         * name-lookup.h (struct cp_binding_level): Add has_visibility
2472         bitfield.
2473         * name-lookup.c: Include c-pragma.h.
2474         (push_namespace_with_attribs): Split out from push_namespace.
2475         Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
2476         (leave_scope): Pop visibility if appropriate.
2477         * decl2.c (determine_visibility_from_class): Split out from...
2478         (determine_visibility): ...here.  Handle function scope and
2479         nested classes.
2480         (import_export_decl): Move visibility handling to
2481         determine_visibility_from_class.
2482         * parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
2483         attributes on namespace declarations.
2484
2485 2006-03-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2486
2487         PR c++/6634
2488         * decl.c (grokdeclarator): Do not accept long long double.
2489         Reorganize checks for invalid (combinations of) type modifiers.
2490         Quote modifiers in messages.
2491
2492 2006-03-09  Jason Merrill  <jason@redhat.com>
2493
2494         PR c++/16387, c++/16389
2495         * typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions.
2496         (cxx_sizeof_or_alignof_expr): Split out from here.
2497
2498 2006-03-09  Diego Novillo  <dnovillo@redhat.com>
2499
2500         Merge from gomp-20050608-branch
2501
2502         2006-02-02  Diego Novillo  <dnovillo@redhat.com>
2503
2504                 * decl.c (pop_labels_1): Use appropriate pointer casting.
2505                 (poplevel_named_label_1): Likewise.
2506                 (named_label_entry_hash): Likewise.
2507                 (named_label_entry_eq): Likewise.
2508                 (check_goto): Likewise.
2509                 (define_label): Likewise.
2510
2511         2006-01-26  Diego Novillo  <dnovillo@redhat.com>
2512
2513                 * cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead
2514                 of TREE_BLOCK.
2515                 * pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND
2516                 instead of TREE_CODE/TREE_OPERAND.
2517                 * semantics.c: Likewise.
2518                 * parser.c: Likewise.
2519
2520         2005-11-10  Diego Novillo  <dnovillo@redhat.com>
2521
2522                 * parser.c (cp_parser_omp_threadprivate): Emit diagnostic if
2523                 target does not support TLS.
2524
2525         2005-11-09  Jakub Jelinek  <jakub@redhat.com>
2526
2527                 * decl.c (redeclaration_error_message): Don't error about
2528                 DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P
2529                 (olddecl).
2530
2531         2005-11-08  Jakub Jelinek  <jakub@redhat.com>
2532
2533                 PR c++/24735
2534                 * semantics.c (finish_omp_barrier, finish_omp_flush): New
2535                   functions.
2536                 * parser.c (cp_parser_omp_barrier): Call finish_omp_barrier.
2537                 (cp_parser_omp_flush): Call finish_omp_flush.
2538                 * cp-tree.h (finish_omp_barrier, finish_omp_flush): New
2539                   prototypes.
2540
2541                 PR c++/24734
2542                 * pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED.
2543
2544         2005-11-03  Jakub Jelinek  <jakub@redhat.com>
2545
2546                 * semantics.c (finish_omp_threadprivate): Error on class-scope
2547                 variables.
2548
2549         2005-11-02  Jakub Jelinek  <jakub@redhat.com>
2550
2551                 * parser.c (cp_parser_omp_all_clauses): If some clause
2552                 type is not allowed, don't remove just one of the
2553                 clauses, but all clauses added in that loop round.
2554
2555                 * semantics.c (finish_omp_clauses): Fix function
2556                 comment. Don't handle non-const or mutable specially,
2557                 as const and not mutable is predetermined shared and
2558                 that leads to double error. Don't ICE if copyin var is
2559                 PARM_DECL.
2560
2561                 PR c++/24613
2562                 * parser.c (cp_parser_pragma): Diagnose
2563                 PRAGMA_OMP_SECTION outside of PRAGMA_OMP_SECTIONS
2564                 construct.
2565
2566                 * semantics.c (finish_omp_threadprivate): Error if V
2567                   is automatic variable or has incomplete type.
2568
2569         2005-11-01  Diego Novillo  <dnovillo@redhat.com>
2570
2571                 * parser.c (cp_parser_omp_all_clauses): Use
2572                 OMP_CLAUSE_CHAIN instead of TREE_CHAIN.
2573
2574         2005-11-01  Diego Novillo  <dnovillo@redhat.com>
2575
2576                 * parser.c (cp_parser_omp_all_clauses): When emitting an
2577                 error message, remove the invalid clause from the list.
2578
2579         2005-10-31  Diego Novillo  <dnovillo@redhat.com>
2580
2581                 * parser.c (cp_parser_omp_parallel): Do not allow 'nowait' in
2582                 combined parallel+workshare directives.
2583
2584         2005-10-31  Richard Henderson  <rth@redhat.com>
2585
2586                 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DTOR):
2587                 Use cxx_omp_clause_dtor.
2588                 * cp-tree.h (CP_OMP_CLAUSE_INFO): New.
2589                 (cxx_omp_clause_dtor): New.
2590                 * cp-gimplify.c (cxx_omp_clause_apply_fn): New.
2591                 (cxx_omp_clause_default_ctor): Use it.
2592                 (cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op):
2593                 Likewise.
2594                 (cxx_omp_clause_dtor): New.
2595                 * semantics.c (finish_omp_clauses): Rewrite cdtor
2596                 checking to fill in CP_OMP_CLAUSE_INFO.  Don't
2597                 specialcase LASTPRIVATE for removal.
2598                 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
2599                 cxx_omp_clause_assign_op): Move to cp-gimplify.c.
2600
2601         2005-10-28  Jakub Jelinek  <jakub@redhat.com>
2602
2603                 * semantics.c (finish_omp_threadprivate): If
2604                   DECL_RTL_SET_P, call make_decl_rtl again so that
2605                   encode_section_info can update SYMBOL_REF's flags.
2606
2607         2005-10-26  Jakub Jelinek  <jakub@redhat.com>
2608
2609                 * semantics.c (finish_omp_for): Don't segfault if COND
2610                 or INCR is NULL.  If not calling c_finish_omp_for
2611                 right away and one of COND and INCR is NULL, issue
2612                 error and don't expand anything.
2613
2614                 PR c++/24512
2615                 * cp-tree.h (finish_omp_for): Add PRE_BODY argument.
2616                 * semantics.c (finish_omp_for): Likewise.  Set
2617                 OMP_FOR_PRE_BODY to PRE_BODY if deferring, add it
2618                 into the current statement list if not processing
2619                 template decl or pass it to c_finish_omp_for.
2620
2621                 * parser.c (cp_parser_omp_for_loop): Expand optional DECL_EXPRs
2622                 into PRE_BODY statement list.  Pass it to finish_omp_for.
2623                 * pt.c (tsubst_expr) <case OMP_FOR>: tsubst_expr also
2624                 OMP_FOR_PRE_BODY into PRE_BODY stmt list, pass it to
2625                 finish_omp_for.  Put all the statements into sk_omp
2626                 scope.
2627
2628         2005-10-25  Jakub Jelinek  <jakub@redhat.com>
2629
2630                 PR c++/24516
2631                 * parser.c (struct cp_parser): Rename in_iteration_statement
2632                 field to in_statement.
2633                 (IN_SWITCH_STMT, IN_ITERATION_STMT): Define.
2634                 (IN_OMP_BLOCK, IN_OMP_FOR): Change values.
2635                 (cp_parser_new, cp_parser_begin_omp_structured_block,
2636                 cp_parser_end_omp_structured_block,
2637                 cp_parser_omp_for_loop): Adjust for
2638                 in_iteration_statement renaming.
2639                 (cp_parser_selection_statement): Save
2640                 parser->in_iteration, or it temporarily with
2641                 IN_SWITCH_STMT for the
2642                 cp_parser_implicitly_scoped_statement call.
2643                 (cp_parser_iteration_statement): Adjust for
2644                 in_iteration_statement renaming.  Use
2645                 IN_ITERATION_STMT rather than true.
2646                 (cp_parser_jump_statement): Adjust for
2647                 in_iteration_statement renaming and new values.  Don't
2648                 error on break in a switch statement within OMP_FOR or
2649                 OpenMP structured block.
2650
2651                 PR c++/24513
2652                 * parser.c (cp_parser_cache_group): Don't stop if next
2653                 token is CPP_PRAGMA_EOL and end is CPP_PRAGMA_EOL as
2654                 well.  If current token is CPP_PRAGMA, consume
2655                 everything until CPP_PRAGMA_EOL inclusive.
2656
2657         2005-10-24  Jakub Jelinek  <jakub@redhat.com>
2658
2659                 PR c++/24502
2660                 * semantics.c (finish_omp_for): Handle MODOP_EXPR in
2661                 addition to MODIFY_EXPR.
2662
2663         2005-10-23  Richard Henderson  <rth@redhat.com>
2664
2665                 * cp-gimplify.c (struct cp_gimplify_ctx): Remove.
2666                 (bc_label): New.
2667                 (begin_bc_block, finish_bc_block): Use it.
2668                 (push_context, pop_context): Remove.
2669                 (cp_genericize): Don't use them.  Assert bc_label is null.
2670                 * semantics.c (finish_omp_clauses): Create a fake data
2671                 element of TYPE for probing ctors.
2672
2673         2005-10-23  Richard Henderson  <rth@redhat.com>
2674
2675                 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): New.
2676                 (LANG_HOOKS_OMP_CLAUSE_COPY_CTOR): New.
2677                 (LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP): New.
2678                 (LANG_HOOKS_OMP_CLAUSE_DTOR): New.
2679                 * semantics.c (finish_omp_clauses): Look through
2680                 arrays when looking up special member calls.  Also
2681                 remove FIRSTPRIVATE when LASTPRIVATE fails.
2682                 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor): New.
2683                 (cxx_omp_clause_assign_op): New.
2684                 * cp-tree.h: Declare them.
2685
2686         2005-10-21  Richard Henderson  <rth@redhat.com>
2687
2688                 * decl.c (check_previous_goto_1): Return false if error.
2689                 (check_switch_goto): Likewise.
2690                 (finish_case_label): Don't emit the case label on error.
2691                 * parser.c (struct cp_parser): Revert
2692                 in_switch_statement_p changes.
2693                 (cp_parser_labeled_statement,
2694                 cp_parser_selection_statement): Likewise.
2695                 (cp_parser_begin_omp_structured_block): Don't save...
2696                 (cp_parser_end_omp_structured_block): or restore
2697                 in_switch_statement_p.
2698
2699         2005-10-21  Richard Henderson  <rth@redhat.com>
2700
2701                 * semantics.c (finish_omp_threadprivate): Set
2702                 decl_flags.u2sel when necessary.
2703
2704         2005-10-21  Richard Henderson  <rth@redhat.com>
2705
2706                 * decl.c (poplevel_named_label_1): Restore creation of the
2707                 bad_decls list.
2708                 (decl_jump_unsafe): Check for error_mark_node types.
2709                 (check_goto): Don't check cdtor_label.  Don't use identify_goto.
2710                 * semantics.c (finish_return_stmt): Do check_omp_return before
2711                 converting to cdtor_label goto.
2712
2713         2005-10-21  Richard Henderson  <rth@redhat.com>
2714
2715                 PR c++/24451
2716                 * decl.c (check_omp_return): Return false on error.
2717                 * cp-tree.h (check_omp_return): Update decl.
2718                 * semantics.c (finish_return_stmt): Avoid adding
2719                 return on error.
2720
2721         2005-10-21  Richard Henderson  <rth@redhat.com>
2722
2723                 * cp-tree.h (struct language_function): Remove
2724                 x_named_label_uses.
2725                 Change x_named_labels to a hashtable.
2726                 (check_omp_return): Declare.
2727                 * decl.c (struct named_label_use_entry): Rename from
2728                 named_label_use_list.  Remove label_decl.
2729                 (struct named_label_entry): Rename from
2730                 named_label_list.  Remove old_value and next.  Change
2731                 in_try_scope and in_catch_scope to bool. Add
2732                 in_omp_scope.
2733                 (pop_labels_1): New.
2734                 (pop_labels): Use it.
2735                 (pop_local_label, poplevel_named_label_1): New.
2736                 (poplevel): Use them.
2737                 (named_label_entry_hash, named_label_entry_eq): New.
2738                 (make_label_decl): Create named_labels.  Move label
2739                 creation bits from lookup_label.
2740                 (declare_local_label): Tidy.
2741                 (identify_goto): Split out from ...
2742                 (check_previous_goto_1): Add exited_omp argument.
2743                 Handle omp scopes.
2744
2745                 (use_label): Merge into...
2746                 (check_goto): ... here.  Handle omp scopes.
2747                 (check_omp_return): New.
2748                 (check_previous_gotos): Merge into...
2749                 (define_label): ... here.
2750                 (save_function_data): Remove x_named_label_uses reference.
2751                 (finish_function): Likewise.
2752                 * name-lookup.h (sk_omp): New.
2753                 * name-lookup.c (begin_scope): Handle it.
2754                 * parser.c (cp_parser_omp_for): Don't create extra
2755                 compound stmt.
2756
2757                 (cp_parser_omp_sections): Likewise.
2758                 * semantics.c (finish_return_stmt): Call check_omp_return.
2759                 (begin_omp_structured_block): Use sk_omp.
2760                 (finish_omp_structured_block): Use do_poplevel.  Don't build a
2761                 MUST_NOT_THROW expression here.
2762                 (begin_omp_parallel, finish_omp_parallel): Don't create extra
2763                 compound statements.
2764
2765         2005-10-21  Diego Novillo  <dnovillo@redhat.com>
2766
2767                 PR 24455
2768                 * cp/cp-tree.h (struct lang_decl_flags): Add field
2769                 threadprivate_p.
2770                 (CP_DECL_IS_THREADPRIVATE): Define.
2771                 * cp/semantics.c (finish_omp_threadprivate): Set.  Do
2772                 not error out if CP_DECL_IS_THREADPRIVATE is set
2773                 already.
2774                 * cp/decl.c (duplicate_decls): Merge
2775                 CP_DECL_THREADPRIVATE_P.
2776
2777         2005-10-20  Richard Henderson  <rth@redhat.com>
2778
2779                 * cp-gimplify.c (cp_gimplify_omp_for): New.
2780                 (cp_gimplify_expr): Call it.
2781                 * cp-tree.h (OMP_FOR_GIMPLIFYING_P): New.
2782                 * parser.c (struct cp_parser): Rename
2783                 in_iteration_statement_p to in_iteration_statement and
2784                 change to unsigned char.  Similarly with
2785                 in_switch_statement.  Update all users.
2786                 (IN_OMP_BLOCK, IN_OMP_FOR): New.
2787                 (cp_parser_labeled_statement): Diagnose case labels
2788                 binding closer to an openmp block nested than the
2789                 switch.
2790                 (cp_parser_jump_statement): Diagnose break and
2791                 continue labels binding closer to an openmp block than
2792                 an iteration or switch.
2793                 (cp_parser_omp_for_loop): Mark in_iteration_statement
2794                 for an omp for.
2795                 (cp_parser_begin_omp_structured_block): New.
2796                 (cp_parser_end_omp_structured_block): New.
2797                 (cp_parser_omp_structured_block): Use them.
2798                 (cp_parser_omp_for, cp_parser_omp_sections_scope): Likewise.
2799                 (cp_parser_omp_parallel): Likewise.
2800
2801         2005-10-20  Richard Henderson  <rth@redhat.com>
2802
2803                 * semantics.c (begin_omp_structured_block): New.
2804                 (finish_omp_structured_block): New.
2805                 (begin_omp_parallel, finish_omp_parallel): Use them.
2806                 * parser.c (cp_parser_omp_structured_block): Likewise.
2807                 (cp_parser_omp_for): Likewise.
2808                 (cp_parser_omp_sections_scope): Likewise.
2809                 * cp-tree.h: Declare them.
2810
2811         2005-10-20  Richard Henderson  <rth@redhat.com>
2812
2813                 * parser.c (cp_parser_omp_master): Return the statement.
2814                 (cp_parser_omp_ordered): Likewise.
2815                 (cp_parser_omp_construct): Set the locus for them.
2816
2817         2005-10-19  Richard Henderson  <rth@redhat.com>
2818
2819                 * semantics.c (finish_omp_atomic): Revert to
2820                 uses_template_parms.
2821
2822         2005-10-19  Richard Henderson  <rth@redhat.com>
2823
2824                 * semantics.c (finish_omp_clauses): Avoid
2825                 DECL_THREAD_LOCAL_P on a PARM_DECL.  Remove some
2826                 stub asserts guaranteed to fail.
2827
2828         2005-10-19  Richard Henderson  <rth@redhat.com>
2829
2830                 * cp-tree.h (OMP_ATOMIC_DEPENDENT_P, OMP_ATOMIC_CODE): New.
2831                 (finish_omp_clauses, finish_omp_for, finish_omp_atomic): New.
2832                 * parser.c (cp_parser_omp_clause_copyin): Remove.
2833                 (cp_parser_omp_all_clauses): Use cp_parser_omp_var_list instead.
2834                 Call finish_omp_clauses.
2835                 (cp_parser_omp_clause_if): Don't do error checking here.
2836                 (cp_parser_omp_clause_num_threads): Likewise.
2837                 (cp_parser_omp_clause_schedule): Likewise.
2838                 (cp_parser_omp_atomic): Use finish_omp_atomic.
2839                 (cp_parser_omp_for_loop): Don't discard DECL_EXPR.
2840                 Don't decompose assignment statment here.  Use
2841                 finish_omp_for.
2842
2843                 * pt.c (tsubst_omp_clauses): New.
2844                 (tsubst_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
2845                 OMP_SINGLE, OMP_SECTION, OMP_CRITICAL, OMP_ATOMIC.
2846                 * semantics.c (finish_omp_clauses): New.
2847                 (begin_omp_parallel, finish_omp_parallel): Know Less about the
2848                 internals of the stmt_list stack.
2849                 (finish_omp_for, finish_omp_atomic): New.
2850
2851         2005-10-18  Jakub Jelinek  <jakub@redhat.com>
2852
2853                 * semantics.c (cxx_omp_predetermined_sharing): New function.
2854                 * cp-tree.h (cxx_omp_predetermined_sharing): New prototype.
2855                 * cp-objcp-common.h
2856                 (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
2857
2858         2005-10-18  Richard Henderson  <rth@redhat.com>
2859
2860                 * parser.c (cp_parser_omp_single): Use make_node and accessors
2861                 instead of build.
2862
2863         2005-10-17  Richard Henderson  <rth@redhat.com>
2864
2865                 * parser.c (cp_parser_omp_for_loop): Handle declarations.
2866
2867         2005-10-12  Richard Henderson  <rth@redhat.com>
2868
2869                 * Make-lang.in (CXX_C_OBJS): Add c-omp.o.
2870                 * cp-tree.h (begin_omp_parallel, finish_omp_parallel): Declare.
2871                 (finish_omp_threadprivate): Declare.
2872                 * parser.c (struct cp_lexer): Add in_pragma.
2873                 (cp_lexer_consume_token): Don't consume a PRAGMA_EOL
2874                 when in_pragma.
2875                 (cp_parser_skip_to_closing_parenthesis): Stop at PRAGMA_EOL.
2876                 (cp_parser_skip_to_end_of_statement): Likewise.
2877                 (cp_parser_skip_to_end_of_block_or_statement): Likewise.
2878                 (cp_parser_skip_to_closing_brace): Likewise.
2879                 (cp_parser_skip_to_pragma_eol): Reset in_pragma.
2880                 (cp_parser_require_pragma_eol): New.
2881                 (cp_parser_statement): Add in_compound argument;
2882                 update all callers.
2883                 Restart if a non-statement pragma seen outside a
2884                 compound.
2885                 (cp_parser_statement_seq_opt): Stop at PRAGMA_EOL.
2886                 (cp_parser_declaration_seq_opt): Likewise.
2887                 (cp_parser_member_specification_opt): Likewise.
2888                 (cp_parser_function_definition_after_decl): Likewise.
2889                 (cp_parser_skip_until_found): Likewise.
2890                 (cp_parser_cache_group): Likewise.
2891                 (enum pragma_omp_clause, cp_parser_omp_clause_name,
2892                 check_no_duplicate_clause,
2893                 cp_parser_omp_var_list_no_open,
2894                 cp_parser_omp_var_list, cp_parser_omp_clause_copyin,
2895                 cp_parser_omp_clause_default, cp_parser_omp_clause_if,
2896                 cp_parser_omp_clause_nowait,
2897                 cp_parser_omp_clause_num_threads,
2898                 cp_parser_omp_clause_ordered,
2899                 cp_parser_omp_clause_reduction,
2900                 cp_parser_omp_clause_schedule,
2901                 cp_parser_omp_all_clauses,
2902                 cp_parser_omp_structured_block, cp_parser_omp_atomic,
2903                 cp_parser_omp_barrier, cp_parser_omp_critical,
2904                 cp_parser_omp_flush, cp_parser_omp_for_loop,
2905                 cp_parser_omp_for, cp_parser_omp_master,
2906                 cp_parser_omp_ordered, cp_parser_omp_sections_scope,
2907                 cp_parser_omp_sections, cp_parser_omp_parallel,
2908                 cp_parser_omp_single, cp_parser_omp_threadprivate,
2909                 cp_parser_omp_construct): New.
2910                 (cp_parser_pragma): Handle OpenMP pragmas.
2911                 * semantics.c (finish_omp_threadprivate): New.
2912                 (begin_omp_parallel, finish_omp_parallel): New.
2913
2914         2005-10-11  Richard Henderson  <rth@redhat.com>
2915
2916                 * parser.c (struct cp_token): Add pragma_kind.
2917                 (eof_token): Initialize it.
2918                 (cp_lexer_handle_pragma): Remove.
2919                 (cp_parser_initial_pragma): New.
2920                 (cp_lexer_new_main): Use it.
2921                 (cp_lexer_get_preprocessor_token): Initialize pragma_kind.
2922                 (cp_lexer_print_token): Don't handle CPP_PRAGMA.
2923                 (cp_parser_skip_to_pragma_eol): New.
2924                 (cp_parser_error): Use it.
2925                 (pragma_lex): New.
2926
2927         2005-10-09  Richard Henderson  <rth@redhat.com>
2928
2929                 * lex.c (parse_strconst_pragma): Update for c_lex name change.
2930                 (handle_pragma_java_exceptions): Likewise.
2931                 * parser.c (cp_lexer_new_main): Likewise.
2932
2933         2005-10-06  Richard Henderson  <rth@redhat.com>
2934
2935                 * parser.c (cp_lexer_new_main): Comment out defer_pragmas.
2936                 (cp_lexer_handle_pragma): Comment out
2937                 cpp_handle_deferred_pragma.
2938
2939         2005-10-01  Richard Henderson  <rth@redhat.com>
2940
2941                 * name-lookup.c (lookup_name): Remove prefer_type argument.
2942                 (lookup_name_prefer_type): New function.
2943                 * name-lookup.h (lookup_name_prefer_type): Declare it.
2944                 * decl.c (lookup_and_check_tag): Use it.
2945                 * pt.c (tsubst_friend_class): Likewise. Update for
2946                 lookup_name change.
2947                 (lookup_template_class, tsubst_copy_and_build): Likewise.
2948
2949 2006-03-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2950
2951         PR c++/15759
2952         * tree.c (bot_manip): Don't call mark_used.
2953
2954 2006-03-02  Mike Stump  <mrs@apple.com>
2955
2956         * decl2.c (import_export_decl): Remove redundant call to
2957         targetm.cxx.key_method_may_be_inline ().
2958
2959 2006-03-02  Richard Sandiford  <richard@codesourcery.com>
2960
2961         * decl.c (start_decl): Use have_global_bss_p when deciding
2962         whether to make the decl common.
2963
2964 2006-03-01  Mike Stump  <mrs@apple.com>
2965
2966         PR darwin/25908
2967         * decl2.c (import_export_decl): Fix ABI breakage on darwin.
2968
2969 2006-02-24  Geoffrey Keating  <geoffk@apple.com>
2970
2971         * except.c (expand_start_catch_block): Handle
2972         flag_use_cxa_get_exception_ptr.
2973
2974 2006-02-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2975
2976         PR c++/26291
2977         * decl.c (grok_op_properties): Check for ellipsis in arguments of
2978         operators.
2979
2980 2006-02-20  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
2981
2982         * Make-lang.in (C++): Remove.
2983         (.PHONY): Remove C++.
2984
2985 2006-02-18  Mark Mitchell  <mark@codesourcery.com>
2986
2987         PR c++/26266
2988         * cp-tree.h (cp_finish_decl): Adjust declaration.
2989         (grokbitfield): Likewise.
2990         (finish_static_data_member_decl): Likewise.
2991         * init.c (constant_value_1): Ensure processing_template_decl when
2992         folding non-dependent initializers for static data members of
2993         dependent types.  Return error_mark_node for erroneous
2994         initailizers.
2995         * class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl.
2996         * decl.c (cp_make_fname_decl): Adjust call to cp_finish_decl.
2997         (cp_finish_decl): Add init_const_expr_p parameter.  Set
2998         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
2999         (finish_decl): Adjust call to cp_finish_decl.
3000         (compute_array_index_type): Robustify.
3001         (start_method): Use finish_decl, not cp_finish_decl.
3002         * rtti.c (emit_tinfo_decl): Likewise.
3003         * except.c (initialize_handler_parm): Adjust call to
3004         cp_finish_decl.
3005         (expand_start_catch_block): Likewise.
3006         * cvt.c (build_up_reference): Adjust call to cp_finish_decl.
3007         * pt.c (instantiate_class_template): Adjust call to
3008         finish_static_data_member_decl.
3009         (tsubst_expr): Use finish_decl, not cp_finish_decl.
3010         (instantiate_decl): Adjust call to cp_finish_decl.
3011         * name-lookup.c (pushdecl_top_level_1): Use finish_decl, not
3012         cp_finish_decl.
3013         * decl2.c (finish_static_data_member_decl): Add init_const_expr_p
3014         parameter.
3015         (grokfield): Likewise.
3016         * parser.c (cp_parser_condition): Check for constant initializers.
3017         (cp_parser_init_declarator): Adjust calls to grokfield and
3018         cp_finish_decl.  Don't set
3019         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
3020         (cp_parser_member_declaration): Likewise.
3021         (cp_parser_objc_class_ivars): Likewise.
3022
3023 2006-02-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3024
3025         * call.c (standard_conversion): Return NULL instead of 0.
3026         (build_user_type_conversion_1): Likewise.
3027         (tourney): Likewise.
3028         * decl.c (redeclaration_error_message): Likewise.
3029         * error.c (language_to_string): Likewise.
3030
3031 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3032
3033         * cp-tree.h (warn_hidden): Remove prototype.
3034         * class.c (warn_hidden): Make static.
3035
3036         * cp-tree.h (build_type_conversion): Remove prototype.
3037         * cvt.c (build_type_conversion): Add prototype, make static.
3038
3039         * cp-tree.h (push_tinst_level): Remove prototype.
3040         (pop_tinst_level): Likewise.
3041         * pt.c (push_tinst_level): Add prototype, make static.
3042         (pop_tinst_level): Likewise.
3043
3044 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3045
3046         * decl.c (grokdeclarator): Return NULL_TREE instead of 0.
3047         * typeck.c (unary_complex_lvalue): Likewise.
3048
3049 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3050
3051         * lex.c (parse_strconst_pragma): Return error_mark_node instead of
3052         "(tree)-1" to indicate failure.  Simplify.
3053         (handle_pragma_interface): Test for error_mark_node instead of
3054         "(tree)-1".
3055         (handle_pragma_implementation): Likewise.
3056
3057 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3058
3059         PR c++/26151
3060         * parser.c (cp_parser_decl_specifier_seq): Check for duplicate
3061         decl-specifiers.  Remove extra check for duplicate 'friend'.
3062         * decl.c (grokdeclarator): Remove check for duplicate
3063         decl-specifiers.  Set longlong together with long_p.
3064
3065 2006-02-12  Jason Merrill  <jason@redhat.com>
3066
3067         PR c++/24996
3068         * except.c (build_throw): Add a CLEANUP_POINT_EXPR inside the
3069         TRY_CATCH_EXPR or MUST_NOT_THROW_EXPR.
3070
3071 2006-02-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3072
3073         * class.c (debug_class): Remove extern.
3074         (debug_thunks): Likewise.
3075
3076 2006-02-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3077
3078         * typeck.c (string_conv_p): Don't test for flag_const_strings.
3079
3080 2006-02-08  Jason Merrill  <jason@redhat.com>
3081
3082         PR c++/25979
3083         * cp-gimplify.c (cp_gimplify_expr): Don't call
3084         cp_gimplify_init_expr for MODIFY_EXPRs.
3085         * typeck2.c (split_nonconstant_init_1): Use INIT_EXPR.
3086
3087 2006-02-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3088
3089         PR c++/26071
3090         * decl.c (grokdeclarator): Set dname also for destructor.
3091
3092         PR c++/26070
3093         * decl.c (grokdeclarator): Clear storage_class together with staticp.
3094
3095 2006-02-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3096
3097         * cp-tree.h (tf_warning_or_error): Renamed from tf_warn_or_error.
3098         (cp_build_qualified_type): Propogate renaming.
3099         * call.c (convert_like_real): Likewise.
3100         * cvt.c (cp_convert_to_pointer, convert_to_reference): Likewise.
3101         * decl.c (make_typename_type, grokdeclarator): Likewise.
3102         * pt.c (tsubst_friend_function, instantiate_class_template,
3103         tsubst_default_argument, instantiate_decl,
3104         tsubst_initializer_list, tsubst_enum): Likewise.
3105         * semantics.c (finish_template_type): Likewise.
3106         * typeck.c (build_ptrmemfunc, convert_for_assignment): Likewise.
3107
3108 2006-02-07  Dirk Mueller  <dmueller@suse.com>
3109
3110         * typeck.c (build_binary_op): Annotate div-by-zero
3111         warnings to make -Wno-div-by-zero have an effect.
3112
3113 2006-02-07  Mark Mitchell  <mark@codesourcery.com>
3114
3115         PR c++/9737
3116         * pt.c (coerce_template_template_parms): Do not templates with
3117         excess default arguments to match template template parameters
3118         with fewer parameters.
3119         (coerce_template_parms): Add use_default_args parameter; use
3120         default arguments only when true.
3121         (lookup_template_class): Adjust call to coerce_template_parms.
3122         (fn_type_unification): Likewise.
3123         (unify): Likewise.
3124         (get_bindings): Likewise.
3125         (dependent_type_p): Add assertions.
3126
3127 2006-02-06  Roger Sayle  <roger@eyesopen.com>
3128
3129         * decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE.
3130         * rtti.c (typeinfo_in_lib_p): Likewise.
3131         * cp-tree.h (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P): Likewise.
3132         * name-lookup.c (arg_assoc_type): Likewise.
3133
3134 2006-02-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3135
3136         * cp-tree.h (tf_warn_or_error): New substituion flag.
3137         (cp_build_qualified_type): Use it.
3138         * call.c (convert_like_real): Likewise.
3139         * cvt.c (cp_convert_to_pointer): Likewise.
3140         (convert_to_reference): Likewise.
3141         * decl.c (make_typename_type): Likewise.
3142         (grokdeclarator): Likewise.
3143         * pt.c (tsubst_friend_function): Likewise.
3144         (tsubst_friend_class): Likewise.
3145         (instantiate_class_template): Likewise.
3146         (tsubst_default_argument): Likewise.
3147         (instantiate_decl): Likewise.
3148         (tsubst_initializer_list): Likewise.
3149         (tsubst_enum): Likewise.
3150         * semantics.c (finish_template_type): Likewise.
3151         * typeck.c (build_ptrmemfunc): Likewise.
3152         (convert_for_assignment): Likewise.
3153
3154 2006-02-03  Lee Millward  <lee.millward@gmail.com>
3155
3156         * typeck.c (string_conv_p): Pass appropiate
3157         OPT_Wxxxx values when calling warning().
3158         (build_array_ref, cxx_mark_addressable): Likewise.
3159         (check_return_expr): Likewise.
3160
3161         * init.c (perform_member_init): Likewise.
3162         (sort_mem_initializers, emit_mem_initializers): Likewise.
3163
3164         * class.c (check_field_decls): Likewise.
3165         (warn_about_ambiguous_bases): Likewise.
3166
3167         * decl.c (pop_label, poplevel): Likewise.
3168         (duplicate_decls, grok_op_properties): Likewise.
3169         (start_preparsed_function, finish_function): Likewise.
3170
3171         * name-lookup.c (pushdecl_maybe_friend): Likewise.
3172         (pushdecl_maybe_friend): Likewise.
3173
3174         * parser.c (cp_parser_warn_min_max): Likewise.
3175         (cp_parser_cast_expression): Likewise.
3176
3177         * method.c (lazily_declare_fn): Likewise.
3178         * cvt.c (convert_to_void): Likewise.
3179         * mangle.c (finish_mangling): Likewise.
3180         * cp-gimplify.c (gimplify_expr_stmt): Likewise.
3181
3182 2006-02-03  Mark Mitchell  <mark@codesourcery.com>
3183
3184         * name-lookup.c (do_class_using_decl): Use IDENTIFIER_TYPENAME_P,
3185         not IDENTIFIER_OPNAME_P.
3186
3187 2006-01-31  Mark Mitchell  <mark@codesourcery.com>
3188
3189         PR c++/25342
3190         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Revise
3191         documentation.
3192         * pt.c (determine_specialization): Use INNERMOST_TEMPLATE_PARMS,
3193         not TREE_VALUE.
3194         (instantiate_class_template): Simplify.
3195         (verify_class_unification): Remove.
3196         (unify): Document parameters.  Use INNERMOST_TEMPLATE_ARGS to
3197         permit multiple levels of template arguments.
3198         (more_specialized_class): Simplify.
3199         (get_class_bindings): Pass full arguments to unify.  Fold
3200         verify_class_unification into this function.  Return full
3201         arguments.
3202         (most_specialized_class): Adjust for changes to
3203         get_class_bindings.  Issue errors here for ambiguity.  Return the
3204         fully deduced arguments for the most specialized class, in
3205         addition to the partial specialization.
3206
3207 2006-01-31  Ben Elliston  <bje@au.ibm.com>
3208
3209         * mangle.c: Comment fix.
3210
3211 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3212
3213         * Make-lang.in (cp-warn): Include CXX_COMPAT_WARN.
3214         * repo.c (extract_string, afgets): Use cast when converting from
3215         void *.
3216
3217 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3218
3219         * call.c (alloc_conversion): Use cast when converting from void *.
3220         (alloc_conversions): Likewise.
3221         (add_candidate): Likewise.
3222         (print_z_candidates): Likewise.
3223         (add_warning): Likewise.
3224         * pt.c (retrieve_local_specialization): Likewise.
3225         (process_partial_specialization): Likewise.
3226         (mangle_class_name_for_template): Likewise.
3227         (tsubst_template_args): Likewise.
3228         * typeck2.c (pat_calc_hash): Likewise.
3229         (pat_compare): Likewise.
3230         (abstract_virtuals_error): Likewise.
3231         * class.c (method_name_cmp): Likewise.
3232         (resort_method_name_cmp): Likewise.
3233         (get_vfield_name): Likewise.
3234         * decl2.c (generate_ctor_and_dtor_functions_for_priority): Likewise.
3235         * lex.c (init_reswords): Likewise.
3236         * rtti.c (create_pseudo_type_info): Likewise.
3237         * search.c (dfs_lookup_base): Likewise.
3238         (dfs_dcast_hint_pre): Likewise.
3239         (dfs_dcast_hint_post): Likewise.
3240         * tree.c (hash_tree_cons): Likewise.
3241         * repo.c (extract_string): Likewise.
3242         (afgets): Likewise.
3243         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Likewise.
3244         * g++spec.c (lang_specific_driver): Likewise.
3245
3246 2006-01-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3247
3248         * call.c (joust): Pass option code to warning.  Use inform for
3249         explanation.
3250         * class.c (check_bases): Likewise.
3251         (maybe_warn_about_overly_private_class): Likewise.
3252         (check_field_decls): Likewise.
3253         (layout_empty_base): Likewise.
3254         (layout_virtual_bases): Likewise.
3255         (layout_class_type): Likewise.
3256
3257 2006-01-28  Mark Mitchell  <mark@codesourcery.com>
3258
3259         PR c++/25999
3260         * decl.c (start_preparsed_function): Call maybe_apply_pragma_weak
3261         here, not ...
3262         (start_function): ... here.
3263
3264 2006-01-28  Mark Mitchell  <mark@codesourcery.com>
3265
3266         PR c++/25855
3267         * class.c (resolve_address_of_overloaded_function): Adjust use of
3268         return value from most_specialized_instantiation.
3269         * pt.c (determine_specialization): Avoid multiple calls to
3270         get_bindings.
3271         (most_specialized_instantiation): When a tie occurs, set the
3272         current presumed champion to the next template.  Return the
3273         TREE_LIST node containing the template, rather than the template
3274         itself.
3275         (most_specialized): Remove.
3276         * name-lookup.c (push_overloaded_decl): When duplicate_decls
3277         indicates a failed redeclaration, report that to callers.
3278
3279 2006-01-26  Jason Merrill  <jason@redhat.com>
3280
3281         PR c++/16021
3282         * name-lookup.c (parse_using_directive): Require strong using to
3283         name a nested namespace.
3284
3285 2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3286
3287         Revert:
3288         * cp-tree.h (do_poplevel): Remove prototype.
3289         * semantics.c (do_poplevel): Add prototype.  Make static.
3290
3291         Revert:
3292         * cp-tree.h (default_conversion): Remove prototype.
3293         * typeck.c (default_conversion): Make static.
3294
3295 2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3296
3297         * cp-tree.h (get_primary_binfo): Remove prototype.
3298         (push_using_decl): Likewise.
3299         (current_template_args): Likewise.
3300         (more_specialized_class): Likewise.
3301         (mark_class_instantiated): Likewise.
3302         (default_conversion): Likewise.
3303         (pfn_from_ptrmemfunc): Likewise.
3304         * class.c (get_primary_binfo): Add prototype, make static, simplify.
3305         * name-lookup.c (push_using_decl): Make static.
3306         * pt.c (current_template_args): Likewise.
3307         (more_specialized_class): Likewise.
3308         (mark_class_instantiated): Likewise.
3309         * typeck.c (default_conversion): Make static.
3310         (pfn_from_ptrmemfunc): Add prototype, make static.
3311
3312 2006-01-24  Dirk Mueller  <dmueller@suse.de>
3313
3314         * typeck.c (build_binary_op): Use OPT_Wfloat_equal in warning().
3315
3316 2006-01-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3317
3318         PR c++/25552
3319         * parser.c (cp_parser_unqualified_id): Check that destructor name
3320         and scope match.
3321         * call.c (check_dtor_name): Do not expect a BIT_NOT_EXPR.
3322         Adjust comment.  Return early if possible.
3323         Use same_type_p to compare types.
3324         * typeck.c (lookup_destructor): Adjust call to check_dtor_name.
3325
3326 2006-01-24  Mark Mitchell  <mark@codesourcery.com>
3327
3328         * semantics.c: Remove outdated comment.
3329
3330 2006-01-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3331
3332         * cp-tree.h (do_poplevel): Remove prototype.
3333         * semantics.c (do_poplevel): Add prototype.  Make static.
3334
3335         * cp-tree.h (original_type): Remove prototype.
3336         * typeck.c (original_type): Make static.
3337
3338         * cp-tree.h (declare_global_var): Remove prototype.
3339         * decl.c (declare_global_var): Make static.
3340
3341         * cp-tree.h (implicitly_declare_fn): Remove prototype.
3342         * method.c (implicitly_declare_fn): Make static.
3343
3344         * cp-tree.h (fold_decl_constant_value): Remove prototype.
3345         * pt.c (fold_decl_constant_value): Make static.
3346
3347         * cp-tree.h (build_x_delete): Remove prototype.
3348         * init.c (build_vec_delete_1): Call build_op_delete_call directly
3349         and not via build_x_delete.
3350         (build_x_delete): Remove.
3351
3352         * cp-tree.h (get_vtt_name): Remove prototype.
3353         * class.c (get_vtt_name): Remove.
3354         (build_vtt): Call mangle_vtt_for_type instead of get_vtt_name.
3355
3356 2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3357
3358         * rtti.c (build_dynamic_cast): Fix comment.
3359
3360 2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3361
3362         PR c++/10891
3363         * rtti.c (build_dynamic_cast): Reject dynamic_cast use if
3364         -fno-rtti.
3365
3366 2006-01-21  Mark Mitchell  <mark@codesourcery.com>
3367
3368         PR c++/25895
3369         * class.c (build_base_path): Generate a NOP_EXPR instead of a
3370         COMPONENT_REF if the base and derived classes are at the same
3371         address.
3372
3373         PR c++/25856
3374         * decl.c (begin_destructor_body): Robustify.
3375
3376         PR c++/25858
3377         * parser.c (cp_parser_direct_declarator): Robustify.
3378
3379 2006-01-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3380
3381         * parser.c (cp_lexer_next_token_is_keyword): Simplify.
3382
3383         * parser.c (clear_decl_specs): Remove prototype.
3384
3385         * parser.c (cp_parser_expression_fn): Remove.
3386
3387         * call.c (add_builtin_candidates): Remove superfluous return.
3388         * name-lookup.c (do_toplevel_using_decl): Likewise.
3389         * parser.c (cp_parser_type_specifier_seq): Likewise.
3390         (cp_parser_save_default_args): Likewise.
3391
3392 2006-01-20  Dirk Mueller  <dmueller@suse.com>
3393
3394         PR c++/5520
3395         * semantics.c (finish_if_stmt): Call empty_body_warning.
3396         * parser.c (cp_parser_implicitly_scoped_statement):
3397         Mark empty statement with an empty stmt.
3398
3399 2006-01-19  Mark Mitchell  <mark@codesourcery.com>
3400
3401         PR c++/22136
3402         * name-lookup.c (do_class_using_decl): Don't try to look up base
3403         classes in templates with dependent base types.
3404
3405 2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3406
3407         PR c++/25854
3408         * pt.c (maybe_process_partial_specialization): Return early on
3409         error_mark_node.
3410
3411 2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3412
3413         PR c++/16829
3414         * decl.c (start_preparsed_function): Check default arguments
3415         unconditionally.
3416         * name-lookup.c (pushdecl_maybe_friend): Check default arguments
3417         of all functions and function templates.
3418         * parser.c (cp_parser_late_parsing_default_args): Check default
3419         arguments.
3420         * decl2.c (check_default_args): Set missing default arguments to
3421         error_mark_node.
3422
3423 2006-01-18  Mark Mitchell  <mark@codesourcery.com>
3424
3425         PR c++/25836
3426         * cp-tree.h (push_class_stack): New function.
3427         (pop_class_stack): Likewise.
3428         * class.c (class_stack_node): Add hidden field.
3429         (pushclass): Clear it.
3430         (push_class_stack): New function.
3431         (pop_class_stack): Likewise.
3432         (currently_open_class): Ignore hidden classes.
3433         (currently_open_derived_class): Likewise.
3434         * name-lookup.c (push_to_top_level): Call push_class_stack.
3435         (pop_from_top_level): Call pop_class_stack.
3436
3437 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
3438
3439         * tree.c (find_tree_t, find_tree): Remove.
3440         * cp-tree.h: Remove the prototype for find_tree.
3441
3442 2006-01-18  Jakub Jelinek  <jakub@redhat.com>
3443
3444         * search.c (lookup_conversions_r): Fix a pasto.
3445
3446 2006-01-17  Eric Christopher  <echristo@apple.com>
3447
3448         * call.c (convert_like_real): When issuing conversion
3449         warnings, depend on OPT_Wconversion.
3450         * cvt.c (build_expr_type_conversion): Ditto.
3451
3452 2006-01-17  Kazu Hirata  <kazu@codesourcery.com>
3453
3454         * name-lookup.c (lookup_namespace_name): Remove.
3455         * name-lookup.h: Remove the prototype for
3456         lookup_namespace_name.
3457
3458 2006-01-17  Jakub Jelinek  <jakub@redhat.com>
3459
3460         PR c/25682
3461         * decl.c (compute_array_index_type): After issuing not an integral
3462         constant-expression error, set size to 1 to avoid ICEs later on.
3463
3464 2006-01-16  Ian Lance Taylor  <ian@airs.com>
3465
3466         * parser.c: Include "cgraph.h".
3467         (cp_parser_asm_definition): Call cgraph_add_asm_node rather than
3468         assemble_asm.
3469
3470 2006-01-16  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
3471
3472         * g++spec.c (lang_specific_spec_functions): Remove.
3473
3474 2006-01-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3475
3476         * decl.c (check_initializer): Fix thinko.
3477
3478 2006-01-14  Mark Mitchell  <mark@codesourcery.com>
3479
3480         PR c++/25663
3481         * parser.c (cp_parser_direct_declarator): Use cp_parser_error
3482         instead of error.
3483
3484 2006-01-13  Jason Merrill  <jason@redhat.com>
3485
3486         * pt.c (check_explicit_specialization): Use CP_DECL_CONTEXT even more.
3487
3488         * name-lookup.c (set_decl_namespace): Use CP_DECL_CONTEXT.
3489         * pt.c (check_explicit_specialization): Likewise.
3490
3491 2006-01-12  Jason Merrill  <jason@redhat.com>
3492
3493         PR libstdc++/24660
3494         * pt.c (check_explicit_specialization): Handle namespace
3495         association.
3496         * name-lookup.c (set_decl_namespace): Likewise.
3497
3498 2006-01-12  Nathan Sidwell  <nathan@codesourcery.com>
3499
3500         PR c++/24824
3501         * class.c (handle_using_decl): Pass correct scope to
3502         cp_emit_debug_info_for_using.
3503
3504 2006-01-11  Nathan Sidwell  <nathan@codesourcery.com>
3505
3506         PR c++/25386
3507         * tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
3508         packedness.
3509
3510 2006-01-06  Gabriel Dos Reis  <gdr@integrablesolutions.net>
3511
3512         * parser.c (cp_parser_primary_expression): Document the grammar
3513         for the built-in offsetof, a GNU extension.
3514
3515 2006-01-04  Zdenek Dvorak <dvorakz@suse.cz>
3516
3517         PR c++/25632
3518         * init.c (constant_value_1): Unshare use of DECL_INITIAL.  Fix a typo
3519         in condition.
3520
3521 2006-01-04  Chris Lattner  <sabre@gnu.org>
3522
3523         * typeck2.c: update copyright to 2006
3524         (split_nonconstant_init_1):  Set TREE_CONSTANT to true.
3525
3526 2006-01-04  Mark Mitchell  <mark@codesourcery.com>
3527
3528         PR c++/24782
3529         * parser.c (cp_parser_nested_name_specifier_opt): Preserve access
3530         checks, even when parsing tentatively.
3531
3532 2006-01-04  Richard Henderson  <rth@redhat.com>
3533
3534         Merge from gomp branch.
3535         * lex.c (handle_pragma_java_exceptions): Fix whitespace.
3536         * parser.c (struct cp_token): Add pragma_kind.
3537         (eof_token): Update to match.
3538         (struct cp_lexer): Add in_pragma; rearrange next for better packing.
3539         (cp_parser_initial_pragma): New.
3540         (cp_lexer_new_main): Use it.  Don't bother clearing
3541         c_lex_return_raw_strings.
3542         (cp_lexer_get_preprocessor_token): Always initialize keyword
3543         and pragma_kind fields.  Handle CPP_PRAGMA.
3544         (cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when
3545         in_pragma is set.
3546         (cp_lexer_handle_pragma): Remove.  Update callers to cp_parser_pragma.
3547         (cp_lexer_print_token) <CPP_PRAGMA>: Don't print as a string.
3548         (cp_parser_skip_to_pragma_eol): New.
3549         (cp_parser_error): Use it.
3550         (cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL;
3551         rearrange with switch statement.
3552         (cp_parser_skip_to_end_of_statement): Likewise.
3553         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
3554         (cp_parser_skip_to_closing_brace): Likewise.
3555         (cp_parser_skip_until_found): Likewise.
3556         (cp_parser_statement): Add in_compound argument; update callers.
3557         Use it to decide how to handle pragma parsing.
3558         (cp_parser_labeled_statement): Add in_compound argument; pass
3559         it on to cp_parser_statement.
3560         (cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL.
3561         (cp_parser_declaration_seq_opt): Likewise.
3562         (cp_parser_parameter_declaration): Likewise.
3563         (cp_parser_member_specification_opt): Likewise.
3564         (cp_parser_function_definition_after_decl): Likewise.
3565         (cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs.
3566         (cp_parser_pragma): New.
3567         (pragma_lex): New.
3568
3569 2006-01-04  Dirk Mueller <dmueller@suse.com>
3570
3571         * decl.c (finish_constructor_body): create simple
3572         compound stmt instead of a if(1) { } construct.
3573
3574 2006-01-03  Mark Mitchell  <mark@codesourcery.com>
3575
3576         PR c++/25492
3577         * name-lookup.c (push_class_level_binding): When a derived class
3578         provides a type binding, eliminate any type binding from a base
3579         class.
3580
3581         PR c++/25625
3582         * repo.c (repo_emit_p): Always instantiate static data members
3583         initialized by constant expressions, so that there values are
3584         available.
3585
3586 2006-01-02  Mark Mitchell  <mark@codesourcery.com>
3587
3588         PR c++/25635
3589         * class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a
3590         conversion operator.
3591         * decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here.
3592
3593         PR c++/25638
3594         * class.c (add_method): Never associate more than one destructor
3595         with a single class.
3596
3597         PR c++/25637
3598         * cp-tree.h (do_friend): Adjust prototype.
3599         * decl.c (grokfndecl): Make funcdef_flag a bool, not an int.
3600         (grokdeclarator): Likewise.  Refine check for invalid
3601         declarations/definitions of member functions outside of their own
3602         class.
3603         * friend.c (do_friend): Make funcdef_flag a bool, not an int.
3604
3605         PR c++/25633
3606         * parser.c (cp_parser_mem_initializer_list): Check result of
3607         cp_parser_mem_initializer against error_mark_node, not NULL_TREE.
3608         (cp_parser_mem_initializer): Return error_mark_node for failure.
3609
3610         PR c++/25634
3611         * parser.c (cp_parser_template_parameter_list): Call
3612         begin_template_parm_list and end_template_parm_list here.
3613         (cp_parser_type_parameter): Not here.
3614         (cp_parser_template_declaration_after_export): Or here.
3615         (cp_parser_elaborated_type_specifier): Call
3616         cp_parser_check_template_parameters.
3617
3618         * tree.c (build_target_expr_with_type): Use force_target_expr.
3619
3620         * decl2.c (mark_used): Fix typo in comment.
3621
3622 2006-01-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3623
3624         * parser.c (cp_parser_using_declaration): Skip name-lookup on
3625         invalid scope.
3626
3627 2005-12-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3628
3629         * cxx-pretty-print.c (pp_cxx_constant): New.  Print
3630         string-literal in parens if input program says so.
3631         (pp_cxx_primary_expression): Hand off constant printing to
3632         pp_cxx_constant.
3633         (pp_cxx_pretty_printer_init): Set pp->c_base.constant.
3634         (pp_cxx_expression): Use pp_cxx_constant for literals.
3635         * error.c (dump_expr): Use pp_constant for literals.
3636
3637 2005-12-29  Nathan Sidwell  <nathan@codesourcery.com>
3638
3639         * method.c (make_thunk): Don't set comdat_linkage here.
3640         (use_thunk): Make thunk one only here, if thunk target is
3641         DECL_ONE_ONLY.
3642
3643 2005-12-26  Mark Mitchell  <mark@codesourcery.com>
3644
3645         PR c++/25439
3646         * decl.c (grokdeclarator): Remove dead code.
3647         * ptree.c (cxx_print_xnode): Handle BASELINK.
3648         * parser.c (make_id_declarator): Add sfk parameter.
3649         (cp_parser_direct_declarator): Do not pass TYPE_DECLs to
3650         make_id_declarator.
3651         (cp_parser_declarator_id): Simplify BASELINKs here.
3652         (cp_parser_member_declaration): Adjust calls to
3653         make_id_declarator.
3654
3655 2005-12-26  Mark Mitchell  <mark@codesourcery.com>
3656
3657         PR c++/23171, c++/23172, c++/25417.
3658         * typeck.c (build_unary_op): Create temporary variables for
3659         compound literals whose addresses are taken.
3660         * init.c (expand_aggr_init_1): Use COMPOUND_LITERAL_P.
3661         * decl.c (reshape_init_vector): Likewise.
3662         (reshape_init): Give it external linkage.
3663         (check_initializer): Use COMPOUND_LITERAL_P.
3664         (initialize_artificial_var): Allow the initializer to be a
3665         CONSTRUCTOR.
3666         * call.c (make_temporary_var_for_ref_to_temp): Use
3667         create_temporary_var.
3668         * cp-tree.h (COMPOUND_LITERAL_P): New macro.
3669         (rehape_init): Declare.
3670         * typeck2.c (digest_init): Use COMPOUND_LITERAL_P.
3671         * semantics.c (finish_compound_literal): Use reshape_init.
3672
3673 2005-12-23  Mark Mitchell  <mark@codesourcery.com>
3674
3675         PR c++/24671
3676         * pt.c (instantiate_template): Handle SFINAE.
3677
3678 2005-12-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3679
3680         * decl.c (grokdeclarator): Improve diagnostic for friend
3681         declarations of class members.
3682
3683 2005-12-22  Mark Mitchell  <mark@codesourcery.com>
3684
3685         PR c++/25369
3686         * tree.c (really_overloaded_fn): Tweak comment.
3687         * pt.c (tsubst_call_declarator_parms): Remove.
3688         (tsubst_copy): Call mark_used on the member referenced by an
3689         OFFSET_REF.
3690         * semantics.c (finish_qualified_id_expr): Simplify.
3691         * decl2.c (mark_used): Accept BASELINKs.
3692
3693         PR c++/25364
3694         * typeck.c (build_unary_op): Pass DECLs not names to
3695         build_offset_refs.
3696         * init.c (build_offset_ref): Do not do name lookup.  Do not call
3697         mark_used.
3698         * call.c (build_call): Simplify and tidy.
3699         * semantics.c (finish_qualified_id_expr): Call mark_used.
3700
3701 2005-12-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3702
3703         PR c++/23333
3704         * parser.c (cp_parser_pure_specifier): Check for PURE_ZERO to
3705         identify a single '0'.
3706
3707 2005-12-20  Mark Mitchell  <mark@codesourcery.com>
3708
3709         PR c++/21228
3710         * decl.c (use_eh_spec_block): New function.
3711         (store_parm_decls): Use it.
3712         (finish_function): Likewise.
3713
3714 2005-12-19  Mark Mitchell  <mark@codesourcery.com>
3715
3716         PR c++/24278
3717         * init.c (expand_member_init): Print messages about baseclasses
3718         using %T rather than %D.
3719
3720         PR c++/24915
3721         * class.c (add_method): Do not treat templates as identical unless
3722         their return types are the same.
3723
3724 2005-12-12  Mark Mitchell  <mark@codesourcery.com>
3725
3726         PR c++/25300
3727         * tree.c (build_qualified_name): Return error_mark_node for
3728         erroneous input.
3729
3730 2005-12-10  Mark Mitchell  <mark@codesourcery.com>
3731
3732         PR c++/25337
3733         * pt.c (tsubst_copy_and_build): Permit dependent types for the
3734         object in a class member access expression.
3735
3736 2005-12-10  Terry Laurenzo  <tlaurenzo@gmail.com>
3737
3738         PR java/9861
3739         * mangle.c (write_bare_function_type): Mangle return type for
3740         methods of Java classes
3741
3742 2005-12-08  Th�dore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
3743
3744         * call.c (build_conditional_expr): Print types in error messages.
3745
3746 2005-12-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3747
3748         * expr.c (cxx_expand_expr): Call gcc_unreachable instead of abort.
3749
3750 2005-12-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3751
3752         * cp-gimplify.c (gimplify_cp_loop): Use fold_build3.
3753
3754 2005-12-07  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
3755
3756         * Make-lang.in (c++.all.build, c++.install-normal): Remove.
3757
3758 2005-12-07  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
3759
3760         * Make-lang.in: Remove all dependencies on s-gtype.
3761
3762 2005-12-06  Aldy Hernandez  <aldyh@redhat.com>
3763
3764         PR C++/24138
3765         * decl.c (reshape_init_array_1): Handle max_index of -1.
3766
3767 2005-12-06  Roger Sayle  <roger@eyesopen.com>
3768
3769         * typeck.c (build_binary_op): Issue warning if either operand of a
3770         comparison operator is a string literal, except for testing equality
3771         or inequality against NULL.
3772
3773 2005-12-06  Roger Sayle  <roger@eyesopen.com>
3774
3775         PR c++/25263
3776         * decl.c (compute_array_index_type): Check that itype is an
3777         INTEGER_CST node before testing/clearing TREE_OVERFLOW.
3778
3779 2005-12-05  Daniel Berlin  <dberlin@dberlin.org>
3780
3781         * ptree.c (cxx_print_decl): Update to check for decl_common
3782         structure.
3783
3784 2005-12-02  Mark Mitchell  <mark@codesourcery.com>
3785
3786         PR c++/24173
3787         * decl.c (duplicate_decls): Don't rely on DECL_TEMPLATE_INFO after
3788         clobbering newdecl.
3789
3790 2005-12-02  Richard Guenther  <rguenther@suse.de>
3791
3792         * semantics.c (simplify_aggr_init_expr): Use buildN instead
3793         of build.
3794
3795 2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3796
3797         * parser.c (cp_lexer_new_main): Usr GGC_RESIZEVEC instead of
3798         ggc_realloc.
3799         (cp_parser_template_argument_list): Use XRESIZEVEC instead of
3800         xrealloc.
3801         * class.c (pushclass): Likewise.
3802
3803 2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3804
3805         * decl2.c (get_priority_info): Use XNEW, not xmalloc.
3806         * decl.c (push_switch): Likewise.
3807         * lex.c (handle_pragma_implementation): Likewise.
3808         * cp-objcp-common.c (decl_shadowed_for_var_insert): Use GGC_NEW,
3809         not ggc_alloc.
3810         (cxx_initialize_diagnostics): Use XNEW, not xmalloc.
3811         * class.c (init_class_processing): Use XNEWVEC, not xmalloc.
3812         * g++spec.c (lang_specific_driver): Likewise.
3813         * mangle.c (save_partially_mangled_name): Likewise.
3814         * parser.c (cp_lexer_new_main): Use GGC_NEWVEC, not ggc_alloc.
3815         (cp_parser_template_argument_list): Use XNEWVEC, nto xmalloc.
3816         (cp_parser_sizeof_operand): Likewise.
3817         * repo.c (open_repo_file, open_repo_file): Likewise.
3818
3819 2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3820
3821         * parser.c (cp_parser_make_typename_type): Call make_typename_type
3822         with tf_none instead of magic value 0.
3823         (cp_parser_explicit_instantiation): Call do_type_instantiation
3824         with tf_error instead of magic value 1.
3825         (cp_parser_elaborated_type_specifier): Call make_typename_type
3826         with tf_error instead of magic value 1.
3827         (cp_parser_class_name): Likewise.
3828         (cp_parser_lookup_name): Likewise.
3829
3830 2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3831
3832         * parser.c (cp_parser_declaration): Set token2.type to CPP_EOF,
3833         not RID_MAX.
3834
3835 2005-11-30  Jason Merrill  <jason@redhat.com>
3836
3837         PR c++/21123
3838         * cp-gimplify.c (cp_genericize_r): Don't dereference invisible reference
3839         parms in a thunk.
3840
3841 2005-11-30  Ben Elliston  <bje@au.ibm.com>
3842
3843         * typeck.c (build_x_unary_op): Correct spelling in error message.
3844
3845 2005-11-28  Nathan Sidwell  <nathan@codesourcery.com>
3846
3847         PR c++/21166
3848         * class.c (check_field_decls): Only set DECL_PACKED on a field
3849         when its natural alignment is > BITS_PER_UNIT.
3850
3851 2005-11-27  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3852
3853         PR c++/24979
3854         * cp-tree.h (DECL_MAIN_P): Remove duplicate definition.
3855
3856 2005-11-26  Richard Henderson  <rth@redhat.com>
3857
3858         * lex.c: Update for pragma_lex rename.
3859         * parser.c: Likewise.
3860
3861 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3862
3863         PR c++/9278
3864         * decl.c (grokparms): Do not allow typedef-names in a '(void)'
3865         parmlist.
3866
3867 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3868
3869         * typeck2.c (process_init_constructor_union): Remove check for
3870         unnamed union members.
3871
3872 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3873
3874         * name-lookup.c (lookup_name_real): Merge two if's.
3875
3876 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3877
3878         * pt.c (instantiate_class_template): Clean-up.
3879
3880 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3881
3882         * pt.c (template_class_depth_real): Remove. Move functionality to ...
3883         (template_class_depth): ... here, replacing count_specializations
3884         with 0.  Adjust comment.
3885
3886 2005-11-24  Richard Guenther  <rguenther@suse.de>
3887         Dirk Mueller <dmueller@suse.de>
3888
3889         PR c++/14024
3890         * typeck.c (build_reinterpret_cast_1): Use
3891         strict_aliasing_warning.
3892
3893 2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3894
3895         PR c++/24235
3896         * pt.c (check_instantiated_args): Reword diagnostic message about
3897         template argument involving local types.
3898
3899 2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3900
3901         PR c++/21667
3902         * typeck.c (build_array_ref): Avoid code duplicate.  Use common
3903         C/C++ diagnostic function warn_array_subscript_with_type_char.
3904
3905 2005-11-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3906
3907         PR c++/22238
3908         * error.c (resolve_virtual_fun_from_obj_type_ref): New.
3909         (dump_expr): Use it in <case CALL_EXPR>.
3910
3911 2005-11-21  Richard Henderson  <rth@redhat.com>
3912
3913         * cp-objcp-common.h, name-lookup.c, name-lookup.h: Revert 11-18 patch.
3914
3915         * name-lookup.c (lookup_name): Remove prefer_type argument.
3916         (lookup_name_prefer_type): New.
3917         * decl.c (lookup_and_check_tag): Use them.
3918         * pt.c (tsubst_friend_class): Likewise.
3919         (lookup_template_class): Likewise.
3920         (tsubst_copy_and_build): Likewise.
3921         * name-lookup.h (lookup_name_prefer_type): New.
3922         (lookup_name): Remove declaration.
3923
3924 2005-11-18  Mark Mitchell  <mark@codesourcery.com>
3925
3926         PR c++/8355
3927         * decl.c (grokfndecl): Set up DECL_TEMPLATE_INFO before calling
3928         set_decl_namespace.
3929         * name-lookup.c (set_decl_namespace):
3930
3931 2005-11-18  Mike Stump  <mrs@apple.com>
3932
3933         * cp-objcp-common.h (LANG_HOOKS_LOOKUP_NAME): Add.
3934         * name-lookup.c (lookup_name_two): Remove.
3935         (lookup_name_one): Add.
3936         * name-lookup.h (lookup_name_two): Remove.
3937         (lookup_name_one): Add.
3938
3939 2005-11-15  Jason Merrill  <jason@redhat.com>
3940
3941         PR c++/24580
3942         * method.c (locate_copy): Also use skip_artificial_parms here.
3943         (synthesize_exception_spec): Use CLASS_TYPE_P rather than checking
3944         for RECORD_TYPE.
3945         (locate_ctor): Abort if we fail to find a default constructor.
3946
3947 2005-11-15  Mike Stump  <mrs@apple.com>
3948
3949         * name-lookup.c (lookup_name_two): Add.
3950         * name-lookup.h: Likewise.
3951
3952 2005-11-15  Mark Mitchell  <mark@codesourcery.com>
3953
3954         PR c++/24667
3955         * typeck.c (check_for_casting_away_constness): Use the diag_fn.
3956         (build_const_cast_1): Call it, for C-style casts.
3957
3958 2005-11-14  Mark Mitchell  <mark@codesourcery.com>
3959
3960         PR c++/24687
3961         * pt.c (check_explicit_specialization): Don't check for C linkage.
3962         (push_template_decl_real): Likewise.
3963         * parser.c (cp_parser_explicit_specialization): Check here.
3964         (cp_parser_template_declaration_after_export): And here.
3965
3966         * parser.c (cp_lexer_get_preprocessor_token): Initialize keyword
3967         field.
3968
3969 2005-11-14  Jason Merrill  <jason@redhat.com>
3970
3971         PR c++/24580
3972         * method.c (locate_ctor): Skip all artificial parms, not just
3973         'this'.
3974
3975 2005-11-14  Mark Mitchell  <mark@codesourcery.com>
3976
3977         * parser.c (eof_token): Add initializer for ambiguous_p.
3978
3979 2005-11-13  Mark Mitchell  <mark@codesourcery.com>
3980
3981         PR c++/24817
3982         * decl.c (check_redeclaration_exception_specification): New
3983         function.
3984         (duplicate_decls): Use it.
3985         * error.c (fndecl_to_string): Print the template parameter list.
3986
3987         PR c++/20293
3988         * cxx-pretty-print.c (pp_cxx_statement): Print qualifying scopes
3989         for namespaces.
3990         (pp_cxx_original_namespace_definition): Likewise.
3991         * name-lookup.c (ambiguous_decl): Don't issue error messages;
3992         instead return lists of ambiguous candidates.
3993         (select_decl): Handle ambiguous namespace lookups.
3994         * parser.c (cp_token): Add ambiguous_p.
3995         (cp_lexer_get_preprocessor_token): Set it.
3996         (cp_parser_diagnose_invalid_type_name): Avoid duplicate messages
3997         when a qualified name uses an invalid scope.
3998         (cp_parser_primary_expression): Print ambiguous candidates.
3999         (cp_parser_type_parameter): Adjust comment to reflect new
4000         parameter name for cp_parser_lookup_name.
4001         (cp_parser_template_argument): Likewise.
4002         (cp_parser_elaborated_type_specifier): Likewise.
4003         (cp_parser_namespace_name): Likewise.
4004         (cp_parser_class_name): Print ambiguous candidates.
4005         (cp_parser_lookup_name): Rename ambiguous_p parameter to
4006         ambiguous_decls.  Use it to return a list of ambiguous candiates
4007         when a lookup is ambiguous.
4008         (cp_parser_lookup_name_simple): Adjust comment to reflect new
4009         parameter name for cp_parser_lookup_name.
4010
4011 2005-11-12  Jakub Jelinek  <jakub@redhat.com>
4012
4013         PR c++/24780
4014         * typeck.c (complete_type): Set TYPE_NEEDS_CONSTRUCTING
4015         and TYPE_HAS_NONTRIVIAL_DESTRUCTOR flags for all variants
4016         of array type.
4017
4018         PR c++/24761
4019         * pt.c (tsubst_copy_asm_operands): New function.
4020         (tsubst_expr) <case ASM_EXPR>: Use it.
4021
4022 2005-11-08  Jakub Jelinek  <jakub@redhat.com>
4023
4024         PR c++/19450
4025         * decl.c (redeclaration_error_message): Issue diagnostics about
4026         olddecl and newdecl disagreement on __thread property.
4027         (grokdeclarator): Set DECL_TLS_MODEL on class static variables.
4028
4029 2005-11-08  Jason Merrill  <jason@redhat.com>
4030
4031         PR c++/21123
4032         * method.c (use_thunk): Use build_cplus_new instead of
4033         force_target_expr.
4034
4035 2005-11-06  Jason Merrill  <jason@redhat.com>
4036             James A. Morrison <phython@gcc.gnu.org>
4037
4038         PR c++/17256
4039         * decl2.c (cp_finish_file): Fix conditions for undefined warning.
4040         Set TREE_NO_WARNING instead of TREE_PUBLIC.
4041         * pt.c (instantiate_pending_templates): Set DECL_INITIAL to avoid
4042         a warning on a function we didn't instantiate because of excessive
4043         recursion.
4044
4045 2005-11-06  Mark Mitchell  <mark@codesourcery.com>
4046
4047         * class.c (record_subobject_offsets): Don't record offsets past
4048         biggest empty class for non-empty base classes.
4049         (layout_class_type): Use TYPE_SIZE_UNIT, not TYPE_SIZE, when
4050         keeping track of the size of emptyclasses.
4051
4052         PR c++/21308
4053         * class.c (sizeof_biggest_empty_class): New variable.
4054         (record_subobject_offsets): Don't record offsets past biggest
4055         empty class for data members.  Replace vbases_p parameter with
4056         is_data_member parameter.
4057         (build_base_field): Adjust call.
4058         (layout_class_type): Likewise.  Maintain
4059         sizeof_biggest_empty_class.
4060
4061 2005-11-05  Kazu Hirata  <kazu@codesourcery.com>
4062
4063         * decl2.c, init.c, typeck.c: Fix comment typos.
4064
4065 2005-11-04  Richard Guenther  <rguenther@suse.de>
4066
4067         PR c++/22487
4068         * init.c (build_vec_init): Build comparison of matching
4069         types.
4070
4071 2005-11-03  Josh Conner  <jconner@apple.com>
4072
4073         PR c++/19989
4074         pt.c (tsubst): Accept zero-length array if tf_error is set
4075         in complain flags.  Change error message for negative-
4076         length array.
4077
4078 2005-11-04  Joseph S. Myers  <joseph@codesourcery.com>
4079
4080         * cp-tree.h (cp_cpp_error), error.c (cp_cpp_error): Take va_list*
4081         parameter.
4082
4083 2005-11-03  Joseph S. Myers  <joseph@codesourcery.com>
4084
4085         PR c++/17964
4086         * error.c (cp_cpp_error): New function.
4087         * cp-tree.h (cp_cpp_error): Declare.
4088         * parser.c (cp_lexer_new_main): Set CPP option client_diagnostic
4089         and error callback after lexing.
4090
4091 2005-11-03  Mark Mitchell  <mark@codesourcery.com>
4092
4093         PR c++/21627
4094         * pt.c (register_specialization): Update inline flags on clones.y
4095
4096 2005-11-03  Andrew Pinski  <pinskia@physics.uc.edu>
4097
4098         PR c++/24582
4099         * decl.c (declare_local_label): Return 0 for variables
4100         with error_mark_node as their types.
4101
4102 2005-11-02  Mark Mitchell  <mark@codesourcery.com>
4103
4104         PR c++/22434
4105         * call.c (build_conditional_expr): Do bad conversions, if there's
4106         no other choice.
4107
4108         PR c++/24560
4109         * parser.c (cp_parser_postfix_dot_deref_expression): Improve error
4110         message for use of overloaded functions on LHS of "." operator.
4111
4112         PR c++/19253
4113         * parser.c (cp_parser_postfix_expression): Use
4114         cp_parser_elaborated_type_specifier to handle typename-types in
4115         functional casts.
4116         (cp_parser_enclosed_argument_list): Skip ahead to the end of the
4117         template argument list if the closing ">" is not found.
4118
4119         PR c++/24569
4120         * pt.c (instantiate_decl): Use cp_finish_decl, not
4121         finish_static_data_member_decl.
4122
4123 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
4124
4125         * decl.c (grokfndecl): Remove the setting
4126         of the return type of the function type
4127         of main after erroring about must returning
4128         int.
4129
4130 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
4131
4132         PR C++/23229
4133         * decl.c (grokfndecl): Create a new function type
4134         after erroring out about main not returning int.
4135
4136 2005-10-28  Josh Conner  <jconner@apple.com>
4137
4138         PR c++/22153
4139         * parser.c (cp_parser_member_declaration): Detect and handle
4140         a template specialization.
4141
4142 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
4143
4144         PR C++/23426
4145         * decl.c (start_decl): Check that the decl is an
4146         error_mark_node before getting the type.
4147         Remove the check for the decl's type being an
4148         error_mark_node.
4149
4150 2005-10-21  Mark Mitchell  <mark@codesourcery.com>
4151
4152         PR c++/24260
4153         * parser.c (cp_parser_init_declarator): Pass attributes to
4154         grokfield.
4155
4156 2005-10-20  Mark Mitchell  <mark@codesourcery.com>
4157
4158         PR c++/22618
4159         * search.c (accessible_p): Check access in the outermost set of
4160         template parameters.
4161
4162 2005-10-20  Richard Guenther  <rguenther@suse.de>
4163
4164         * decl.c (grokdeclarator): Fix ambiguous pedwarn message.
4165
4166 2005-10-18  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4167
4168         PR c++/22293
4169         * decl.c (grokdeclarator): Reject unqualified destructors in
4170         friend declarations.
4171
4172 2005-10-18  Mark Mitchell  <mark@codesourcery.com>
4173
4174         PR c++/23293
4175         * pt.c (convert_template_argument): Use canonical type variants in
4176         template specializations.
4177
4178 2005-10-18  Nathan Sidwell  <nathan@codesourcery.com>
4179
4180         PR c++/21383
4181         * name-lookup.c (arg_assoc): Template args can be null in a
4182         template-id-expr.
4183
4184         PR c++/22604
4185         * class.c (update_vtable_entry_for_fn): Don't process invalid
4186         covariant overriders.
4187
4188         PR c++/23118
4189         * cp-tree.h (add_method): Add return value.
4190         * class.c (add_method): Return success indicator.
4191         * semantics.c (finish_member_declaration): Don't add an invalid
4192         method to the method list.
4193
4194 2005-10-17  Mark Mitchell  <mark@codesourcery.com>
4195
4196         PR c++/21908
4197         * call.c (build_new_method_call): Do not show VTT parameters to
4198         the user.
4199
4200 2005-10-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4201
4202         PR c++/23440
4203         * parser.c (cp_parser_statement): If the parser reached CPP_EOF,
4204         only complain about missing statement.
4205
4206 2005-10-17  Nathan Sidwell  <nathan@codesourcery.com>
4207
4208         PR c++/24386
4209         * cp-tree.h (BASELINK_QUALIFIED_P): New.
4210         * pt.c (tsubst_copy_and_build): <CALL_EXPR case>: Use it.
4211         * typeck.c (finish_class_member_access_expr): Set it.
4212
4213         PR c++/21353
4214         * decl.c (check_default_argument): Don't check
4215         processing_template_decl or uses_template_parms here.
4216         (grokparms): Only call check_default_argument when not processing
4217         a template decl.
4218         * parser.c (cp_parser_late_parsing_default_arg): Call
4219         check_default_argument when not processing a template decl.
4220
4221 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
4222
4223         PR c++/24389
4224         * decl2.c (mark_used): Use uses_template_parms instead of
4225         dependent_type_p.
4226         * init.c (constant_value_1): Handle uninstantiated templates
4227         specially.
4228         * pt.c (instantiate_decl): Add sanity check.
4229
4230 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
4231
4232         PR c++/22173
4233         * typeck.c (check_template_keyword): Fix thinko.
4234
4235 2005-10-16  Andrew Pinski  <pinskia@physics.uc.edu>
4236
4237         PR c++/23959
4238         * decl.c (pop_switch): Only call c_do_switch_warnings
4239         when not processing templates.
4240
4241 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
4242
4243         PR c++/22173
4244         * cp-tree.h (QUALIFIED_NAME_IS_TEMPLATE): New macro.
4245         (check_template_keyword): New function.
4246         (finish_id_expression): Change prototoype.
4247         (finish_qualified_id_expr): Change prototype.
4248         (build_qualified_name): New function.
4249         (finish_class_member_access_expr): Change prototype.
4250         * init.c (build_offset_ref): Use build_qualified_name.
4251         * mangle.c (write_expression): Likewise.
4252         * parser.c (cp_parser_primary_expression): Remove qualifying_class
4253         parameter.  Add address_p and template_arg_p.  Use
4254         build_qualified_name.
4255         (cp_parser_id_expression): Default *template_p to
4256         template_keyword_p.  Check for invalid uses of the template
4257         keyword.
4258         (cp_parser_postfix_expression): Eliminate special handling for
4259         qualified names.  Adjust call to cp_parser_primary_expression.
4260         (cp_parser_postfix_dot_deref_expression): Adjust call to
4261         cp_parser_id_expression and finish_class_member_access_expr.
4262         (cp_parser_template_argument_list): Add comment.
4263         (cp_parser_template_argument): Adjust use of
4264         cp_parser_primary_expression.  Remove call to
4265         finish_qualified_id_expr.
4266         (cp_parser_lookup_name): Use build_qualified_name.
4267         * pt.c (tsubst): Use build_qualified_name.
4268         (tsubst_qualified_id): Likewise.  Adjust call to
4269         finish_qualified_id_expr.
4270         (tsubst_copy): Use build_qualified_name.
4271         (tsubst_copy_and_build): Adjusts call to finish_id_expression and
4272         finish_class_member_access_expr.
4273         * semantics.c (finish_non_static_data_member): Use
4274         build_qualified_name.
4275         (finish_qualified_id_expr): Add template_p and template_arg_p
4276         parameters.
4277         (finish_id_expression): Remove qualifiying_class parameter.  Add
4278         template_p, done, address_p, and template_arg_p.  Use
4279         build_qualified_name.  Adjust calls to
4280         finish_class_member_acess_expr.
4281         * tree.c (build_qualified_name): New function.
4282         * typeck.c (check_template_keyword): New function.
4283         (finish_class_member_access_expr): Add template_p argument.  Check
4284         for invalid uses of the template keyword.
4285
4286 2005-10-15  Mark Mitchell  <mark@codesourcery.com>
4287
4288         PR c++/21347
4289         * class.c (maybe_warn_about_overly_private_class): Lazy
4290         constructors are public.
4291
4292 2005-10-14  Mark Mitchell  <mark@codesourcery.com>
4293
4294         PR c++/19565
4295         * call.c (convert_like_real): Rely on convert_and_check to issue
4296         warnings about overflow and conversion to unsigned.
4297         * decl.c (finish_enum): Use the location of the enumerators, not
4298         the closing brace of the enumeration, when reporting warnings
4299         about conversions.
4300         (build_enumerator): Use error_mark_node for erroneous values.
4301         * typeck2.c (digest_init): Remove reference to "signature pointer"
4302         from comment.
4303
4304 2005-10-14  Nathan Sidwell  <nathan@codesourcery.com>
4305
4306         PR c++/17796
4307         * optimize.c (update_cloned_parm): Add FIRST parameter. Use it.
4308         (maybe_clone_body): Track the first clone.
4309
4310 2005-10-13  Nathan Sidwell  <nathan@codesourcery.com>
4311
4312         PR c++/23984
4313         * class.c (build_base_path): The vtable is always the first thing
4314         in the vtt.
4315
4316 2005-10-13  Mark Mitchell  <mark@codesourcery.com>
4317
4318         PR c++/20721
4319         * cp-tree.h (DECL_NONTRIVIALLY_INITIALIZED_P): New macro.
4320         * decl.c (duplicate_decls): Merge it into new declarations.
4321         (decl_jump_unsafe): Use it, rather than DECL_INITIAL.
4322         (cp_finish_decl): Set it, when appropriate.
4323
4324         PR c++/22180
4325         * call.c (build_new_method_call): Correct pretty-printing of
4326         destructor names.
4327         * pt.c (tsubst_qualified_id): Recognize invalid uses of "~T" as an
4328         identifier.
4329
4330         PR c++/23694
4331         * decl.c (start_method): Return error_mark_node for errors.
4332
4333         PR c++/23307
4334         * pt.c (push_template_decl_real): Complain about attempts to
4335         declare template variables.
4336
4337         PR c++/22352
4338         * pt.c (tsubst_template_parms): Set processing_template_decl while
4339         processing the parameters.
4340         (tsubst_decl): Set processing_template_decl when substituting into
4341         a TEMPLATE_DECL.
4342
4343         PR c++/22405
4344         * pt.c (most_specialized_instantiation): Robustify.
4345
4346         PR c++/22464
4347         * semantics.c (finish_id_expression): Issue errors about uses of
4348         local variables in containing functions even in templates.
4349
4350 2005-10-12  Danny Smith  <dannysmith@users.sourceforge.net>
4351
4352         PR target/21801
4353         PR target/23589
4354         * class.c (finish_struct_1): Call
4355         targetm.cxx.adjust_class_at_definition.
4356
4357
4358 2005-10-12  Nathan Sidwell  <nathan@codesourcery.com>
4359
4360         PR c++/21592
4361         * pt.c (build_non_dependent_expr): Don't wrap a COMPONENT_REF
4362         with already looked up member functions.  Assert we're not
4363         returning a NON_DEPENDENT_EXPR with unknown type.
4364         * typeck.c (finish_class_member_access_expr):  We can get
4365         non-template-id-expr baselinks.  If the lookup finds a baselink,
4366         remember it even inside templates.
4367
4368         PR c++/23797
4369         * parser.c (cp_parser_functional_cast): Cope when TYPE is not a
4370         TYPE_DECL.  Use dependent_type_p to check type.
4371         * pt.c (uses_template_parms_p): Use dependent_type_p for a
4372         TYPE_DECL.
4373         (type_dependent_expression_p): Assert we've not been given a
4374         TYPE_DECL.
4375
4376         PR c++/21117
4377         * decl.c (check_function_type): Correctly overwrite incomplete
4378         return type with void type.
4379         * typeck.c (check_return_expr): If the function's return type is
4380         void, don't try and convert a return expr.
4381
4382 2005-10-12  David Edelsohn  <edelsohn@gnu.org>
4383
4384         PR c++/23730
4385         * call.c (build_object_call): If BINFO is NULL, bypass
4386         lookup_fnfields and set fns to NULL_TREE.
4387
4388 2005-10-12  Paolo Bonzini  <bonzini@gnu.org>
4389
4390         PR c++/24052
4391         * error.c (dump_expr): Pass LABEL_DECL to dump_decl.  Print
4392         an ADDR_EXPR of a LABEL_DECL as &&.
4393
4394 2005-10-12  Nathan Sidwell  <nathan@codesourcery.com>
4395
4396         PR c++/19964
4397         * class.c (walk_subobject_offsets): Don't walk error_mark_node.
4398
4399 2005-10-11  Ian Lance Taylor  <ian@airs.com>
4400
4401         PR c++/8057
4402         * cvt.c (convert_to_void): Don't warn about unused values when
4403         processing a template declaration.
4404
4405 2005-10-11  Mark Mitchell  <mark@codesourcery.com>
4406
4407         PR c++/21089
4408         * call.c (convert_like_real): Use decl_constant_value, not
4409         integral_constant_value.
4410         * init.c (constant_value_1): New function.
4411         (integral_constant_value): Use it.
4412         (decl_constant_value): Likewise.
4413         * typeck.c (decay_conversion): Use decl_constant_value, not
4414         integral_constant_value.
4415
4416         PR c++/21369
4417         * parser.c (cp_parser_elaborated_type_specifier): Don't treat
4418         class types as templates if the type is not appearing as part of a
4419         type definition or declaration.
4420
4421 2005-10-10  Mark Mitchell  <mark@codesourcery.com>
4422
4423         PR c++/24277
4424         * pt.c (instantiate_decl): Call finish_static_data_member_decl for
4425         static data members.
4426
4427 2005-10-10  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
4428             Mark Mitchell  <mark@codesourcery.com>
4429
4430         PR c++/23437
4431         * parser.c (cp_parser_template_argument_list): Do not treat
4432         contents of argument list as part of a constant expression.
4433
4434 2005-10-10  Mark Mitchell  <mark@codesourcery.com>
4435
4436         PR c++/24139
4437         * decl.c (grokdeclarator): Do not require template parameter lists
4438         for explicitly specialized class.
4439         * error.c (dump_aggr_type): Do not dump template arguments for
4440         non-primary specializations.
4441         (dump_function_name): Likewise.
4442
4443         PR c++/24275
4444         * pt.c (instantiate_decl): Instantiate the initializer of
4445         a static data member in the namespace containing the class
4446         containing the static data member.
4447
4448 2005-10-08  James A. Morrison  <phython@gcc.gnu.org>
4449
4450         PR c++/22172
4451         * parser.c (cp_parser_postfix_expression) <RID_TYPENAME>: Treat nontype
4452         scopes as nondependent.
4453
4454 2005-10-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4455
4456         * call.c (resolve_args): Remove redundant test.
4457
4458 2005-10-05  Paolo Bonzini  <bonzini@gnu.org>
4459
4460         PR tree-optimization/21419
4461         PR tree-optimization/24146
4462         PR tree-optimization/24151
4463
4464         * semantics.c (finish_asm_stmt): Call readonly_error if outputs are
4465         read-only.  Set ASM_VOLATILE_P for asms without outputs.
4466
4467 2005-10-05  Nathan Sidwell  <nathan@codesourcery.com>
4468
4469         PR c++/23513
4470         * call.c (joust): Adjust length count to more_specialized_fn.
4471         * pt.c (more_specialized_fn): Cope with non-static member vs
4472         non-member.
4473
4474 2005-10-04  Andrew Pinski  <pinskia@physics.uc.edu>
4475
4476         PR middle-end/23125
4477         * decl.c (make_rtl_for_nonlocal_decl): Use set_user_assembler_name
4478         instead of change_decl_assembler_name.
4479
4480 2005-10-03  Alexandre Oliva  <aoliva@redhat.com>
4481
4482         * error.c (dump_type) <UNKNOWN_TYPE>: Print reworded message.
4483
4484 2005-10-03  Mark Mitchell  <mark@codesourcery.com>
4485
4486         PR c++/17775
4487         * repo.c: Include flags.h.
4488         (finish_repo): Add -frandom-seed to the arguments.
4489
4490 2005-10-02  Mark Mitchell  <mark@codesourcery.com>
4491
4492         PR c++/22621
4493         * parser.c (cp_parser_template_argument): Don't turn "T::f" into
4494         "(*this).T::f".
4495         * pt.c (convert_nontype_argument): Remove ??? comment.
4496
4497         PR c++/23840
4498         * tree.c (lvalue_p_1): A VA_ARG_EXPR with class type is an lvalue,
4499         when class rvalues are lvalues.
4500
4501 2005-09-28  Mark Mitchell  <mark@codesourcery.com>
4502
4503         PR c++/16782
4504         * decl.c (grokdeclarator): Always pedwarn about overqualified
4505         member names.
4506
4507 2005-09-27  Mark Mitchell  <mark@codesourcery.com>
4508
4509         PR c++/22147
4510         * name-lookup.c (maybe_process_template_type_declaration): Don't
4511         treat forward declarations of classes as templates just because
4512         we're processing_template_decl.
4513         * pt.c (tsubst_decl): Clear DECL_TEMPLATE_INFO for friend
4514         functions.
4515
4516 2005-09-26  Jason Merrill  <jason@redhat.com>
4517
4518         PR c++/13764
4519         * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): New macro.
4520         * name-lookup.c (pushdecl_maybe_friend): Check it.
4521         * decl.c (begin_function_body): Do nothing if it's false.
4522         (finish_function_body): Ditto.
4523         (outer_curly_brace_block): New fn.
4524         (finish_function): Use it.
4525
4526 2005-09-26  Richard Guenther  <rguenther@suse.de>
4527
4528         PR middle-end/15855
4529         * decl2.c (do_static_destruction): Remove.
4530         (finish_static_initialization_or_destruction): Likewise.
4531         (DECL_EFFECTIVE_INIT_PRIORITY): New macro.
4532         (NEEDS_GUARD_P): Likewise.
4533         (do_static_initialization): Rename to
4534         do_static_initialization_or_destruction.  Process all
4535         initializers/destructors and handle common conditionalizing.
4536         (start_static_initialization_or_destruction): Rename to
4537         one_static_initialization_or_destruction.  Handle only
4538         decl-specific conditionalizing.
4539         (cp_finish_file): Call do_static_initialization_or_destruction.
4540
4541 2005-09-22  Jakub Jelinek  <jakub@redhat.com>
4542
4543         PR c++/21983
4544         * class.c (find_final_overrider): Move diagnostic about no unique final
4545         overrider to...
4546         (update_vtable_entry_for_fn): ... here.
4547
4548 2005-09-21  Mark Mitchell  <mark@codesourcery.com>
4549
4550         PR c++/23993
4551         * init.c (integral_constant_value): Use DECL_INTEGRAL_CONSTANT_VAR_P.
4552
4553 2005-09-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4554
4555         PR c++/23965
4556         * call.c (resolve_args): Return error_mark_node on arguments
4557         whose TREE_TYPE is error_mark_node.
4558
4559 2005-09-20  Jakub Jelinek  <jakub@redhat.com>
4560
4561         PR c++/23947
4562         * rtti.c (get_pseudo_ti_init): Recompute ti pointer after
4563         get_tinfo_ptr calls.
4564
4565 2005-09-16  Mark Mitchell  <mark@codesourcery.com>
4566
4567         PR c++/23914
4568         * parser.c (cp_parser_enclosed_template_argument_list): Make sure
4569         skip_evaluation is false when processing template arguments.
4570
4571         PR c++/21514
4572         * pt.c (check_instantiated_args): Treat uses of anonymous types as
4573         causing type-deduction failure.
4574
4575 2005-09-15  Jason Merrill  <jason@redhat.com>
4576
4577         PR c++/23357
4578         * cp-tree.def (SIZEOF_EXPR, ALIGNOF_EXPR): Change code class to
4579         tcc_expression.
4580
4581 2005-09-15  Mark Mitchell  <mark@codesourcery.com>
4582
4583         PR c++/23896
4584         * pt.c (tsubst_aggr_type): Make sure skip_evaluation is false when
4585         processing template arguments.
4586
4587         * pt.c (check_explicit_instantiation_namespace): Fix typo.
4588
4589         PR c++/13140
4590         * decl.c (check_class_member_definition_namespace): New function.
4591         (grokfndecl): Use it.
4592         (grokvardecl): Likewise.
4593         (grokdecl): Improve documentation.
4594         * pt.c (check_explicit_instantiation_namespace): New function.
4595         (register_specialization): Call check_specialization_namespace
4596         when replacing an implicitly instantiated function.
4597         (check_explicit_specialization): Ensure that DECL_CONTEXT is set
4598         correctly for namespace-scope specializations.
4599         (do_decl_instantiation): Use
4600         check_explicit_instantiation_namespace.
4601         (do_type_instantiation): Likewise.
4602
4603 2005-09-15  Nathan Sidwell  <nathan@codesourcery.com>
4604
4605         PR c++/23725
4606         * error.c (dump_decl): <USING_DECL case> Use USING_DECL_SCOPE.
4607
4608 2005-09-13  Bastian Blank <waldi@debian.org>
4609
4610         PR c++/16171
4611         * mangle.c (find_substitution): Do not use special substitutions
4612         for identifiers not in std::.
4613
4614 2005-09-13  Mark Mitchell  <mark@codesourcery.com>
4615
4616         PR c++/23839
4617         * typeck.c (cxx_mark_addressable): Only check DECL_HARD_REGISTER
4618         for VAR_DECLs.
4619
4620 2005-09-13  Mark Mitchell  <mark@codesourcery.com>
4621
4622         PR c++/23842
4623         * pt.c (tsubst_default_argument): Do treat default argument
4624         expressions as occurring in the context of the function called.
4625
4626 2005-09-12  Mark Mitchell  <mark@codesourcery.com>
4627
4628         PR c++/23841
4629         * parser.c (cp_parser_primary_expression): Recognize the closing
4630         ">" of a template-argument-list after a floating-point literal as
4631         the end of a cast expression.
4632
4633 2005-09-12  Mark Mitchell  <mark@codesourcery.com>
4634
4635         PR c++/23789
4636         * cvt.c (perform_qualification_conversions): Don't create
4637         unnecessary NOP_EXPRs.
4638         * pt.c (tsubst_template_arg): Use fold_non_dependent_expr.
4639
4640 2005-09-12  Ian Lance Taylor  <ian@airs.com>
4641
4642         PR g++/7874
4643         * cp-tree.h (struct lang_decl_flags): Add hidden_friend_p
4644         bitfield.  Make dummy bitfield one bit smaller.
4645         (DECL_HIDDEN_FRIEND_P): Define.
4646         (pushdecl_maybe_friend): Declare.
4647         (pushdecl_top_level_maybe_friend): Declare.
4648         * decl.c (duplicate_decls): Add newdecl_is_friend parameter.
4649         Change prototype and all callers.  Add assertion that a
4650         DECL_ARTIFICIAL FUNCTION_DECL is not DECL_HIDDEN_FRIEND_P.  Set
4651         DECL_ANTICIPATED and DECL_HIDDEN_FRIEND_P in duplicated decl if
4652         appropriate.
4653         * name-lookup.c (supplement_binding): Don't ignore a
4654         DECL_HIDDEN_FRIEND_P.
4655         (pushdecl_maybe_friend): Break out contents of pushdecl.  Add
4656         is_friend parameter.  Set DECL_ANTICIPATED and
4657         DECL_HIDDEN_FRIEND_P for a friend function.
4658         (pushdecl): Just call pushdecl_maybe_friend.
4659         (pushdecl_with_scope): Add is_friend parameter.  Change prototype
4660         and all callers.
4661         (pushdecl_namespace_level): Likewise.
4662         (push_overloaded_decl): Likewise.  Check DECL_HIDDEN_FRIEND_P as
4663         well as DECL_ANTICIPATED when checking for a builtin.
4664         (do_nonmember_using_decl): Check DECL_HIDDEN_FRIEND_P as well as
4665         DECL_ANTICIPATED when checking for a builtin.
4666         (do_nonmember_using_decl): Likewise.
4667         (pushdecl_top_level_1): Add is_friend parameter.  Change all
4668         callers.
4669         (pushdecl_top_level_maybe_friend): New function.
4670         (remove_hidden_names): New function.
4671         (struct arg_lookup): Add args field.
4672         (friend_of_associated_class_p): New static function.
4673         (arg_assoc_namespace): Ignore hidden functions which are not
4674         friends of an associated class of some argument.
4675         (lookup_arg_dependent): Remove hidden functions from list passed
4676         in.  Initialize k.args.
4677         * name-lookup.h (remove_hidden_names): Declare.
4678         * friend.c (do_friend): Call pushdecl_maybe_friend instead of
4679         pushdecl.
4680         * call.c (add_function_candidate): Change DECL_ANTICIPATED test to
4681         an assertion, with a check for DECL_HIDDEN_FRIEND_P.
4682         (build_new_function_call): Add koenig_p parameter.  Change
4683         prototype and callers.
4684         * pt.c (register_specialization): Add is_friend parameter.  Change
4685         all callers.
4686         (push_template_decl_real): Change is_friend parameter to bool.
4687         Change prototype and all callers.
4688         (tsubst_friend_class): Call pushdecl_top_level_maybe_friend
4689         instead of pushdecl_top_level.
4690
4691 2005-09-11  Richard Henderson  <rth@redhat.com>
4692
4693         * decl2.c (build_anon_union_vars): Copy attributes from the base addr.
4694         * pt.c (tsubst_decl): Substitute in DECL_VALUE_EXPR.
4695
4696 2005-09-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4697
4698         * parser.c (cp_parser_translation_unit): Simplify.  The while-block
4699         was actually executed at most once.
4700
4701 2005-09-09  Richard Henderson  <rth@redhat.com>
4702
4703         PR debug/20998
4704         * cp-tree.def (ALIAS_DECL): Remove.
4705         * cp-lang.c (cp_init_ts): Remove support for it.
4706         * error.c (dump_decl): Likewise.
4707         * name-lookup.c (pushdecl): Likewise.
4708         * semantics.c (finish_id_expression): Likewise.
4709         * decl2.c (build_anon_union_vars): Use a VAR_DECL with
4710         DECL_VALUE_EXPR instead.
4711
4712 2005-09-09  Mark Mitchell  <mark@codesourcery.com>
4713
4714         PR c++/22252
4715         * decl.c (start_preparsed_function): Do not pay attention to
4716         #pragma interface for implicitly-defined methods.
4717         * decl2.c (cp_finish_file): Do not complain about uses of inline
4718         functions that have bodies, even if we decided not to emit the
4719         body in this translation unit.
4720         * semantics.c (note_decl_for_pch): Do not mess with linkage.
4721         (expand_or_defer_fn): Make inline, non-template functions COMDAT
4722         at this point.
4723
4724 2005-09-08  Richard Henderson  <rth@redhat.com>
4725
4726         PR debug/23190
4727         * decl.c (wrapup_globals_for_namespace): Call
4728         emit_debug_global_declarations.
4729         * decl2.c (cp_finish_file): Likewise.
4730
4731 2005-09-08  Mark Mitchell  <mark@codesourcery.com>
4732
4733         PR c++/23691
4734         * decl2.c (mark_used): Instantiate static data members initialized
4735         by constants, even in a template.
4736
4737 2005-09-08  Andrew Pinski  <pinskia@physics.uc.edu>
4738
4739         PR obj-c++/16816
4740         * parser.c (cp_parser_objc_selector_expression): Treat CPP_SCOPE as
4741         two CPP_COLON.
4742
4743 2005-09-07  Richard Guenther  <rguenther@suse.de>
4744
4745         * cp-gimplify.c (cp_gimplify_expr): Create empty CONSTRUCTOR
4746         for EMPTY_CLASS_EXPR.
4747
4748 2005-09-06  Jakub Jelinek  <jakub@redhat.com>
4749
4750         PR c/23075
4751         * typeck.c (check_return_expr): Add no_warning argument.  Set
4752         *no_warning to true if "return-statement with no value, in function
4753         returning" warning has been issued.
4754         * cp-tree.h (check_return_expr): Adjust prototype.
4755         * semantics.c (finish_return_stmt): Set TREE_NO_WARNING if
4756         check_return_expr set *no_warning to true.
4757
4758 2005-09-06  Mark Mitchell  <mark@codesourcery.com>
4759
4760         * cp-tree.h (rvalue): New function.
4761         * call.c (build_conditional_expr): Use it.
4762         * init.c (build_new_1): Likewise.
4763         * rtti.c (build_dynamic_cast_1): Likewise.
4764         * tree.c (rvalue): New function.
4765         * typeck.c (build_unary_op): Use it.
4766         (build_static_cast_1): Likewise.
4767
4768         PR c++/9782
4769         * init.c (build_new_1): Make sure the entire array type is
4770         complete, not just its element types.
4771
4772 2005-09-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4773
4774         * decl.c (check_elaborated_type_specifier): Remove redundant check.
4775
4776 2005-09-06  Jakub Jelinek  <jakub@redhat.com>
4777
4778         PR c++/23056
4779         * typeck.c (ignore_overflows): New helper function.
4780         (build_static_cast_1): Use it.
4781
4782 2005-09-06  Kazu Hirata  <kazu@codesourcery.com>
4783
4784         * cp-tree.h, decl.c, decl2.c, semantics.c: Fix comment typos.
4785         Follow spelling conventions.
4786
4787 2005-09-05  Mark Mitchell  <mark@codesourcery.com>
4788
4789         PR c++/23667
4790         * pt.c (tsubst_decl): Clear DECL_TEMPLATE_INSTANTIATED when
4791         copying a VAR_DECL.
4792
4793 2005-09-05  Mark Mitchell  <mark@codesourcery.com>
4794
4795         PR c++/21440
4796         * semantics.c (finish_stmt_expr_expr): Add an explicit
4797         initialization to the last statement in the statement-expression.
4798         * (finish_stmt_expr): Adjust accordingly.
4799
4800 2005-09-03  Mark Mitchell  <mark@codesourcery.com>
4801
4802         PR c++/23699
4803         * decl2.c (mark_used): Always instantiate static data members
4804         initialized by constant expressions.
4805         * pt.c (instantiate_decl): Instantiate the initializers for static
4806         data members initialized by constant expressions.
4807
4808         PR c++/21687
4809         * semantics.c (expand_or_defer_fn): Do not call ggc_collect when
4810         finishing processing for a template function in a local class.
4811         Revert:
4812         2005-09-02  Mark Mitchell  <mark@codesourcery.com>
4813         * parser.c (cp_parser_class_specifier): Push/pop GC contexts
4814         around functions in local classes.
4815
4816 2005-09-02  Mark Mitchell  <mark@codesourcery.com>
4817
4818         PR c++/21687
4819         * parser.c (cp_parser_class_specifier): Push/pop GC contexts
4820         around functions in local classes.
4821
4822 2005-08-31  Andrew Pinski  <pinskia@physics.uc.edu>
4823
4824         PR obj-c++/23640
4825         * decl2.c (cp_finish_file): If this is obj-c++ and we need a static
4826         init, call generate_ctor_or_dtor_function.
4827
4828 2005-08-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4829
4830         PR c++/13377
4831         * parser.c (cp_parser_lookup_name): Pass LOOKUP_COMPLAIN to
4832         lookup_name_real on final parse.
4833
4834 2005-08-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4835
4836         PR c++/23639
4837         * semantics.c (qualified_name_lookup_error): Do not complain again
4838         on invalid scope.
4839
4840 2005-08-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4841
4842         PR c++/23586
4843         * parser.c (cp_parser_namespace_name): Move diagnostic for
4844         invalid namespace-name to here from ...
4845         * name-lookup.c (do_namespace_alias): ... here and ...
4846         (do_using_directive): ... here.  Remove dead code.
4847
4848 2005-08-28  Mark Mitchell  <mark@codesourcery.com>
4849
4850         PR c++/23099
4851         * cp-tree.h (saved_scope): Add skip_evaluation.
4852         * decl.c (start_decl): Use DECL_INITIALIZED_IN_CLASS_P, not
4853         DECL_INITIAL, to determine whether or not a static data member was
4854         initialized in the class-specifier.
4855         (cp_finish_decl): Add comment.
4856         * init.c (integral_constant_value): Subtitute into the
4857         initializers for static data members in templates.
4858         * name-lookup.c (push_to_top_level): Save skip_evaluation.
4859         (pop_from_top_level): Restore it.
4860         * pt.c (instantiate_class_template): Do not substitute into the
4861         intializers of static data members when instantiating a class.
4862         (regenerate_decl_from_template): Simplify.
4863         (instantiate_decl): Tidy.  Substitute into the initializer for a
4864         static data member even when the definition of the data member is
4865         not available.
4866
4867 2005-08-26  Mark Mitchell  <mark@codesourcery.com>
4868
4869         PR c++/19004
4870         * pt.c (uses_template_parms): Handle IDENTIFIER_NODE.
4871         (type_dependent_expression_p): Allow BASELINKs whose associated
4872         functions are simply a FUNCTION_DECL.
4873
4874         PR c++/23491
4875         * cp-tree.h (build_vec_init): Adjust prototype.
4876         * init.c (perform_member_init): Adjust call to build_vec_init.
4877         (build_aggr_init): Likewise.
4878         (build_new_1): Do not call build_default_init for array types.
4879         (build_vec_init): Add explicit_default_init_p parameter.  Perform
4880         default initialization of vector elements when set.
4881         * typeck.c (build_modify_expr): Adjust call to build_vec_init.
4882
4883 2005-08-25  Nathan Sidwell  <nathan@codesourcery.com>
4884
4885         PR c++/20817
4886         * typeck.c (build_x_unary_op): Make sure OFFSET_REF is not for a
4887         ->*.
4888
4889 2005-08-24  Nathan Sidwell  <nathan@codesourcery.com>
4890
4891         PR c++/22454
4892         * parser.c (cp_lexer_peek_nth_token): Relax assert.
4893
4894 2005-08-23  Nathan Sidwell  <nathan@codesourcery.com>
4895
4896         PR c++/23044
4897         * pt.c (tsubst_qualified_id): A SCOPE_REF can still remain.
4898
4899 2005-08-22  James E Wilson  <wilson@specifix.com>
4900
4901         PR tree-optimization/23426
4902         * decl.c (grokdeclarator): Use TYPE_SIZE_UNIT not TYPE_SIZE for
4903         array size check.
4904
4905 2005-08-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4906
4907         PR c++/22233
4908         * pt.c (push_template_decl_real): Return error_mark_node if the
4909         number of template parameters does not match previous definition.
4910
4911 2005-08-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4912
4913         PR c++/23089
4914         * decl.c (require_complete_types_for_parms): Mark incomplete types
4915         as invalid.
4916
4917 2005-08-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4918
4919         * parser.c (cp_parser_nth_token_starts_template_argument_list_p):
4920         Fix typo in leading comment.
4921
4922 2005-08-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4923
4924         * name-lookup.c, ptree.c: Delete HOST_PTR_PRINTF.
4925
4926 2005-08-15 Fariborz Jahanian <fjahanian@apple.com>
4927
4928         * cp-tree.h (can_convert_arg, fn_type_unification): New argument.
4929         * call.c (add_template_candidate_real): Pass down 'flags' to
4930         fn_type_unification.
4931         (can_convert_arg): New 'flags' argument. Pass it to call to
4932         implicit_conversion instead of LOOKUP_NORMAL.
4933         (can_convert): Add LOOKUP_NORMAL to call to can_convert_arg.
4934         * class.c (resolve_address_of_overloaded_function): Ditto.
4935         (resolve_address_of_overloaded_function): Ditto.
4936         * decl.c (reshape_init, check_default_argument): Ditto.
4937         * typeck.c (build_ptrmemfunc): Ditto.
4938         * pt.c (type_unification_real): Add 'flags' argument.
4939         (fn_type_unification): Pass 'flags' to type_unification_real.
4940         (type_unification_real): Pass new 'flags' argument to call to
4941         can_convert_arg.
4942
4943 2005-08-12  Giovanni Bajo  <giovannibajo@libero.it>
4944             Nathan Sidwell  <nathan@codesourcery.com>
4945
4946         PR c++/21799
4947         PR c++/8271
4948         * pt.c (unify) <METHOD_TYPE>: Check this-pointer cv-qualifiers
4949         explicitly.
4950
4951 2005-08-12  Nathan Sidwell  <nathan@codesourcery.com>
4952
4953         PR c++/21799
4954         Revert my 2005-07-08 patch
4955         * pt.c (type_unification_real): Remove is_method_argument and
4956         assoicated checks.
4957         (fn_type_unification, unify): Adjust type_unification_real calls.
4958
4959 2005-08-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4960
4961         PR c++/23266
4962         * decl2.c (grokfield): Check that method is not static before
4963         marking it as pure.
4964
4965 2005-08-11  Nathan Sidwell  <nathan@codesourcery.com>
4966
4967         PR c++/23219
4968         * name-lookup.c (pushtag): Process the template type before
4969         altering the identifier lookup fields.  Remove unreachable code
4970         creating an empty stub decl.
4971
4972 2005-08-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4973
4974         PR c++/20646
4975         * decl.c (grokdeclarator): Reset storage_class after error.
4976
4977 2005-08-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4978
4979         PR c++/22508
4980         * init.c (build_new_1): Check for empty candidate list.
4981
4982 2005-08-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4983
4984         PR c++/23191
4985         * pt.c (tsubst) <case METHOD_TYPE>: Check for error_mark_node
4986         before calling build_exception_variant.
4987
4988 2005-08-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4989
4990         PR c++/19498
4991         * pt.c (tsubst_decl) <case TEMPLATE_DECL>: Return ERROR_MARK_NODE
4992         if substitution of template args did not succeed.
4993
4994 2005-08-06  Michael Matz  <matz@suse.de>
4995
4996         * method.c (use_thunk): Call init_insn_lengths.
4997
4998 2005-08-05  James A. Morrison  <phython@gcc.gnu.org>
4999
5000         PR c++/22514
5001         * name-lookup.c (cp_emit_debug_info_for_using): Do nothing if
5002         sorrycount or errorcount are nonzero.
5003
5004 2005-08-05  Mark Mitchell  <mark@codesourcery.com>
5005
5006         * name-lookup.c (pushtag): Remove accidental commit from:
5007         2004-12-21  Mark Mitchell  <mark@codesourcery.com>
5008         PR c++/19063
5009         * decl.c (grokdeclarator): Return error_mark_node, not
5010         void_type_node, to indicate errors.
5011         * parser.c (cp_parser_template_parameter_list): Robustify.
5012         (cp_parser_template_parameter): Likewise.
5013
5014 2005-08-01  Kazu Hirata  <kazu@codesourcery.com>
5015
5016         * class.c, decl.c, name-lookup.c, pt.c, typeck.c, typeck2.c:
5017         Fix comment typos.
5018
5019 2005-07-29  Kazu Hirata  <kazu@codesourcery.com>
5020
5021         * method.c: Fix a comment typo.
5022
5023 2005-07-28  Mark Mitchell  <mark@codesourcery.com>
5024
5025         PR c++/22545
5026         * call.c (add_builtin_candidate): Adjust for changes in
5027         representation of pointer-to-member types.
5028
5029 2005-07-28  Mike Stump  <mrs@apple.com>
5030
5031         * pt.c (check_explicit_specialization): Add visibility logic.
5032         (lookup_template_class): Likewise.
5033         (instantiate_class_template): Likewise.
5034
5035 2005-07-27  Devang Patel  <dpatel@apple.com>
5036
5037         * name-lookup.c (pushtag): Do no set DECL_IGNORED_P bit.
5038
5039 2005-07-25  Ian Lance Taylor  <ian@airs.com>
5040
5041         * ptree.c (cxx_print_identifier): Print a leading space if the
5042         indent level is 0.
5043
5044 2005-07-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5045
5046         * call.c (convert_for_arg_passing): Check function pointers when
5047         -Wmissing-format-attribute is activated.
5048         * typeck.c (convert_for_assignment): Likewise.
5049
5050 2005-07-22  Manfred Hollstein  <mh@suse.com>
5051
5052         * parser.c (cp_parser_declaration): Fix unitialised warnings.
5053
5054 2005-07-21  Andrew Pinski  <pinskia@physics.uc.edu>
5055
5056         * class.c (build_base_path): Fix typo.
5057
5058 2005-07-21  Andrew Pinski  <pinskia@physics.uc.edu>
5059
5060         PR C++/22358
5061         * class.c (build_base_path): Convert BINFO_OFFSET to the correct type.
5062
5063 2005-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5064
5065         * call.c: Fix comment typo(s).
5066         * cxx-pretty-print.h: Likewise.
5067         * name-lookup.c: Likewise.
5068         * parser.c: Likewise.
5069
5070 2005-07-20  Douglas Gregor <doug.gregor@gmail.com>
5071
5072         PR c++/2922
5073         * semantics.c (perform_koenig_lookup): For dependent calls, just
5074         return the set of functions we've found so far. Later, it will be
5075         augmented by those found through argument-dependent lookup.
5076         * name-lookup.c (lookup_arg_dependent): Implement DR 164 by removing
5077         the optimization that skips namespaces where the functions were
5078         originally found.
5079
5080 2005-07-20  Giovanni Bajo  <giovannibajo@libero.it>
5081
5082         Make CONSTRUCTOR use VEC to store initializers.
5083         * call.c (convert_default_arg): Update call to digest_init.
5084         * class.c (dump_class_hierarchy, dump_array): Update to cope with
5085         VEC in CONSTRUCTOR_ELTS.
5086         * cp-tree.h (EMPTY_CONSTRUCTOR_P): Likewise.
5087         (finish_compound_literal, digest_init): Update declaration.
5088         * decl.c (struct reshape_iter): New data type.
5089         (reshape_init_array): Rename to...
5090         (reshape_init_array_1): Update to cope with VEC in CONSTRUCTOR_ELTS.
5091         (reshape_init): Rewrite from scratch. Split parts into...
5092         (reshape_init_array, reshape_init_vector, reshape_init_class,
5093         reshape_init_r): New functions.
5094         (check_initializer): Update call to reshape_init. Remove obsolete
5095         code.
5096         (initialize_artificial_var, cp_complete_array_type): Update to cope
5097         with VEC in CONSTRUCTOR_ELTS.
5098         * decl2.c (grokfield): Update calls to digest_init.
5099         (mark_vtable_entries): Update to cope with VEC in CONSTRUCTOR_ELTS.
5100         * error.c (dump_expr_init_vec): New function.
5101         (dump_expr): Use dump_expr_init_vec.
5102         * init.c (build_zero_init, build_vec_init): Update to cope with VEC
5103         in CONSTRUCTOR_ELTS.
5104         (expand_default_init): Update call to digest_init.
5105         * parser.c  (cp_parser_postfix_expression): Use a VEC for the
5106         initializers.
5107         (cp_parser_initializer_list): Build a VEC of initializers.
5108         * pt.c (tsubst_copy, tsubst_copy_and_build): Update to cope with VEC
5109         in CONSTRUCTOR_ELTS.
5110         * rtti.c (tinfo_base_init, generic_initializer, ptr_initializer,
5111         ptm_initializer, class_initializer, get_pseudo_ti_init): Use
5112         build_constructor_from_list instead of build_constructor.
5113         * semantics.c (finish_compound_literal): Update call to digest_init.
5114         * tree.c (stabilize_init): Update to cope with VEC in
5115         CONSTRUCTOR_ELTS.
5116         * typeck.c (build_ptrmemfunc1): Likewise.
5117         * typeck2.c: (cxx_incomplete_type_error, split_nonconstant_init_1):
5118         Likewise.
5119         (store_init_value): Use build_constructor_from_list and update call
5120         to digest_init.
5121         (digest_init): Rewrite.
5122         (process_init_constructor): Rewrite from scratch. Split into...
5123         (process_init_constructor_array, picflag_from_initializer,
5124         process_init_constructor_record, process_init_constructor_union):
5125         New functions.
5126         (PICFLAG_ERRONEOUS, PICFLAG_NOT_ALL_CONSTANT, PICFLAG_NOT_ALL_SIMPLE):
5127         New macros.
5128         (build_functional_cast): Use build_constructor_from_list instead of
5129         build_constructor.
5130
5131 2005-07-18  Mark Mitchell  <mark@codesourcery.com>
5132
5133         PR c++/22263
5134         * cp-tree.h (instantiate_decl): Change prototype.
5135         * decl2.c (mark_used): Adjust accordingly.
5136         * pt.c (do_decl_instantiation): Likewise.
5137         (instantiate_class_member): Likewise.
5138         (instantiate_decl): Rename undefined_ok as expl_inst_class_mem_p.
5139         Clear DECL_INTERFACE_KNOWN for an explicitly instantiated template
5140         that has no definition available.
5141         (instantiate_pending_templates): Adjust call to instantiate_decl.
5142
5143 2005-07-17  Mark Mitchell  <mark@codesourcery.com>
5144
5145         PR c++/22139
5146         * cp-tree.h (DECL_TEMPLATE_INFO): Improve documentation.
5147         * decl.c (duplicate_decls): Re-register template specializations
5148         for functions that have DECL_TEMLPLATE_INFO, even if they do not
5149         have DECL_TEMPLATE_INSTANTIATION set.
5150
5151 2005-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5152
5153         * call.c (diagnostic_fn_t): New.
5154         (build_temp, convert_like_real): Use diagnostic_fn_t.
5155
5156 2005-07-15  Mark Mitchell  <mark@codesourcery.com>
5157
5158         PR c++/22204
5159         * repo.c (repo_emit_p): Robustify.
5160
5161 2005-07-14  Daniel Berlin  <dberlin@dberlin.org>
5162
5163         Fix PR c++/22452
5164         * tree.c (decl_linkage): Don't check DECL_COMDAT on CONST_DECL.
5165
5166 2005-07-15  Mark Mitchell  <mark@codesourcery.com>
5167
5168         PR c++/22132
5169         * call.c (implicit_conversion): Add c_cast_p parameter.
5170         (standard_conversion): Likewise.  Allow conversions between
5171         differently-qualified pointer types when performing a C-style
5172         cast.
5173         (add_function_candidate): Adjust callee.
5174         (build_builtin_candidate): Likewise.
5175         (build_user_type_conversion_1): Likewise.
5176         (conditional_conversion): Likewise.
5177         (can_convert_arg): Likewise.
5178         (can_convert_arg_bad): Likewise.
5179         (perform_implicit_conversion): Likewise.
5180         * cp-tree.h (comp_ptr_ttypes_const): Declare.
5181         * typeck.c (comp_ptr_ttypes_const): Give it external linkage.
5182         Return bool.
5183
5184 2005-07-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5185             Nathan Sidwell  <nathan@codesourcery.com>
5186
5187         PR c++/20172
5188         * pt.c (tsubst_template_parms): Check for invalid non-type
5189         parameters.
5190
5191 2005-07-09  Andrew Pinski  <pinskia@physics.uc.edu>
5192
5193         * cp-lang.c (shadowed_var_for_decl, decl_shadowed_for_var_lookup,
5194         decl_shadowed_for_var_insert): Move over to cp-objcp-common.c.
5195         (cp_init_ts): Call init_shadowed_var_for_decl.
5196         Remove include of gt-cp-cp-lang.h.
5197         * cp-objcp-common.c (shadowed_var_for_decl,
5198         decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Moved from
5199         cp-lang.c.
5200         (init_shadowed_var_for_decl): New function to initialize
5201         shadowed_var_for_decl.
5202         Include gt-cp-cp-objcp-common.h.
5203         * Make-lang.in (gt-cp-lang.h): Remove.
5204         (gt-cp-cp-objcp-common.h): Add.
5205         (cp/cp-lang.o): Remove dependancy on gt-cp-lang.h.
5206         (cp/cp-objcp-common.o): Add dependancy on gt-cp-cp-objcp-common.h.
5207         * config-lang.in (gtfiles): Remove cp-lang.c and Add cp-objcp-common.c.
5208         * cp-tree (init_shadowed_var_for_decl): Add prototype.
5209
5210 2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
5211
5212         * Make-lang.in: Add gt-cp-lang.h.
5213         (cp-lang.o): Ditto.
5214         * class.c (create_vtable_ptr): Stop setting DECL_ASSEMBLER_NAME on
5215         the field.
5216         * config-lang.in: Add cp-lang.c to gtfiles.
5217         * cp-lang.c: Include hashtab.h.
5218         (cp_init_ts): New function.
5219         (LANG_HOOK_INIT_TS): Use macro.
5220         (decl_shadowed_for_var_lookup): New function.
5221         (decl_shadowed_for_var_insert): Ditto.
5222         * cp-tree.h (THUNK_FUNCTION_CHECK): Use decl_common.
5223         (NON_THUNK_FUNCTION_CHECK): Ditto.
5224         (DECL_NAMESPACE_ASSOCIATIONS): Use decl_non_common.
5225         (DECL_INIT_PRIORITY): Ditto.
5226         (DECL_HAS_SHADOWED_FOR_VAR_P): Ditto.
5227         (DECL_SHADOWED_FOR_VAR): Use hashtable.
5228         (SET_DECL_SHADOWED_FOR_VAR): Ditto.
5229         * decl.c (duplicate_decls): Update for new/updated structures.
5230         (poplevel): Use SET_DECL_SHADOWED_FOR_VAR.
5231         * decl2.c (start_static_initialization_or_destruction): Deal with
5232         priority.
5233         * pt.c (tsubst_decl): Check TS_DECL_WRTL before doing
5234         SET_DECL_RTL.
5235         * tree.c (handle_init_priority_attribute): Handle priority.
5236
5237 2005-07-08  Nathan Sidwell  <nathan@codesourcery.com>
5238
5239         PR c++/21799
5240         * pt.c (type_unification_real): Add is_method argument.  Use it
5241         for this pointer unification.
5242         (fn_type_unification): Adjust type_unification_real call.
5243         (unify): Likewise.
5244
5245 2005-07-07  Nathan Sidwell  <nathan@codesourcery.com>
5246
5247         * pt.c (type_unification_real): Remove allow_incomplete argument.
5248         Remove unreachable code.
5249         (fn_type_unification): Adjust call to type_unification_real.
5250         (unify): Likewise.
5251
5252 2005-07-05  Paolo Bonzini  <bonzini@gnu.org>
5253
5254         * Makefile.in (class.o, decl2.o): Adjust dependencies.
5255         * class.c: Include tree-dump.h.
5256         * decl2.c: Include tree-dump.h.
5257
5258 2005-07-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5259
5260         * dump.c: Use dump_string_field.
5261
5262 2005-07-03  Joseph S. Myers  <joseph@codesourcery.com>
5263
5264         * cp-tree.h (GCC_DIAG_STYLE): #undef before defining.  Change
5265         minimum GCC version for format checking to 4.1.
5266
5267 2005-07-02  Kazu Hirata  <kazu@codesourcery.com>
5268
5269         * Make-lang.in (cc1plus-checksum.c): Use
5270         build/genchecksum$(build_exeext), not build/genchecksum$(exeext).
5271
5272 2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>
5273
5274         * name-lookup.c, parser.c: Use %q, %< and %> to quote in
5275         diagnostics.
5276
5277 2005-07-02  Zack Weinberg  <zack@codesourcery.com>
5278             Joseph S. Myers  <joseph@codesourcery.com>
5279
5280         * error.c (location_of): Add comment.
5281         (locate_error, cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
5282         * cp-tree.h (cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
5283         * call.c, class.c, decl.c, decl2.c, friend.c, init.c,
5284         name-lookup.c, parser.c, pt.c, search.c, semantics.c, typeck.c,
5285         typeck2.c: Use '+' flag instead of %J, cp_error_at, cp_warning_at
5286         or cp_pedwarn_at.  Mark up some diagnostic strings with N_.
5287
5288 2005-06-30  Daniel Berlin  <dberlin@dberlin.org>
5289
5290         * decl.c (require_complete_types_for_parms): Call relayout_decl
5291         instead of layout_decl.
5292
5293 2005-06-30  Zack Weinberg  <zack@codesourcery.com>
5294             Jakub Jelinek  <jakub@redhat.com>
5295
5296         * cp-lang.c: No need to include cxx-pretty-print.h.
5297         * error.c (cp_printer): Update signature.  No need to process
5298         flags.
5299         (print_instantiation_partial_context): Output last newline
5300         with pp_base_newline.
5301         * Make-lang.in: Update dependencies.
5302
5303 2005-06-30  Steven Bosscher  <stevenb@suse.de>
5304
5305         * decl.c (start_decl): Replace DECL_THREAD_LOCAL with
5306         DECL_THREAD_LOCAL_P.
5307         (cp_finish_decl): Likewise.
5308         (grokvardecl): Set the default DECL_TLS_MODEL here.
5309
5310 2005-06-28  Joseph S. Myers  <joseph@codesourcery.com>
5311
5312         * cvt.c (ocp_convert): Use invalid_conversion hook.
5313         * typeck.c (build_binary_op): Use invalid_binary_op hook.
5314         (build_unary_op): Use invalid_unary_op hook.
5315
5316 2005-06-28  Paul Brook  <paul@codesourcery.com>
5317
5318         * Make-lang.in (cp/except.o): Depend on $(TARGET_H)
5319         * except.c: Include target.h.
5320         (init_exception_processing): Initialize unwind_resume_libfunc.
5321         * doc/tm.texi: Document TARGET_ASM_TTYPE
5322
5323 2005-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5324
5325         * call.c (build_over_call): Pass in named argument list to
5326         `check_function_arguments'.
5327         * typeck.c (build_function_call): Likewise.
5328
5329 2005-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5330
5331         * cp-tree.h (lang_check_failed): Add noreturn attribute.
5332
5333 2005-06-25  Kelley Cook  <kcook@gcc.gnu.org>
5334
5335         * all files: Update FSF address in copyright headers.
5336
5337 2005-06-23  Jason Merrill  <jason@redhat.com>
5338
5339         PR c++/19317
5340         * semantics.c (simplify_aggr_init_expr): Use
5341         CALL_EXPR_RETURN_SLOT_OPT, not CALL_EXPR_HAS_RETURN_SLOT_ADDR.
5342
5343 2005-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5344
5345         * pt.c (register_specialization): Remove superfluous assertion.
5346
5347 2005-06-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5348
5349         * call.c (convert_like_real): Add format attribute.
5350         * typeck.c (check_for_casting_away_constness,
5351         build_static_cast_1): Likewise.
5352         * typeck2.c (readonly_error, cxx_incomplete_type_diagnostic):
5353         Likewise.
5354
5355 2005-06-17  Geoffrey Keating  <geoffk@apple.com>
5356
5357         PR c++/17413
5358         * pt.c (type_unification_real): Apply template type deduction even
5359         to procedure parameters that are not dependent on a template
5360         parameter.
5361
5362 2005-06-16  Nathan Sidwell  <nathan@codesourcery.com>
5363
5364         * rtti.c (get_tinfo_decl): Avoid caching tinfo_descs when it might
5365         change.
5366         (create_pseudo_type_info): First parameter is an int.
5367
5368 2005-06-15  Nathan Sidwell  <nathan@codesourcery.com>
5369
5370         PR c++/20678
5371         * error.c (dump_expr) <COMPONENT_REF case>: Check DECL_NAME is not
5372         null.
5373
5374         * Make-lang.in: Reformat some long lines.
5375         (gt-cp-rtti.h): New target.
5376         (cp/rtti.o): Add dependency.
5377         * config-lang.in (gtfiles): Add cp/rtti.c.
5378         * cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
5379         CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
5380         CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
5381         CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
5382         CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
5383         (ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
5384         ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
5385         class_desc_type_node, si_class_desc_type_node,
5386         vmi_class_desc_type_node, ptm_desc_type_node,
5387         base_desc_type_node): Remove.
5388         * decl.c: Adjust documentation of global trees.
5389         * rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
5390         TINFO_REAL_NAME): Remove.
5391         (struct tinfo_s): New.
5392         (enum tinfo_kind): New.
5393         (tinfo_descs): New.
5394         (get_tinfo_decl): Adjust use of tinfo descriptor.
5395         (tinfo_base_init, generic_initializer, ptr_initializer,
5396         ptm_initializer, class_initializer): Likewise.
5397         (get_pseudo_ti_init): Take descriptor index. Adjust.
5398         (create_pseudo_type_info): Likewise.
5399         (get_pseudo_ti_desc): Return descriptor index. Adjust.
5400         (create_tinfo_types): Adjust use of create_pseudo_type_info.
5401         (emit_tinfo_decl): Adjust use of tinfo descriptor.
5402
5403 2005-06-14  Roger Sayle  <roger@eyesopen.com>
5404
5405         * decl.c (grokdeclarator): Only check TREE_OVERFLOW on INTEGER_CST.
5406
5407 2005-06-13  Geoffrey Keating  <geoffk@apple.com>
5408
5409         * Make-lang.in (c++.install-man): Doesn't really depend on installdirs.
5410         (rule for installing g++.1 manpage): Does depend on installdirs.
5411
5412 2005-06-13  Nathan Sidwell  <nathan@codesourcery.com>
5413
5414         PR c++/20789
5415         * decl.c (cp_finish_decl): Clear runtime runtime initialization if
5416         in-class decl's initializer is bad.
5417
5418         PR c++/21929
5419         * parser.c (struct cp_parser): Document that scope could be
5420         error_mark.
5421         (cp_parser_diagnose_invalid_type_name): Cope with error_mark for
5422         scope.
5423         (cp_parser_nested_name_specifier): Return NULL_TREE on error.
5424         (cp_parser_postfix_expression): Deal with null or error_mark
5425         scope.
5426         (cp_parser_elaborated_type_specifier): Adjust
5427         cp_parser_nested_name_specifier call.
5428
5429         * parser (cp_parser_skip_to_end_of_block_or_statement): Cleanup.
5430
5431 2005-06-12  Roger Sayle  <roger@eyesopen.com>
5432
5433         PR c++/21930
5434         * error.c (dump_expr): UNARY_PLUS_EXPR need not handle void types.
5435         Treat CONVERT_EXPR identically to NOP_EXPR.
5436
5437 2005-06-10  Aldy Hernandez  <aldyh@redhat.com>
5438
5439         PR c++/10611
5440         * cvt.c (build_expr_type_conversion): Same.
5441         * typeck.c (build_binary_op): Handle vectors.
5442         (common_type): Same.
5443         (type_after_usual_arithmetic_conversions): Same.
5444
5445 2005-06-08  Nathan Sidwell  <nathan@codesourcery.com>
5446
5447         PR c++/19497
5448         * cp-tree.def (USING_DECL): Update documentation.
5449         * cp-tree.h (DECL_DEPENDENT_P): New.
5450         (USING_DECL_DECLS, USING_DECL_SCOPE): New.
5451         * class.c (handle_using_decl): Move most of the processing to ...
5452         * name-lookup.c (do_class_using_decl): ... here.  Make stricter.
5453         (push_using_decl): Use USING_DECL_SCOPE.
5454         (cp_emit_debug_info_for_using): Make extern.
5455         * cxx-pretty-print.c (pp_cxx_statement) <USING_DECL case>: Adjust.
5456         * name-lookup.h (cp_emit_debug_info_for_using): Declare.
5457         * pt.c (tsubst_decl) <USING_DECL case>: Use do_class_using_decl
5458         when tsubsting.
5459         (tsubst_expr): Use USING_DECL_SCOPE.
5460         * search.c (lookup_field_1): Use DECL_DEPENDENT_P.
5461         * semantics.c (finish_member_declaration): Likewise.
5462
5463 2005-06-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5464
5465         PR c++/19894
5466         * pt.c (tsubst): Reject pointer-to-member of type void.
5467
5468         PR c++/20563
5469         * parser.c (cp_parser_label_declaration): Deal with invalid/missing
5470         identifiers.
5471
5472 2005-06-07  Nathan Sidwell  <nathan@codesourcery.com>
5473
5474         * cp-tree.def (DEFAULT_ARG): Adjust documentation.
5475         * cp-tree.h (DEFARG_INSTANTIATIONS): New.
5476         (struct tree_default_arg): Add instantiations member.
5477         * parser.c (cp_parser_late_parsing_default_args): Adjust to use a
5478         VEC.
5479         * pt.c (tsubst_arg_types): Likewise.
5480
5481         * parser.c (cp_parser_late_parsing_default_args): Fix overeager
5482         assert in previous patch.
5483
5484 2005-06-06  Jakub Jelinek  <jakub@redhat.com>
5485
5486         * error.c (locate_error): Use gmsgid instead of msgid for argument
5487         name.
5488         (cp_error_at, cp_warning_at, cp_pedwarn_at): Likewise.
5489
5490 2005-06-06  Nathan Sidwell  <nathan@codesourcery.com>
5491
5492         PR 21903
5493         * cp-tree.def (DEFAULT_ARG): Document TREE_CHAIN use.
5494         * parser.c (cp_parser_late_parsing_default_args): Propagate parsed
5495         argument to any early instantiations.
5496         * pt.c (tsubst_arg_types): Chain early instantiation of default arg.
5497
5498         PR c++/20637
5499         * cp-tree.h (add_method): Add using_decl parameter.
5500         * class.c (add_method): Add using_decl parameter.  Adjust error
5501         messages.
5502         (handle_using_decl): Pass the using decl to add_method.
5503         (clone_function_decl): Adjust add_member calls.
5504         * decl2.c (check_classfn): Likewise.
5505         * method.c (lazily_declare_fn): Likewise.
5506         * semantics.c (finish_member_declaration): Likewise.
5507
5508         * method.c (synthesize_method): Use inform, not warning.
5509
5510 2005-06-06  Hans-Peter Nilsson  <hp@axis.se>
5511
5512         * config-lang.in (target_libs): Remove target-gperf.
5513
5514 2005-06-05  Mark Mitchell  <mark@codesourcery.com>
5515
5516         PR c++/21619
5517         * cp-tree.h (DECL_IS_BUILTIN_CONSTANT_P): New macro.
5518         * parser.c (cp_parser_postfix_expression): Allow non-constant
5519         expressions as arguments to __builtin_constant_p.
5520         * tree.c (builtin_valid_in_constant_expr_p): Use
5521         DECL_IS_BUILTIN_CONSTANT_P.
5522
5523 2005-06-03  Mark Mitchell  <mark@codesourcery.com>
5524
5525         PR c++/21853
5526         * typeck.c (casts_away_constness_r): Do not drop cv-qualifiers on
5527         the pointed-to type for a pointer-to-member.
5528
5529         PR c++/21336
5530         * cp-tree.h (grok_op_properties): Remove friendp parameter.
5531         * decl.c (grokfndecl): Adjust call.
5532         (grok_op_properties): Determine the class of which the function is
5533         a member by looking at its DECL_CONTEXT, not current_class_type.
5534         * pt.c (tsubst_decl): Adjust call to grok_op_properties.
5535
5536 2005-06-02  Nathan Sidwell  <nathan@codesourcery.com>
5537
5538         * method.c (synthesize_method): Add addtional arg to warning call.
5539
5540         PR c++/21280
5541         * Make-lang.in (method.o): Add diagnostic.h
5542         * decl.c (start_preparsed_function): Use decl's location for file
5543         info.
5544         * decl2.c (cp_finish_file): Set input_location before synthesizing
5545         a function.
5546         (mark_used): When deferring a synthesized function, save current
5547         location.  Do not set function's location when actually
5548         synthesizing it.
5549         * method.c: #include diagnostic.h.
5550         (synthesize_method): Set the functions source location.  Show
5551         needed location if errors are emitted.
5552
5553         * decl.c (start_decl): Simplify specialization handling. Remove
5554         unneeded CLASSTYPE_TEMPLATE_INSTANTIATION check.
5555         * mangle.c (discriminator_for_local_entity): Use VEC_index.
5556
5557         PR c++/20350
5558         * decl.c (duplicate_decls): Copy all of DECL_USE_TEMPLATE.
5559
5560         PR c++/21151
5561         * name-lookup.c (pushtag): Push local class even in a template.
5562
5563 2005-05-31  Nathan Sidwell  <nathan@codesourcery.com>
5564
5565         PR c++/21165
5566         * init.c (integral_constant_value): Check the type of the
5567         initializer, not the decl.
5568
5569 2005-05-30  Mark Mitchell  <mark@codesourcery.com>
5570
5571         PR c++/21784
5572         * name-lookup.c (do_nonmember_using_decl): Ignore builtin
5573         functions, even when the used name is not a function.
5574
5575 2005-05-30  Kazu Hirata  <kazu@cs.umass.edu>
5576
5577         * operators.def, optimize.c: Update copyright.
5578
5579 2005-05-28  Mark Mitchell  <mark@codesourcery.com>
5580
5581         PR c++/21210
5582         * call.c (standard_conversion): Permit conversions to complex
5583         types if conversion to the corresponding scalar type would be
5584         permitted.
5585
5586         PR c++/21340
5587         * method.c (implicitly_declare_fn): Clear processing_template_decl
5588         when generating implicit declaration.
5589
5590 2005-05-27  Mark Mitchell  <mark@codesourcery.com>
5591
5592         PR c++/21614
5593         * typeck.c (get_member_function_from_ptrfunc): Do not attempt
5594         conversions to base classes of incomplete types.
5595
5596 2005-05-27  Ian Lance Taylor  <ian@airs.com>
5597
5598         * semantics.c (add_stmt): Add C++ frontend specific version.
5599         * cp-tree.h (STMT_IS_FULL_EXPR_P): Define.
5600         (stmts_are_full_exprs_p): Declare.
5601
5602 2005-05-27  Roger Sayle  <roger@eyesopen.com>
5603             Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5604
5605         * cp-tree.def (UNARY_PLUS_EXPR): New C++ unary tree code.
5606         * parser.c (cp_parser_unary_expression): Use UNARY_PLUS_EXPR instead
5607         of CONVERT_EXPR.
5608         (cp_parser_unary_expression): Likewise.
5609         * typeck.c (build_unary_op): Likewise.
5610         * call.c (add_builtin_candidate, build_new_op): Likewise.
5611         * error.c (dump_expr): Likewise.
5612         * pt.c (tsubst_copy, tsubst_copy_and_build): Likewise.
5613         * decl.c (ambi_op_p, grok_op_properties): Likewise.
5614         * dump.c (dump_op): Likewise.
5615         * lex.c (init_operators): Likewise.
5616         * operators.def ("+"): Likewise.
5617         * cp-gimplify.c (cp_gimplify_expr): Handle UNARY_PLUS_EXPR like a
5618         conversion, if the result and argument types differ.
5619         * tree.c (fold_if_not_in_template): Fold UNARY_PLUS_EXPR much
5620         like a NOP_EXPR when !processing_template_decl.
5621
5622         * cxx-pretty-print.c (pp_cxx_cast_expression): Prototype.
5623         (pp_cxx_unary_expression): Handle new UNARY_PLUS_EXPR tree code.
5624
5625 2005-05-27  Nathan Sidwell  <nathan@codesourcery.com>
5626
5627         PR c++/21455
5628         * typeck.c (get_delta_difference): Cope with incomplete but equal
5629         classes.  Reorder if.
5630
5631         PR c++/21681
5632         * parser.c (cp_parser_late_parsing_for_member): Disable access
5633         checking for template functions.
5634
5635 2005-05-26  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5636
5637         PR c++/21768
5638         * pt.c (redeclare_class_template): Change error message according
5639         to coding conventions.
5640
5641 2005-05-26  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5642
5643         * call.c (build_op_delete_call): Fix quoting in error message.
5644
5645 2005-05-25  Richard Henderson  <rth@redhat.com>
5646
5647         PR libgcj/21692
5648         * cp-tree.h (make_alias_for): Declare.
5649         * decl2.c (build_java_method_aliases): New.
5650         (cp_finish_file): Call it.
5651         * method.c (make_alias_for): Split out from ...
5652         (make_alias_for_thunk): ... here.
5653
5654 2005-05-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5655
5656         PR c++/21686
5657         * semantics.c (finish_id_expression): Fix quoting in error message.
5658
5659 2005-05-25  DJ Delorie  <dj@redhat.com>
5660
5661         * decl.c (duplicate_decls): Move warning control from if() to
5662         warning(OPT_*).
5663         * name-lookup.c (parse_using_directive): Likewise.
5664         * parser.c (cp_parser_elaborated_type_specifier): Likewise.
5665         (cp_parser_init_declarator): Likewise.
5666         * tree.c (handle_com_interface_attribute): Likewise.
5667
5668 2005-05-24  Ziemowit Laski  <zlaski@apple.com>
5669
5670         * class.c (layout_class_type): Do not issue C++ ABI warnings
5671         for ObjC structs.
5672         * decl.c (objc_mark_locals_volatile): Streamline by calling
5673         objc_volatilize_decl().
5674         * parser.c (cp_parser_objc_message_expression): Allow simple
5675         type specifiers (instead of merely type names) as message
5676         receivers.
5677         * pt.c (template_args_equal): Do not call objc_comptypes().
5678         * typeck.c (composite_pointer_type): If both pointers are
5679         ObjC-esque, arbitrarily choose the first; do not call
5680         objc_comptypes().
5681         (comptypes): Do not call objc_comptypes().
5682         (convert_for_assignment): Call objc_compare_types().
5683         (comp_ptr_ttypes_real): Call objc_type_quals_match() before
5684         concluding that types do not match.
5685
5686 2005-05-24  Andrew Pinski  <pinskia@physics.uc.edu>
5687
5688         PR C++/21645
5689         * optimize.c (update_cloned_parm): Copy the TYPE also from the
5690         original one.
5691
5692 2005-05-19  Jakub Jelinek  <jakub@redhat.com>
5693
5694         PR c++/21495
5695         * decl.c (grokdeclarator): Fix "storage class specified for"
5696         error reporting.
5697
5698 2005-05-19  Kazu Hirata  <kazu@cs.umass.edu>
5699
5700         * parser.c: Fix comment typos.
5701
5702 2005-05-18  Geoffrey Keating  <geoffk@apple.com>
5703
5704         * Make-lang.in (cc1plus-dummy): New.
5705         (cc1plus-checksum.c): New.
5706         (cc1plus-checksum.o): New.
5707         (cc1plus): Add cc1plus-checksum.o.
5708
5709 2005-05-17  H.J. Lu  <hongjiu.lu@intel.com>
5710
5711         PR C++/19664
5712         * decl2.c (determine_visibility): Don't set visibility to
5713         hidden if it has been set explicitly by user.
5714
5715 2005-05-17  Ziemowit Laski  <zlaski@apple.com>
5716             Mike Stump  <mrs@apple.com>
5717
5718         Yet more Objective-C++...
5719
5720         * cp-objcp-common.h (cxx_get_alias_set): Move from
5721         here...
5722         (cxx_warn_unused_global_decl): Likewise.
5723         (cp_expr_size): Likewise.
5724         (cp_tree_size): Likewise.
5725         (cp_var_mod_type_p): Likewise.
5726         (cxx_initialize_diagnostics): Likewise.
5727         (cxx_types_compatible_p): Likewise.
5728         * cp-tree.h: to here.
5729         (do_poplevel): Add.
5730         * lex.c (D_OBJC): Add.
5731         (init_reswords): Add.
5732         * Make-lang.in (cp/pt.o): Add cp/cp-objcp-common.h.
5733         * parser.c: Add c-common.h include.
5734         * pt.c: Add c-common.h and cp-objcp-common.h includes.
5735         (template_args_equal): Use objc_comptypes as well.
5736         (tsubst_copy_and_build): Use objcp_tsubst_copy_and_build as well.
5737         * semantics.c (do_poplevel): Remove static.
5738
5739         * decl.c (objc_mark_locals_volatile): Don't change decls that are
5740         already ok.
5741         * decl2.c (generate_ctor_or_dtor_function): Add code to initialize
5742         Objective C++ early enough.
5743         * lex.c (struct resword reswords): Add Objective-C++ support.
5744         * parser.c (cp_lexer_get_preprocessor_token): Add Objective-C++.
5745         (cp_parser_objc_message_receiver): Add.
5746         (cp_parser_objc_message_args): Likewise.
5747         (cp_parser_objc_message_expression): Likewise.
5748         (cp_parser_objc_encode_expression): Likewise.
5749         (cp_parser_objc_defs_expression): Likewise.
5750         (cp_parser_objc_protocol_expression): Likewise.
5751         (cp_parser_objc_selector_expression): Likewise.
5752         (cp_parser_objc_expression): Likewise.
5753         (cp_parser_objc_visibility_spec): Likewise.
5754         (cp_parser_objc_method_type): Likewise.
5755         (cp_parser_objc_protocol_qualifiers): Likewise.
5756         (cp_parser_objc_typename): Likewise.
5757         (cp_parser_objc_selector_p): Likewise.
5758         (cp_parser_objc_selector): Likewise.
5759         (cp_parser_objc_method_keyword_params): Likewise.
5760         (cp_parser_objc_method_tail_params_opt): Likewise.
5761         (cp_parser_objc_interstitial_code): Likewise.
5762         (cp_parser_objc_method_signature): Likewise.
5763         (cp_parser_objc_method_prototype_list): Likewise.
5764         (cp_parser_objc_method_definition_list): Likewise.
5765         (cp_parser_objc_class_ivars): Likewise.
5766         (cp_parser_objc_identifier_list): Likewise.
5767         (cp_parser_objc_alias_declaration): Likewise.
5768         (cp_parser_objc_class_declaration): Likewise.
5769         (cp_parser_objc_protocol_declaration): Likewise.
5770         (cp_parser_objc_protocol_refs_opt): Likewise.
5771         (cp_parser_objc_superclass_or_category): Likewise.
5772         (cp_parser_objc_class_interface): Likewise.
5773         (cp_parser_objc_class_implementation): Likewise.
5774         (cp_parser_objc_end_implementation): Likewise.
5775         (cp_parser_objc_declaration): Likewise.
5776         (cp_parser_objc_try_catch_finally_statement): Likewise.
5777         (cp_parser_objc_synchronized_statement): Likewise.
5778         (cp_parser_objc_throw_statement): Likewise.
5779         (cp_parser_objc_statement): Likewise.
5780         (cp_parser_primary_expression): Add Objective-C++.
5781         (cp_parser_statement): Likewise.
5782         (cp_parser_declaration): Likewise.
5783         (cp_parser_simple_type_specifier): Likewise.
5784         (cp_parser_type_name): Likewise.
5785         (cp_parser_parameter_declaration_list): Likewise.
5786         (cp_parser_member_declaration) Likewise.
5787         * tree.c: Include debug.h.
5788         * typeck.c (composite_pointer_type): Add Objective-C++ support.
5789         (finish_class_member_access_expr): Likewise.
5790         (build_function_call): Allow objc to rewrite FUNCTION_DECLs.
5791         (build_modify_expr): Allow objc to generate write barriers.
5792
5793         * Make-lang.in (cp/tree.o): Add debug.h.
5794         * tree.c (lvalue_p_1, case CONST_DECL): Add.
5795
5796 2005-05-18  Jan Hubicka  <jh@suse.cz>
5797
5798         * method.c: Include tree-pass.h
5799         (use_thunk): Lower body before expanding.
5800
5801 2005-05-17  Jakub Jelinek  <jakub@redhat.com>
5802
5803         PR c++/21454
5804         * decl.c (maybe_deduce_size_from_array_init): Call
5805         cp_apply_type_quals_to_decl after completing array type.
5806
5807 2005-05-16  Richard Henderson  <rth@redhat.com>
5808
5809         * decl.c (build_library_fn_1): Move setting TREE_NOTHROW ...
5810         (build_library_fn): ... here.
5811
5812 2005-05-12  Ian Lance Taylor  <ian@airs.com>
5813
5814         * cp-tree.h (cp_stmt_codes): Don't define.
5815         (statement_code_p): Declare.
5816         (STATEMENT_CODE_P): Define.
5817         * lex.c (statement_code_p): Define.
5818         (cxx_init): Use actual codes in stmt_codes initializer, not
5819         cp_stmt_codes macro.  Initialize statement_code_p directly, rather
5820         than using INIT_STATEMENT_CODES.
5821
5822 2005-05-09  Mark Mitchell  <mark@codesourcery.com>
5823
5824         * typeck.c (build_unary_op): Do not resort to address arithmetic
5825         when taking the address of a COMPONENT_REF.
5826
5827 2005-05-08  Kazu Hirata  <kazu@cs.umass.edu>
5828
5829         * class.c (vtbl_init_data_s): Change the type of fns to
5830         VEC(tree,gc)*.
5831         (build_vtbl_initializer, add_vcall_offset, add_vcall_offset):
5832         Use VEC instead of VARRAY.
5833
5834 2005-05-07  Richard Sandiford  <rsandifo@redhat.com>
5835
5836         * mangle.c: Remove a reference to the MIPS -mint64 option.
5837
5838 2005-05-07  Kazu Hirata  <kazu@cs.umass.edu>
5839
5840         * decl.c (wrapup_globals_for_namespace): Use VEC instead of
5841         VARRAY.
5842         * name-lookup.c (add_decl_to_level, begin_scope): Likewise.
5843         * name-lookup.h (cp_binding_level): Change the type of
5844         static_decls to VEC(tree,gc)*.
5845
5846         * mangle.c (globals): Change the type of substitutions to
5847         VEC(tree,gc)*.
5848         (dump_substitution_candidates, add_substitution,
5849         find_substitution, finish_mangling, init_mangle): Use VEC
5850         instead of VARRAY.
5851
5852 2005-05-06  Kazu Hirata  <kazu@cs.umass.edu>
5853
5854         * decl2.c (spew_debug): Remove.
5855
5856         * decl2.c (ssdf_decls, start_static_storage_duration_function,
5857         generate_ctor_or_dtor_function): Use VEC instead of VARRAY.
5858
5859         * decl2.c (pending_statics, note_vague_linkage_var,
5860         cp_finish_file): Use VEC instead of VARRAY.
5861         (pending_statics_used): Remove.
5862
5863 2005-05-05  Kazu Hirata  <kazu@cs.umass.edu>
5864
5865         * decl2.c (deferred_fns, note_vague_linkage_fn,
5866         cp_finish_file): Use VEC instead of VARRAY.
5867
5868 2005-05-05  Mark Mitchell  <mark@codesourcery.com>
5869
5870         PR c++/21352
5871         * pt.c (build_non_dependent_expr): Use is_overloaded_fn.
5872
5873 2005-05-05  Kazu Hirata  <kazu@cs.umass.edu>
5874
5875         * pt.c: Fix a comment typo.
5876
5877 2005-05-04  Kazu Hirata  <kazu@cs.umass.edu>
5878
5879         * cp-tree.h (language_function): Change the type of
5880         x_local_names to VEC.
5881         * decl.c (push_local_name): Adjust uses of local_names.
5882
5883 2005-05-03  Kazu Hirata  <kazu@cs.umass.edu>
5884
5885         * friend.c, lex.c, mangle.c, repo.c: Update copyright.
5886
5887 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
5888
5889         * class.c (local_classes, init_class_processing): Use VEC
5890         instead of VARRAY.
5891         * cp-tree.h (local_classes): Likewise.
5892         * mangle.c (discriminator_for_local_entity): Likewise.
5893         * name-lookup.c (pushtag): Likewise.
5894
5895         * class.c (current_lang_depth, push_lang_context,
5896         pop_lang_context): Use VEC instead of VARRAY.
5897         * cp-tree.h (saved_scope): Use VEC for lang_base instead of
5898         VARRAY.
5899         * name-lookup.c (push_to_top_level): Use VEC instead of
5900         VARRAY.
5901
5902 2005-05-02  Paolo Bonzini  <bonzini@gnu.org>
5903
5904         * semantics.c (finish_call_expr): Call resolve_overloaded_builtin
5905         for BUILT_IN_MD built-ins.
5906
5907 2005-05-02  Michael Matz  <matz@suse.de>
5908
5909         PR c++/19542
5910         * cp-tree.h (cp_tree_index): Remove CPTI_NULL, to be defined in C
5911         common frontend.
5912         (null_node): Remove.
5913         * lex.c (cxx_init): Move null_node initialisation to C common frontend.
5914
5915 2005-04-25  Ian Lance Taylor  <ian@airs.com>
5916
5917         * cp-tree.def: Add EXPR_STMT.
5918         * cp-tree.h (cp_stmt_codes): Add EXPR_STMT.
5919         (EXPR_STMT_EXPR): Define.
5920         * cp-gimplify.c: Include "flags.h".
5921         (gimplify_expr_stmt): New static function.
5922         (cp_gimplify_expr): Handle EXPR_STMT.
5923         * cxx-pretty-print.c (pp_cxx_statement): Use pp_cxx_expression
5924         rather than pp_expression.
5925         (pp_cxx_statement): Handle EXPR_STMT.
5926         * dump.c (cp_dump_tree): Handle EXPR_STMT.
5927         * lex.c (cxx_init): Don't use c_common_stmt_codes in stmt_codes
5928         initializer.
5929
5930 2005-04-25  Andrew Pinski  <pinskia@physics.uc.edu>
5931
5932         PR C++/21188
5933         * rtti.c (ifnonnull): Cast the zero comparison operand
5934         to the correct type.
5935
5936 2005-04-24  Jakub Jelinek  <jakub@redhat.com>
5937
5938         PR middle-end/20991
5939         * class.c: Include cgraph.h.
5940         (cp_fold_obj_type_ref): Set node->local.vtable_method.
5941         * Make-lang.in (cgraph.o): Depend on $(CGRAPH_H).
5942
5943 2005-04-12  Markus F.X.J. Oberhumer  <markus@oberhumer.com>
5944
5945         * mangle.c (write_builtin_type): Handle integer types which are
5946         not one of the shared integer type nodes and emit a "vendor
5947         extended builtin type" with an encoding in the form of "u5int96".
5948
5949 2005-04-24  Ian Lance Taylor  <ian@airs.com>
5950
5951         * cp-tree.def (USING_STMT): Change class to tcc_statement.
5952         (TRY_BLOCK, EH_SPEC_BLOCK, HANDLER, CLEANUP_STMT): Likewise.
5953         (IF_STMT, FOR_STMT, WHILE_STMT, DO_STMT): Likewise.
5954         (BREAK_STMT, CONTINUE_STMT, SWITCH_STMT): Likewise.
5955
5956 2005-04-23  DJ Delorie  <dj@redhat.com>
5957
5958         * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, friend.c,
5959         init.c, lex.c, mangle.c, method.c, name-lookup.c, parser.c,
5960         repo.c, rtti.c, tree.c, typeck.c, typeck2.c: Adjust warning()
5961         callers.
5962
5963 2005-04-22  Per Bothner  <per@bothner.com>
5964
5965         * decl.c (make_rtl_for_nonlocal_decl): Don't try get_fileinfo if
5966         input_filename is NULL, as it is for (say) __PRETTY_FUNCTION__.
5967
5968 2005-04-22  Alexandre Oliva  <aoliva@redhat.com>
5969
5970         PR c++/21087
5971         * name-lookup.c (push_overloaded_decl): Do not overload with
5972         non-duplicate anticipated built-in.
5973
5974 2005-04-21  Kazu Hirata  <kazu@cs.umass.edu>
5975
5976         * cp-tree.h (THROW_NAME, AUTO_VTABLE_NAME, AUTO_TEMP_FORMAT,
5977         VTABLE_BASE, VTABLE_NAME_PREFIX, STATIC_NAME_FORMAT): Remove.
5978
5979 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
5980
5981         * cp-tree.h: Adjust for new VEC API.
5982         Define VEC(tree_pair_s,gc).
5983         (struct save_scope): Adjust.
5984         (struct lang_type_class): Adjust.
5985         (unemitted_tinfo_decls): Adjust.
5986         * class.c (add_method, resort_type_method_vec,
5987         finish_struct_methods, struct find_final_overrider_data,
5988         dfs_find_final_overrider_pre, find_final_overrider,
5989         get_vcall_index, warn_hidden, walk_subobject_offsets,
5990         check_methods, fixup_inline_methods, end_of_class,
5991         warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer,
5992         add_vcall_offset): Adjust.
5993         * decl.c (xref_basetypes, finish_method): Adjust.
5994         * decl2.c (check_classfn): Adjust.
5995         * init.c (sort_mem_initializers, push_base_cleanups): Adjust.
5996         * method.c (do_build_copy_constructor): Adjust.
5997         * name-lookup.c (new_class_binding, store_binding,
5998         store_bindings, store_class_bindings): Adjust.
5999         * name-lookup.h: Define VEC(cxx_saved_binding,gc),
6000         VEC(cp_class_binding,gc).
6001         (struct cp_binding_level): Adjust.
6002         * parser.c: Define VEC(cp_token_position,heap).
6003         (struct cp_lexer): Adjust.
6004         (cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy,
6005         cp_lexer_save_tokens): Adjust.
6006         * pt.c (retrieve_specialization,
6007         check_explicit_specialization): Adjust.
6008         * rtti.c (unemitted_tinfo_decls): Adjust.
6009         (init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init,
6010         get_pseudo_ti_desc): Adjust.
6011         * search.c (dfs_access_in_type, lookup_conversion_operator,
6012         lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible,
6013         dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust.
6014         * semantics.c: Define VEC(deferred_access,gc).
6015         (push_deferring_access_checks): Adjust.
6016         * typeck2.c (abstract_virtuals_error): Adjust.
6017
6018 2005-04-20  Ian Lance Taylor  <ian@airs.com>
6019
6020         * cp-tree.def: Add STMT_EXPR.
6021         * cp-tree.h (STMT_EXPR_NO_SCOPE): Define.
6022         (STMT_EXPR_STMT): Define.
6023         * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
6024         STMT_EXPR.
6025         (pp_cxx_expression): Likewise.
6026         (pp_cxx_statement): Call pp_cxx_statement, not pp_statement.
6027         * dump.c (cp_dump_tree): Handle STMT_EXPR.
6028
6029 2005-04-18  Kazu Hirata  <kazu@cs.umass.edu>
6030
6031         * decl.c (expand_static_init): Call build2 and build3 instead
6032         of build.
6033
6034         * cp-tree.h (VPTR_NAME, VPTR_NAME_P): Remove.
6035
6036 2005-04-17  Ian Lance Taylor  <ian@airs.com>
6037
6038         * cp-tree.def: Add SIZEOF_EXPR, ARROW_EXPR and ALIGNOF_EXPR.
6039         * cxx-pretty-print.c (pp_cxx_postfix_expression): Handle
6040         ARROW_EXPR.
6041         (pp_cxx_unary_expression): Handle SIZEOF_EXPR and ALIGNOF_EXPR.
6042         (pp_cxx_expression): Handle ARROW_EXPR, SIZEOF_EXPR, and
6043         ALIGNOF_EXPR.
6044         * typeck.c (cxx_sizeof_or_alignof_type): Update call to
6045         c_sizeof_or_alignof_type for change in parameter type.
6046
6047 2005-04-16  Mark Mitchell  <mark@codesourcery.com>
6048
6049         PR c++/21025
6050         * typeck.c (cxx_sizeof_or_alignof_type): Check whether the type to
6051         which sizeof/alignof is dependent, rather than just whether we are
6052         processing_template_decl.
6053
6054 2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>
6055
6056         * cp-tree.h (LOOKUP_GLOBAL): Remove.
6057         (LOOKUP_ONLYCONVERTING, DIRECT_BIND, LOOKUP_NO_CONVERSION,
6058         LOOKUP_DESTRUCTOR, LOOKUP_NO_TEMP_BIND, LOOKUP_PREFER_TYPES,
6059         LOOKUP_PREFER_NAMESPACES, LOOKUP_CONSTRUCTOR_CALLABLE): Adjust
6060         their values.
6061
6062 2005-04-15  Richard Henderson  <rth@redhat.com>
6063
6064         PR middle-end/14311
6065         * semantics.c (finish_call_expr): Call resolve_overloaded_builtin.
6066
6067 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
6068
6069         * cp-tree.h (lang_type_class): Remove redefined.  Move
6070         java_interface into where redefined was.  Increment the width
6071         of dummy.
6072         (TYPE_REDEFINED): Remove.
6073
6074 2005-04-14  Kazu Hirata  <kazu@cs.umass.edu>
6075
6076         * cp-tree.h (SET_TMPL_ARG, ENUM_TI_TEMPLATE, ENUM_TI_ARGS,
6077         CLASSTYPE_TEMPLATE_LEVEL): Remove.
6078
6079 2005-04-11  Mark Mitchell  <mark@codesourcery.com>
6080
6081         * decl2.c (determine_visibility): Don't use export_class_data.
6082         (import_export_decl): Honor TARGET_CXX_CLASS_DATA_ALWAYS_WEAK and
6083         TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY.
6084
6085 2005-04-09  Kazu Hirata  <kazu@cs.umass.edu>
6086
6087         * cp-tree.h (cxx_alignof): Remove.
6088
6089         * cp-tree.h (DECL_ARRAY_DELETE_OPERATOR_P): Remove.
6090
6091         * cp-tree.h (EXCEPTION_CLEANUP_NAME, B_SET, B_CLR, B_TST,
6092         CONV_STATIC_CAST): Remove.
6093
6094         * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Remove.
6095
6096         * cp-tree.h (VF_BINFO_VALUE, VF_BASETYPE_VALUE): Remove.
6097
6098         * cp-tree.h (cp_deprecated): Remove.
6099
6100 2005-04-08  Ian Lance Taylor  <ian@airs.com>
6101
6102         * cp-tree.def: Define FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT,
6103         CONTINUE_STMT, SWITCH_STMT.
6104         * cp-tree.h (cp_stmt_codes): Add FOR_STMT, WHILE_STMT, DO_STMT,
6105         BREAK_STMT, CONTINUE_STMT, SWITCH_STMT.
6106         (WHILE_COND, WHILE_BODY): Define.
6107         (DO_COND, DO_BODY): Define.
6108         (FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY): Define.
6109         (SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE): Define.
6110         * cp-gimplify.c (enum bc_t): Define.
6111         (struct cp_gimplify_ctx, ctxp): Define.
6112         (push_context, pop_context): New static functions.
6113         (begin_bc_block, finish_bc_block): New static functions.
6114         (build_bc_goto): New static function.
6115         (gimplify_cp_loop, gimplify_for_stmt): New static functions.
6116         (gimplify_while_stmt, gimplify_do_stmt): Likewise.
6117         (gimplify_switch_stmt): Likewise.
6118         (cp_gimplify_expr): Handle FOR_STMT, WHILE_STMT, DO_STMT,
6119         SWITCH_STMT, CONTINUE_STMT, BREAK_STMT.
6120         (cp_genericize): Call push_context and pop_context.
6121         * semantics.c (finish_break_stmt): Just call build_stmt
6122         (BREAK_STMT) rather than build_break_stmt.
6123         (finish_continue_stmt): Corresponding change.
6124         * decl.c (pop_switch): Update call to c_do_switch_warnings for new
6125         parameters.
6126         * cxx-pretty-print.c (pp_cxx_statement): Handle SWITCH_STMT,
6127         WHILE_STMT, DO_STMT, FOR_STMT, BREAK_STMT, CONTINUE_STMT.
6128         * dump.c (cp_dump_tree): Likewise.
6129
6130 2005-04-08  Mark Mitchell  <mark@codesourcery.com>
6131
6132         PR c++/20905
6133         * parser.c (cp_parser_type_specifier_seq): Add is_condition
6134         parameter.
6135         (cp_parser_new_type_id): Pass it.
6136         (cp_parser_condition): Likewise.
6137         (cp_parser_conversion_type_id): Likewise.
6138         (cp_parser_type_id): Likewise.
6139         (cp_parser_type_specifier_seq): In a condition, do not allow
6140         invalid type-specifier combinations.
6141         (cp_parser_exception_declaration): Adjust call to
6142         cp_parser_type_specifier_seq.
6143
6144         * cp-tree.def (TINST_LEVEL): Document TINST_IN_SYSTEM_HEADER_P.
6145         * cp-tree.h (struct tinst_level): Add in_system_header_p.
6146         (TINST_IN_SYSTEM_HEADER_P): New macro.
6147         (make_tinst_level): Remove.
6148         * pt.c (lookup_template_class): Preserve DECL_IN_SYSTEM_HEADER on
6149         the instantiated class.
6150         (push_tinst_level): Do not use make_tinst_level.  Set
6151         TINST_IN_SYSTEM_HEADER_P.
6152         (pop_tinst_level): Likewise.
6153         (instantiate_class_template): Set in_system_header.
6154         (instantiate_pending_templates): Likewise.
6155         * tree.c (make_tinst_level): Remove.
6156
6157 2005-04-06  Joseph S. Myers  <joseph@codesourcery.com>
6158
6159         * decl.c (start_decl): Apply pending #pragma weak regardless of
6160         scope.
6161
6162 2005-04-06  Mark Mitchell  <mark@codesourcery.com>
6163
6164         PR c++/20212
6165         * pt.c (regenerate_decl_from_template): Copy attributes for
6166         parameters from the pattern to the instantiation.
6167
6168 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
6169
6170         PR c++/20734
6171         * cp-tree.def (OFFSET_REF): Correct comments.
6172         * init.c (build_offset_ref): Remove misleading comment.
6173         * typeck.c (build_unary_op): Handle pointer-to-member creation
6174         here, rather than ...
6175         (unary_complex_lvalue): ... here.
6176
6177 2005-04-06  Jason Merrill  <jason@redhat.com>
6178
6179         PR c++/19312
6180         * tree.c (stabilize_init): Don't bother trying to stabilize
6181         something with no side-effects.
6182
6183 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
6184
6185         PR c++/20763
6186         * decl.c (grokdeclarator): Correct attribute handling.
6187
6188 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
6189
6190         PR c++/19159
6191         * decl2.c (import_export_decl): Use non-COMDAT external linkage
6192         for virtual tables, typeinfo, etc. that will be emitted in only
6193         one translation unit on systems without weak symbols.
6194
6195 2005-04-04  Mark Mitchell  <mark@codesourcery.com>
6196
6197         PR c++/20679
6198         * parser.c (cp_parser_template_name): Fix thinko.
6199
6200 2005-04-04  Nathan Sidwell  <nathan@codesourcery.com>
6201
6202         PR c++/20746
6203         * method.c (use_thunk): Protect covariant pointer return
6204         adjustments from NULL pointers.
6205
6206 2005-04-04  Jan Hubicka  <jh@suse.cz>
6207
6208         * decl2.c (finish_objects): Revert my previous patch.
6209         (cp_finish_file): Likewise.
6210
6211 2005-04-03  Kazu Hirata  <kazu@cs.umass.edu>
6212
6213         * pt.c: Fix comment typos.
6214
6215 2005-04-03  Nathan Sidwell  <nathan@codesourcery.com>
6216
6217         PR c++/20723
6218         * pt.c (more_specialized_fn): Member functions are unordered wrt
6219         non-members.  Conversion operators are unordered wrt other
6220         functions.
6221
6222 2005-04-01  Nathan Sidwell  <nathan@codesourcery.com>
6223
6224         * call.c (add_template_candidates_real): Remove length parameter
6225         from fn_type_unification call.
6226         * class.c (resolve_address_of_overloaded_function): Likewise
6227         * cp-tree.h (fn_type_unification): Remove length parameter.
6228         * pt.c (get_bindings_overload): Remove.
6229         (get_bindings_real): Rename to ...
6230         (get_bindings): ... here.  Remove length and strict
6231         parameters. Change return type flag to boolean.  Remove original
6232         forwarding function.
6233         (determine_specialization): Adjust get_bindings call.
6234         (fn_type_unification): Remove length parameter.  Adjust.
6235         (type_unification_real): Remove length parameter.  Adjust.
6236         (resolve_overloaded_unification): Adjust get_bindings call.
6237         (try_one_overload): Simplify confusing cascaded if control flow.
6238         (unify): Remove length paramter from type_unification_real call.
6239         (most_specialized_instantiation): Adjust get_bindings calls.
6240         (most_specialized): Likewise.
6241
6242 2005-03-31  Nathan Sidwell  <nathan@codesourcery.com>
6243
6244         PR c++/19203, implement DR 214
6245         * call.c (joust): Use more_specialized_fn.
6246         * cp-tree.h (DEDUCE_ORDER): Remove.
6247         (more_specialized): Replace with ...
6248         (more_specialized_fn): ... this.
6249         * pt.c (maybe_adjust_types_for_deduction): Remove DEDUCE_ORDER
6250         case.
6251         (type_unification_real): Remove DEDUCE_ORDER case.
6252         (more_specialized): Replace with ...
6253         (more_specialized_fn): ... this.  Implement DR 214.
6254         (most_specialized_instantiation): Use get_bindings_real directly.
6255
6256 2005-03-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6257
6258         PR c++/18644
6259         * call.c (build_new_op): Remove check for -Wsynth.
6260
6261 2005-03-31  Jan Hubicka  <jh@suse.cz>
6262
6263         * decl2.c (finish_objects): Mark ctor as needed.
6264         (cp_finish_file): Output variables only in nonunit-at-a-time.
6265
6266 2005-03-29  Richard Henderson  <rth@redhat.com>
6267
6268         PR c/20519
6269         * decl.c (cp_complete_array_type): Rename from complete_array_type.
6270         Use the new complete_array_type in c-common.c.  Update all callers.
6271         * cp-tree.h (cp_complete_array_type): Update to match.
6272
6273 2005-03-24  Geoffrey Keating  <geoffk@apple.com>
6274
6275         * typeck.c (build_static_cast_1): Allow scalar_cast between
6276         any integral, floating, or enumeration type.
6277
6278 2005-03-24  Steven Bosscher  <stevenb@suse.de>
6279
6280         * typeck.c (comptypes): First determine if the types are compatible
6281         from a target-independent point of view.  Check target attributes
6282         last.
6283
6284         * class.c (build_base_path):
6285         (build_vbase_offset_vtbl_entries):
6286         (add_vcall_offset): Replace fold (buildN (...)) with fold_buildN.
6287         * error.c (dump_expr): Likewise.
6288         * init.c (build_zero_init, expand_cleanup_for_base,
6289         build_vec_delete_1): Likewise.
6290         * mangle.c (write_integer_cst): Likewise.
6291         * method.c (thunk_adjust): Likewise.
6292         * pt.c (convert_nontype_argument, tsubst, unify): Likewise.
6293         * tree.c (cxx_print_statistics, array_type_nelts_total): Likewise.
6294         * typeck.c (build_ptrmemfunc_access_expr,
6295         (get_member_function_from_ptrfunc): Likewise.
6296
6297 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
6298
6299         * cp-objcp-common.h (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.
6300
6301 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
6302
6303         * cp-tree.h (perform_integral_promotions): Remove.
6304         (default_conversion): Add.
6305
6306 2005-03-22  Mark Mitchell  <mark@codesourcery.com>
6307
6308         * parser.c (cp_parser_warn_min_max): New function.
6309         (cp_parser_binary_expression): Use it.
6310         (cp_parser_assignment_operator_opt): Likewise.
6311         (cp_parser_operator): Likewise.
6312
6313 2005-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6314
6315         PR c++/19980
6316         * decl.c (start_preparsed_function): Robustify.
6317
6318 2005-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6319
6320         PR c++/20499
6321         * parser.c (cp_parser_class_head): Return NULL_TREE when
6322         encountering a redefinition.
6323
6324 2005-03-22  Nathan Sidwell  <nathan@codesourcery.com>
6325
6326         PR c++/20465
6327         PR c++/20381
6328         * typeck.c (build_ptrmemfunc): Allow OFFSET_REF when processing a
6329         template.
6330
6331 2005-03-21  Paolo Carlini  <pcarlini@suse.de>
6332
6333         PR c++/20461
6334         PR c++/20536
6335         * init.c (emit_mem_initializers): Don't crash on undefined
6336         types.
6337
6338 2005-03-21  Paolo Carlini  <pcarlini@suse.de>
6339
6340         PR c++/20147
6341         * semantics.c (finish_stmt_expr_expr): Return immediately
6342         if error_operand_p (expr).
6343
6344 2005-03-21  Joseph S. Myers  <joseph@codesourcery.com>
6345
6346         * cp-tree.h (lvalue_or_else, lvalue_p): New.
6347         * typeck.c (lvalue_or_else): New.  Call lvalue_error.
6348
6349 2005-03-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6350
6351         PR c++/20240
6352         * decl.c (decls_match): Compare context of VAR_DECL.
6353
6354 2005-03-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6355
6356         PR c++/20333
6357         * parser.c (cp_parser_postfix_expression) <case RID_TYPENAME>:
6358         Check the return value of cp_parser_nested_name_specifier.
6359
6360 2005-03-18  Dale Johannesen <dalej@apple.com>
6361
6362         * cp/tree.c (cp_tree_equal):  Handle SSA_NAME.
6363
6364 2005-03-18  Paolo Carlini  <pcarlini@suse.de>
6365
6366         PR c++/20463
6367         * parser.c (cp_parser_diagnose_invalid_type_name):
6368         Check TYPE_BINFO (current_class_type) before attempting
6369         to emit inform messages.
6370
6371 2005-03-17  Paolo Carlini  <pcarlini@suse.de>
6372
6373         PR c++/19966
6374         * cp-tree.h (grok_op_properties): Change return type to void.
6375         * decl.c (grok_op_properties): Return early - don't check the
6376         arity - in case of a static member or an operator that cannot
6377         be non-member; tidy a bit.
6378
6379 2005-03-17  Nathan Sidwell  <nathan@codesourcery.com>
6380
6381         PR c++/20186
6382         * pt.c (contains_dependent_cast_p): Remove.
6383         (fold_non_dependent_expr): Don't use it.
6384         (value_dependent_expression_p): Use a switch statement.
6385         reference_exprs can be dependent.
6386
6387 2005-03-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6388
6389         PR c++/4403
6390         PR c++/9783, DR433
6391         * name-lookup.c (pushtag): Skip template parameter scope when
6392         scope is ts_global.  Don't push tag into template parameter
6393         scope.
6394         * pt.c (instantiate_class_template): Reorder friend class
6395         template substitution to handle non-dependent friend class
6396         that hasn't been previously declared.
6397
6398 2005-03-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6399
6400         Friend class name lookup 5/n
6401         PR c++/1016
6402         * cp-tree.h (pushtag): Adjust declaration.
6403         * decl.c (lookup_and_check_tag): Call lookup_type_scope if
6404         lookup_name fails.
6405         (xref_tag): Adjust call to pushtag.  Make hidden class visible.
6406         (start_enum): Adjust call to pushtag.
6407         * name-lookup.c (ambiguous_decl): Ignore hidden names.
6408         (qualify_lookup): Change return type to bool.
6409         (hidden_name_p): New function.
6410         (lookup_namespace_name, unqualified_namespace_lookup,
6411         lookup_name_real): Use it.
6412         (lookup_type_scope): Update comments.
6413         (maybe_process_template_type_declaration): Change parameter name
6414         from globalize to is_friend.
6415         (pushtag): Change globalize parameter of type int to tag_scope.
6416         Hide name if introduced by friend declaration.
6417         * name-lookup.h (hidden_name_p): Add declaration.
6418         * parser.c (cp_parser_lookup_name): Don't deal with hidden name
6419         here.
6420         * pt.c (push_template_decl_real): Make hidden class template
6421         visible.
6422         (lookup_template_class, instantiate_class_template): Adjust call
6423         to pushtag.
6424         * semantics.c (begin_class_definition): Likewise.
6425         * rtti.c (init_rtti_processing, build_dynamic_cast_1,
6426         tinfo_base_init, emit_support_tinfos): Use ts_current instead of
6427         ts_global.
6428
6429 2005-03-13  Mark Mitchell  <mark@codesourcery.com>
6430
6431         PR c++/20157
6432         * pt.c (determine_specialization): Reject non-specializations.
6433
6434 2005-03-11  Per Bothner  <per@bothner.com>
6435
6436         * cp-tree.h (struct cp_declarator): New id_loc field.
6437         * cp/parser.c (cp_lexer_get_preprocessor_token): Set cp_token's
6438         location using c_lex_with_flags, instead of input_location.
6439         (cp_parser_direct_declarator): Set declarator's id_loc from
6440         cp_token's id_loc.
6441
6442 2005-03-10  Jakub Jelinek  <jakub@redhat.com>
6443
6444         PR c++/18384, c++/18327
6445         * decl.c (reshape_init_array): Use UHWI type for max_index_cst
6446         and index.  Convert max_index to size_type_node if it isn't
6447         host_integerp (, 1).
6448
6449 2005-03-09  Mark Mitchell  <mark@codesourcery.com>
6450
6451         PR c++/20208
6452         * pt.c (tsubst_decl): Apply array-to-pointer and
6453         function-to-pointer conversions to function arguments.
6454         (regenerate_decl_from_template): Likewise.
6455
6456 2005-03-09  Paolo Carlini  <pcarlini@suse.de>
6457
6458         PR c++/16859
6459         * decl.c (complete_array_type): In pedantic mode, return
6460         3 for an empty initializer list as the initializer for an
6461         array of unknown bound (8.5.1/4).
6462         (maybe_deduce_size_from_array_init): Fix final test to use
6463         the above.
6464
6465 2005-03-08  Nathan Sidwell  <nathan@codesourcery.com>
6466
6467         PR c++/20186
6468         * pt.c (contains_dependent_cast_p): New.
6469         (fold_non_dependent_expr): Call it.
6470
6471 2005-03-08  Mark Mitchell  <mark@codesourcery.com>
6472
6473         PR c++/20142
6474         * cp-tree.h (target_type): Remove.
6475         * decl.c (layout_var_decl): Remove #if 0'd code.
6476         (cp_finish_decl): Remove dead code.
6477         * init.c (build_vec_init): When determining whether or not the
6478         element type has an asignment operator, look through all array
6479         dimensions.
6480         * typeck.c (target_type): Remove.
6481
6482 2005-03-07  Mark Mitchell  <mark@codesourcery.com>
6483
6484         * class.c (finish_struct_1): Do not warn about non-virtual
6485         destructors in Java classes.
6486
6487 2005-03-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6488
6489         PR c++/19311
6490         * init.c (build_offset_ref): Don't build non-dependent SCOPE_REF.
6491         * pt.c (build_non_dependent_expr): Don't build NON_DEPENDENT_EXPR
6492         for OFFSET_TYPE.
6493         * typeck.c (build_x_unary_op): Don't build non-dependent SCOPE_REF.
6494         Also set PTRMEM_OK_P for NON_DEPENDENT_EXPR.
6495         (build_unary_op): Handle building ADDR_EXPR of OFFSET_REF inside
6496         template.
6497
6498 2005-03-02  Alexandre Oliva  <aoliva@redhat.com>
6499
6500         * name-lookup.c (push_overloaded_decl): Don't error if the new
6501         decl matches the old one.
6502         * decl.c (redeclaration_error_message): Likewise.
6503
6504 2005-03-01  Per Bothner  <per@bothner.com>
6505
6506         * decl.c (finish_function): Use SET_EXPR_LOCATION instead of
6507         unavailable annotate_with_file_line, if USE_MAPPED_LOCATION.
6508
6509 2005-03-01  Nathan Sidwell  <nathan@codesourcery.com>
6510
6511         PR c++/20232
6512         * class.c (update_vtable_entry_for_fn): Don't crash on invalid
6513         covariancy.
6514
6515         * cp-tree.g (THUNK_TARGET): Expand comment.
6516         * method.c (use_thunk): Make sure we also use the target, if that
6517         is a thunk.
6518
6519 2005-02-27  Jakub Jelinek  <jakub@redhat.com>
6520
6521         PR c++/20206
6522         * decl.c (cxx_comdat_group): Put thunks for
6523         TARGET_USE_LOCAL_THUNK_ALIAS_P (function) functions into the same
6524         comdat group as the thunk target.
6525
6526 2005-02-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6527
6528         * call.c, class.c, cp-tree.h, decl2.c, error.c, init.c, mangle.c,
6529         parser.c: Fix comment typo(s).
6530
6531 2005-02-24  Jakub Jelinek  <jakub@redhat.com>
6532
6533         PR c++/20175
6534         * decl.c (reshape_init): Don't warn about missing braces if STRING_CST
6535         initializes a char/wchar_t array.
6536
6537 2005-02-23  Mark Mitchell  <mark@codesourcery.com>
6538
6539         PR c++/19878
6540         * decl.c (grokvardecl): Set DECL_INTERFACE_KNOWN for declarations
6541         with internal linkage.
6542
6543 2005-02-23  Alexandre Oliva  <aoliva@redhat.com>
6544
6545         * decl.c (grokvardecl): Don't exempt anonymous types from having
6546         linkage for variables that have linkage other than "C".
6547
6548 2005-02-23  Kazu Hirata  <kazu@cs.umass.edu>
6549
6550         * cp-objcp-common.h, error.c: Update copyright.
6551
6552 2005-02-22  Mark Mitchell  <mark@codesourcery.com>
6553
6554         PR c++/20073
6555         * decl.c (start_decl_1): Don't clear TREE_READONLY.
6556         (cp_finish_decl): Likewise.
6557         (complete_vars): Call cp_apply_type_quals_to_decl.
6558         * typeck.c (cp_apply_type_quals): Avoid setting TREE_READONLY in
6559         cases where that's not valid.
6560
6561         PR c++/19991
6562         * init.c (integral_constant_value): Iterate if the value of a decl
6563         is itself a constant.
6564
6565         PR c++/20152
6566         * parser.c (cp_parser_class_head): Check for redefintions here.
6567         * semantics.c (begin_class_definition): Not here.
6568
6569         PR c++/20153
6570         * decl2.c (build_anon_union_vars): Add type parameter.
6571         (finish_anon_union): Pass it.
6572
6573         PR c++/20148
6574         * error.c (dump_expr): Do not print the body of a BIND_EXPR.
6575         Handle STATEMENT_LIST.
6576
6577         PR c++/19883
6578         * parser.c (cp_parser_direct_declarator): Always complain about
6579         non-constant array bounds when in a function scope.
6580         * semantics.c (finish_id_expression): Do not mark dependent names
6581         as non-constant.
6582
6583 2005-02-21  Douglas Gregor  <dgregor@cs.indiana.edu>
6584
6585         PR c++/19076
6586         PR c++/6628
6587         * cp-tree.h (cp_apply_type_quals_to_decl): Declared.
6588         * decl.c (grokdeclarator): Pedwarn about qualifying a function
6589         type.
6590         Add qualifiers when declaring a typedef of a function type.
6591         Member function pointers pick up the qualifiers of the typedef
6592         used to declare them.
6593         Don't complain about creating cv-qualified function types.
6594         Complain about qualified function typedefs that are used to
6595         declare non-static member functions or free functions.
6596         Use cp_apply_type_quals_to_decl.
6597         (start_preparsed_function): Use cp_apply_type_quals_to_decl.
6598         (grokclassfn): Use cp_apply_type_quals_to_decl.
6599         * error.c (dump_type_suffix): Print qualifiers for function
6600         types.
6601         * pt.c (tsubst_decl): Use cp_apply_type_quals_to_decl.
6602         (tsubst): When substituting a function type into a member
6603         pointer type, pass along the qualifiers.
6604         (unify): Unify member pointers to member function pointers.
6605         * tree.c (cp_build_qualified_type_real): Function types may be
6606         qualified. This includes restrict qualifiers.
6607         * typeck.c (cp_apply_type_quals_to_decl): New function to replace
6608         use of c_apply_type_quals_to_decl. Drops qualifiers that are being
6609         added to function types.
6610
6611 2005-02-20  Zack Weinberg  <zack@codesourcery.com>
6612
6613         PR 18785
6614         * cp-objcp-common.h (LANG_HOOKS_TO_TARGET_CHARSET): Set to
6615         c_common_to_target_charset.  Delete bogus comment.
6616
6617 2005-02-18  Richard Henderson  <rth@redhat.com>
6618
6619         PR libstdc++/10606
6620         * except.c (do_get_exception_ptr): New.
6621         (expand_start_catch_block): Use it.
6622
6623 2005-02-19  Jakub Jelinek  <jakub@redhat.com>
6624
6625         * decl.c (start_decl_1): Only check TYPE_NEEDS_CONSTRUCTING
6626         if type is not error_mark_node.
6627
6628 2005-01-20  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
6629
6630         PR c++/19508
6631         * decl2.c (grokfield): Do not apply attributes to template parameters
6632         as they are ignored by tsubst anyway.
6633
6634 2005-02-18  Jakub Jelinek  <jakub@redhat.com>
6635
6636         PR c++/19813
6637         * decl.c (start_decl_1): Clear TREE_READONLY flag if
6638         its type has TYPE_NEEDS_CONSTRUCTING.
6639         (complete_vars): Likewise.
6640
6641 2005-02-17  Alexandre Oliva  <aoliva@redhat.com>
6642
6643         PR c++/20028
6644         * class.c (finish_struct): Initialize TYPE_SIZE_UNIT of a
6645         template along with TYPE_SIZE.
6646
6647         PR c++/20022
6648         * semantics.c (perform_deferred_access_checks): Use
6649         get_deferred_access_checks to get the top of the stack.
6650
6651 2005-02-15  Alexandre Oliva  <aoliva@redhat.com>
6652
6653         PR c++/17788
6654         * class.c (add_implicitly_declared_members, check_field_decl)
6655         (check_field_decls, check_bases): Remove arguments, tests and
6656         assignments of cant_have_default_ctor-related variables.
6657
6658 2005-02-15  Alexandre Oliva  <aoliva@redhat.com>
6659
6660         * decl2.c (mark_used): Set the source location of the used decl to
6661         the current input location here...
6662         * method.c (synthesize_method): ... not here.  Set input_location
6663         from the decl instead.
6664
6665 2005-02-14  Nathan Sidwell  <nathan@codesourcery.com>
6666
6667         PR c++/19608
6668         * parser.c (cp_parser_late_parsing_for_member): Use
6669         current_function_decl as scope to push to and from.
6670
6671         PR c++/19884
6672         * pt.c (check_explicit_specialization): Make sure namespace
6673         binding lookup found an overloaded function.
6674         (lookup_template_function): Just assert FNS is an overloaded
6675         function.
6676
6677         PR c++/19895
6678         * decl.c (grokdeclarator): Check for error mark node in ptrmem
6679         construction.
6680
6681 2005-02-14  Alexandre Oliva  <aoliva@redhat.com>
6682
6683         PR c++/17816
6684         * decl.c (redeclaration_error_message): Report redefinition of
6685         pure virtual function.
6686
6687 2005-02-14  Nathan Sidwell  <nathan@codesourcery.com>
6688
6689         PR c++/19891
6690         * class.c (build_simple_base_path): Build the component_ref
6691         directly.
6692         (update_vtable_entry_for_fn): Walk the covariant's binfo chain
6693         rather than using lookup_base.
6694         * search.c (dfs_walk_once): Add non-recursive assert check.
6695         * typeck.c (build_class_member_access_expr): It is possible for
6696         the member type to be both const and volatile.
6697
6698 2005-02-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6699
6700         PR c++/14479
6701         PR c++/19487
6702         * pt.c (maybe_check_template_type): Remove.
6703         * cp-tree.h (maybe_check_template_type): Remove prototype.
6704         * name-lookup.c (maybe_process_template_type_declaration): Don't
6705         use maybe_check_template_type.
6706
6707 2005-02-11  Richard Henderson  <rth@redhat.com>
6708
6709         PR c++/19632
6710         * pt.c (get_mostly_instantiated_function_type): Save and restore
6711         flag_access_control instead of push/pop_access_scope.
6712
6713 2005-02-10  Mark Mitchell  <mark@codesourcery.com>
6714
6715         PR c++/19755
6716         * decl.c (reshape_init): Issue warnings about missing braces.
6717
6718 2005-02-11  Kazu Hirata  <kazu@cs.umass.edu>
6719
6720         * cp-tree.def, except.c, ptree.c: Update copyright.
6721
6722 2005-02-09  Mark Mitchell  <mark@codesourcery.com>
6723
6724         PR c++/19811
6725         * call.c (build_op_delete_call): Check COMPLETE_TYPE_P before
6726         attempting name lookup.
6727
6728         * parser.c (cp_parser_unqualified_id): Initialize type_decl.
6729
6730         PR c++/19787
6731         * call.c (initialize_reference): Robustify.
6732
6733         PR ++/19732
6734         * decl.c (grokdeclarator): Check for invalid use of destructor
6735         names.
6736
6737         PR c++/19762
6738         * parser.c (cp_parser_unqualified_id): Avoid creating destructor
6739         names with invalid types.
6740
6741         PR c++/19826
6742         * parser.c (cp_parser_direct_declarator): Allow type-dependent
6743         expressions as array bounds.
6744
6745         PR c++/19739
6746         * parser.c (cp_parser_attributes_list): Allow empty lists.
6747
6748 2005-02-08  Mark Mitchell  <mark@codesourcery.com>
6749
6750         PR c++/19733
6751         * class.c (add_method): Don't set TYPE_HAS_DESTRUCTOR.
6752         (check_bases): Give warnings about a base class with a
6753         non-virtual destructor, even if it is implicit.
6754         (finish_struct_bits): Don't copy TYPE_HAS_DESTRUCTOR.
6755         (maybe_warn_about_overly_private_class): Don't use
6756         TYPE_HAS_DESTRUCTOR.
6757         (finish_struct_methods): Don't set TYPE_HAS_DESTRUCTOR.
6758         (check_for_override): Give it external linkage.
6759         (add_implicitly_declared_members): Generate destructors lazily.
6760         (check_field_decls): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
6761         TYPE_HAS_DESTRUCTOR.
6762         (check_bases_and_members): Call check_methods before
6763         check_field_decls.
6764         (check_bases_and_members): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
6765         TYPE_HAS_DESTRUCTOR.
6766         (finish_struct_1): Do not use TYPE_HAS_DESTRUCTOR.
6767         * cp-tree.def (PSEUDO_DTOR_EXPR): Document.
6768         * cp-tree.h (TYPE_HAS_DESTRUCTOR): Remove.
6769         (lang_type_class): Add lazy_destructor.
6770         (CLASSTYPE_LAZY_DESTRUCTOR): New macro.
6771         (CLASSTYPE_DESTRUCTORS): Robustify.
6772         (TYPE_HAS_DESTRUCTOR): Remove.
6773         (check_for_override): Declare.
6774         (build_vbase_delete): Remove.
6775         * cvt.c (convert_to_void): Issue errors about pseudo-destructor
6776         expressions.
6777         * decl.c (cxx_maybe_build_cleanup): Remove dead code.
6778         * except.c (dtor_nothrow): Lazily create destructors if necessary.
6779         (build_throw): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
6780         * init.c (build_delete): Lazily create destructors, if necessary.
6781         (build_vbase_delete): Remove.
6782         * method.c (locate_dtor): Simplify.
6783         (implicitly_declare_fn): Add support for destructors.
6784         * parser.c (cp_parser_lookup_name): Lazily create destructors, if
6785         necessary.
6786         * pt.c (check_explicit_specialization): Don't use
6787         TYPE_HAS_DESTRUCTOR.
6788         (instantiate_class_template): Likewise.
6789         * ptree.c (cxx_print_type): Don't print TYPE_HAS_DESTRUCTOR.
6790         * rtti.c (emit_support_tinfos): Robustify.
6791         * search.c (lookup_fnfields_1): Lazily create destructors.
6792         * typeck.c (build_class_member_access_expr): Remove
6793         PSEUDO_DTOR_EXPR handling.
6794         (lookup_destructor): Likewise.
6795
6796 2005-02-08  Kazu Hirata  <kazu@cs.umass.edu>
6797
6798         * cxx-pretty-print.c, cxx-pretty-print.h, decl.h: Update
6799         copyright.
6800
6801 2005-02-07  Mark Mitchell  <mark@codesourcery.com>
6802
6803         * parser.c (cp_lexer_start_debugging): Avoid arithmetic operations
6804         on boolean variables.
6805         (cp_lexer_stop_debugging): Likewise.
6806
6807 2005-02-03  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
6808
6809         PR c++/17401
6810         * parser.c (cp_parser_pure_specifier): Emit a specific error
6811         message with an invalid pure specifier.
6812         * decl2.c (grok_function_init): Remove.
6813         (grokfield): An initializer for a method is a always a pure
6814         specifier.
6815
6816 2005-02-02  Matt Austern  <austern@apple.com>
6817
6818         PR c++/19628
6819         * cp-tree.h (builtin_valid_in_constant_expr_p): Declare.
6820         * parser.c (cp_parser_postfix_expression): Accept function call in
6821         constant expression if builtin_valid_in_constant_expr_p is true
6822         for that function.
6823         * pt.c (value_dependent_expression_p): Handle CALL_EXPRs properly.
6824         * semantics.c (finish_id_expression): Accept function call in constant
6825         expression if builtin_valid_in_constant_expr_p is true for that
6826         function.
6827         * tree.c (builtin_valid_in_constant_expr_p): New.
6828
6829 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6830
6831         PR c++/17413
6832         * pt.c (check_instantiated_args): Improve error message.
6833         Fix logic when to print its second part.
6834
6835 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6836
6837         * cp-tree.h (complete_type_or_else): Remove macro.
6838         (complete_type_or_diagnostic): Rename to complete_type_or_else
6839         and remove last argument.
6840         * typeck.c (complete_type_or_diagnostic): Rename to
6841         complete_type_or_else and remove last argument.
6842
6843 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6844
6845         * cp-tree.h (commonparms): Remove prototype.
6846         (convert_arguments): Likewise.
6847         (PFN_FROM_PTRMEMFUNC): Remove.
6848         * typeck.c (commonparms): Make static.
6849         (convert_arguments): Add prototype. Make static.
6850         (PFN_FROM_PTRMEMFUNC): Replace by pfn_from_ptrmemfunc.
6851
6852 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
6853
6854         * parser.c (cp_parser_primary_expression): Don't complain about
6855         floating-point literals in integral constant expressions when
6856         !pedantic.
6857
6858 2005-02-01  Alexandre Oliva  <aoliva@redhat.com>
6859
6860         * parser.c (cp_parser_template_id): Revert comment patch too.
6861
6862         PR c++/18757
6863         PR c++/19366
6864         PR c++/19499
6865         * parser.c (cp_parser_template_id): Revert 2004-12-09's patch.
6866         Issue an error when creating the template id.
6867         * pt.c (fn_type_unification): Return early if the explicit
6868         template arg list is an error_mark_node.
6869
6870 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
6871
6872         * decl.c (build_enumerator): Do not issue duplicate error messages
6873         about invalid enumeration constants.
6874         * parser.c (cp_parser_non_integral_constant_expression): Always
6875         set parser->non_integral_constant_expression_p.
6876         (cp_parser_primary_expression): Add cast_p parameter.  Issue
6877         errors about invalid uses of floating-point literals in
6878         cast-expressions.
6879         (cp_parser_postfix_expression): Add cast_p parameter.
6880         (cp_parser_open_square_expression): Pass it.
6881         (cp_parser_parenthesized_expression_list): Add cast_p parameter.
6882         (cp_parser_unary_expression): Likewise.
6883         (cp_parser_new_placement): Pass it.
6884         (cp_parser_direct_new_declarator): Likewise.
6885         (cp_parser_new_initializer): Likewise.
6886         (cp_parser_cast_expression): Add cast_p parameter.
6887         (cp_parser_binary_expression): Likewise.
6888         (cp_parser_question_colon_clause): Likewise.
6889         (cp_parser_assignment_expression): Likewise.
6890         (cp_parser_expression): Likewise.
6891         (cp_parser_constant_expression): If an integral constant
6892         expression is invalid, return error_mark_node.
6893         (cp_parser_expression_statement): Pass cast_p.
6894         (cp_parser_condition): Likewise.
6895         (cp_parser_iteration_statement): Likewise.
6896         (cp_parser_jump_statement): Likewise.
6897         (cp_parser_mem_initializer): Likewise.
6898         (cp_parser_template_argument): Likewise.
6899         (cp_parser_parameter_declaration): Likewise.
6900         (cp_parser_initializer): Likewise.
6901         (cp_parser_throw_expression): Likewise.
6902         (cp_parser_attribute_list): Likewise.
6903         (cp_parser_simple_cast_expression): Likewise.
6904         (cp_parser_functional_cast): Likewise.
6905         (cp_parser_late_parsing_default_args): Likewise.
6906         (cp_parser_sizeof_operand): Save/restore
6907         non_integral_constant_expression_p.
6908
6909 2005-01-31  Mike Stump  <mrs@apple.com>
6910
6911         * parser.c (cp_lexer_new_main): Get the first token, first, before
6912         doing anything.
6913
6914 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
6915
6916         * decl.c (start_decl): Add missing parentheses.
6917
6918 2005-01-30  Mark Mitchell  <mark@codesourcery.com>
6919
6920         PR c++/19555
6921         * cp-tree.h (DECL_USE_TEMPLATE): Expand documentation.
6922         * decl.c (duplicate_decls): Do not discard
6923         DECL_IMPLICIT_INSTANTIATION when merging declarations.
6924         (start_decl): Do not SET_DECL_TEMPLATE_SPECIALIZATION for
6925         variables that do not have DECL_USE_TEMPLATE.
6926
6927         PR c++/19395
6928         * decl.c (grokdeclarator): Refactor code so that qualified names
6929         are never allowed as the declarator in a typedef.
6930
6931         PR c++/19367
6932         * name-lookup.c (do_nonmember_using_decl): Avoid overloading
6933         builtin declarations.
6934
6935         PR c++/19457
6936         * call.c (convert_like_real): Inline call to
6937         dubious_conversion_warnings here.
6938         * cp-tree.h (dubious_conversion_warnings): Remove.
6939         * semantics.c (finish_unary_op_expr): Copy INTEGER_CSTs before
6940         setting TREE_NEGATED_INT.
6941         * typeck.c (dubious_conversion_warnings): Remove.
6942
6943         PR c++/19349
6944         * name-lookup.c (pushdecl_namespace_level): Avoid accessing free'd
6945         memory.
6946
6947 2005-01-28  Mark Mitchell  <mark@codesourcery.com>
6948
6949         PR c++/19253
6950         * parser.c (cp_parser_diagnose_invalid_type_name): Commit to
6951         tentative parses.
6952
6953         PR c++/19667
6954         * pt.c (redeclare_class_template): Robustify.
6955
6956 2005-01-27  Steven Bosscher  <stevenb@suse.de>
6957
6958         * decl.c (finish_case_label): Use SWITCH_STMT accessor macros
6959         instead of SWITCH_EXPR ones.
6960         * pt.c (tsubst_expr): Likewise.
6961         * semantics.c (begin_switch_stmt, finish_switch_cond,
6962         finish_switch_stmt): Likewise.
6963
6964 2005-01-26  J"orn Rennecke <joern.rennecke@st.com>
6965
6966         PR c++/18370
6967         * parser.c (cp_parser_initializer_clause): Initialize *non_constant_p.
6968
6969 2005-01-25  Andrew Pinski  <pinskia@physics.uc.edu>
6970
6971         * class.c (abort_fndecl_addr): New variable.
6972         (build_vtbl_initializer): If we have a pure virtual function
6973         share the abort function's address.
6974         Include gt-cp-class.h at the end.
6975         * config-lang.in (gtfiles): Add cp/class.c.
6976
6977 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6978
6979         * cxx-pretty-print.c (pp_cxx_statement): Add prototype. Make static.
6980         (pp_cxx_function_definition): Make static.
6981         * cxx-pretty-print.h (pp_cxx_statement): Remove prototype.
6982         (pp_cxx_function_definition): Likewise.
6983
6984 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6985
6986         * name-lookup.c (print_binding_level): Make static.
6987         (constructor_name_full): Make static inline.
6988         (current_decl_namespace): Make static.
6989         * name-lookup.h (constructor_name_full): Remove prototype.
6990         (print_binding_level): Likewise.
6991         (current_decl_namespace): Likewise.
6992
6993 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6994
6995         * decl.h (debug_bindings_indentation): Remove.
6996
6997 2005-01-23  Kazu Hirata  <kazu@cs.umass.edu>
6998
6999         * typeck.c: Fix a comment typo.
7000
7001 2005-01-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7002
7003         PR c++/19208
7004         * pt.c (fold_decl_constant_value): Always call fold_non_dependent_expr
7005         at least once.
7006         (tsubst): Use fold_decl_constant_value in place of a bare call to
7007         integral_constant_value.
7008
7009 2005-01-20  Kazu Hirata  <kazu@cs.umass.edu>
7010
7011         * typeck.c (more_qualified_p): Remove.
7012         * cp-tree.h: Remove the corresponding prototype.
7013
7014 2005-01-19  Matt Austern  <austern@apple.com>
7015
7016         * typeck.c (comptypes): Handle return code from objc_comptypes
7017         correctly.
7018
7019 2005-01-19  Kazu Hirata  <kazu@cs.umass.edu>
7020
7021         * cp-tree.h, name-lookup.h: Remove unused prototypes.
7022
7023 2005-01-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7024
7025         PR c++/19375
7026         * semantics.c (finish_id_expression): Disable access checking for
7027         already lookuped FIELD_DECL.
7028
7029 2005-01-18  Kazu Hirata  <kazu@cs.umass.edu>
7030
7031         * decl.c (delete_block): Remove.
7032         * cp-tree.h: Remove the corresponding prototype.
7033
7034         * decl.c (vtable_decl_p, vtype_decl_p, walk_globals_data,
7035         walk_vtables_r, walk_vtables, walk_globals_r, walk_globals):
7036         Remove.
7037         * cp-tree.h: Remove the corresponding prototypes.
7038
7039         * tree.c (count_functions, bound_pmf_p, cp_is_overload_p,
7040         cp_update_decl_after_saving, name_p): Remove.
7041         * cp-tree.h: Remove the corresponding prototypes.
7042
7043 2005-01-18  Andrew Pinski  <pinskia@physics.uc.edu>
7044
7045         PR c/19472
7046         * semantics.c (finish_asm_stmt): Strip nops off
7047         input memory operands.
7048
7049 2005-01-18  Kazu Hirata  <kazu@cs.umass.edu>
7050
7051         * Make-lang.in, call.c, cvt.c, init.c, rtti.c, tree.c,
7052         typeck2.c: Update copyright.
7053
7054 2005-01-16  Kazu Hirata  <kazu@cs.umass.edu>
7055
7056         * class.c (get_enclosing_class): Remove.
7057         * cp-tree.h: Remove the corresponding prototypes.
7058
7059         * cvt.c (convert_lvalue): Remove.
7060         * cp-tree.h: Remove the corresponding prototype.
7061
7062         * pt.c (tinst_for_decl): Remove.
7063         * cp-tree.h: Remove the corresponding prototypes.
7064
7065         * tree.c (hash_chainon): Remove.
7066         * cp-tree.h: Remove the corresponding prototypes.
7067
7068 2005-01-15  Jakub Jelinek  <jakub@redhat.com>
7069
7070         PR c++/19263
7071         * typeck2.c (split_nonconstant_init_1) <case VECTOR_TYPE>: Put a copy
7072         of CONSTRUCTOR's node into MODIFY_EXPR, as the original is modified.
7073
7074 2005-01-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7075
7076         * Make-lang.in (cp-warn): Don't append $(WERROR).
7077
7078 2005-01-10  Kazu Hirata  <kazu@cs.umass.edu>
7079
7080         * cp-tree.h: Fix a comment typo.
7081
7082 2005-01-07  Nathan Sidwell  <nathan@codesourcery.com>
7083
7084         PR c++/19298
7085         * pt.c (tsubst_qualified_id): Call convert_from_reference.
7086
7087 2005-01-06  Mark Mitchell  <mark@codesourcery.com>
7088
7089         PR c++/19244
7090         * class.c (add_implicitly_declared_members): Remove dead code.
7091         * decl.c (grokfndecl): Add sfk parameter.  Use it do set
7092         DECL_CONSTRUCTOR_P.
7093         (grokdeclarator): Adjust calls to grokfndecl.
7094         * method.c (implicitly_declare_fn): Improve documentation.
7095         * parser.c (cp_parser_direct_declarator): Do not consider a
7096         function to be a constructor if the containing class was
7097         originally anonymous.
7098
7099 2005-01-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7100
7101         PR c++/17154
7102         * search.c (lookup_field_1): Handle using declaration in
7103         class template partial specialization.
7104
7105 2005-01-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7106
7107         PR c++/19258
7108         * pt.c (push_access_scope): Handle friend defined in class.
7109         (pop_access_scope): Likewise.
7110
7111 2005-01-06  Nathan Sidwell  <nathan@codesourcery.com>
7112
7113         PR c++/19270
7114         * pt.c (tsubst_copy) <ARRAY_REF case>: Handle separately.
7115         (tsubst_copy_and_build) <ARRAY_REF case>: Remove obsolete
7116         array-new handling code.  Use build_x_binary_op.
7117
7118 2005-01-05  Nathan Sidwell  <nathan@codesourcery.com>
7119
7120         PR c++/19030
7121         * cp-tree.h (start_decl): Take pointer to pushed scope, not bool.
7122         * name-lookup.h (push_scope): Return pushed scope, not flag.
7123         * name-lookup.c (push_scope): Return scope that should be popped,
7124         not a flag.
7125         * decl.c (start_decl): Adjust.
7126         (grokfndecl): Adjust scope push and pop.
7127         * decl2.c (check_classfn): Likewise.
7128         * parser.c (cp_parser_condition, cp_parser_conversion_function_id,
7129         cp_parser_init_declarator, cp_parser_direct_declarator,
7130         cp_parser_class_specifier, cp_parser_class_head,
7131         cp_parser_lookup_name,
7132         cp_parser_constructor_declarator_p): Likewise.
7133         * pt.c (instantiate_class_template,
7134         resolve_typename_type): Likewise.
7135
7136 2005-01-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7137
7138         PR c++/14136
7139         * parser.c (cp_parser_unqualified_id): Do not issue error message
7140         for typedef-name as destructor declarator when performing an
7141         uncommitted tentative parse.
7142
7143 2005-01-01  Steven Bosscher  <stevenb@suse.de>
7144
7145         PR middle-end/17544
7146         * decl.c (finish_function): Fix comment.  Annotate the compiler
7147         generated return with the current file name and line 0.