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