OSDN Git Service

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