OSDN Git Service

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