PR rtl-optimization/82913
[official-gcc.git] / gcc / cp / ChangeLog-2006
blob09df1ef2184671b9b65f0dedab7d8410a567ac30
1 2006-12-31  Simon Martin  <simartin@users.sourceforge.net>
3         PR c++/29731
4         * parser.c (cp_parser_primary_expression): Return error_mark_node when
5         a statement-expression is found outside of a function body.
7 2006-12-28  Kazu Hirata  <kazu@codesourcery.com>
9         * cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P):
10         Remove.
12         * decl2.c: Fix a comment typo.
14 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
16         PR C++/30225
17         * decl.c (cxx_builtin_function): Only copy the decl if adding
18         it to the std namespace.
20 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
22         PR C++/30168
23         * optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.
25 2006-12-22  Kazu Hirata  <kazu@codesourcery.com>
27         * decl.c: Fix a coment typo.
29 2006-12-18  Ian Lance Taylor  <iant@google.com>
31         * decl.c (start_preparsed_function): Add support for
32         -Wmissing-declarations.
34 2006-12-16  Simon Martin  <simartin@users.sourceforge.net>
36         PR c++/29475
37         * cp-tree.h (struct deferred_access_check): New structure to represent a
38         deferred access check. It replaces the previous representation as a tree.
39         (get_deferred_access_checks): Return a vector of struct
40         deferred_access_check instead of a tree list.
41         (perform_access_checks): Take a vector of struct deferred_access_check
42         instead of a tree list.
43         * semantics.c (struct deferred_access): Store the deferred access checks
44         as a vector of struct deferred_access_check instead of a tree list.
45         (push_deferring_access_checks): Handle the change in struct
46         deferred_access.
47         (get_deferred_access_checks): Likewise.
48         (pop_to_parent_deferring_access_checks): Likewise.
49         (perform_or_defer_access_check): Likewise.
50         (perform_access_checks): Take a vector of struct deferred_access_check
51         instead of a tree list.
52         * parser.c (struct tree_check): New structure to store various data
53         associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token.
54         (struct cp_token): Changed the value field to be a union with a pointer to
55         a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID
56         tokens and a tree field for all other tokens.
57         (eof_token): Adjusted due to the change in struct cp_token.
58         (cp_lexer_get_preprocessor_token): Likewise.
59         (cp_lexer_purge_token): Likewise.
60         (cp_lexer_purge_tokens_after): Likewise.
61         (cp_lexer_print_token): Likewise.
62         (cp_parser_error): Likewise.
63         (cp_parser_identifier): Likewise.
64         (cp_parser_string_literal): Likewise.
65         (cp_parser_primary_expression): Likewise.
66         (cp_parser_unqualified_id): Likewise.
67         (cp_parser_parenthesized_expression_list): Likewise.
68         (cp_parser_storage_class_specifier_opt): Likewise.
69         (cp_parser_function_specifier_opt): Likewise.
70         (cp_parser_type_specifier): Likewise.
71         (cp_parser_simple_type_specifier): Likewise.
72         (cp_parser_initializer_list): Likewise.
73         (cp_parser_member_specification_opt): Likewise.
74         (cp_parser_attribute_list): Likewise.
75         (cp_parser_objc_expression): Likewise.
76         (cp_parser_objc_protocol_qualifiers): Likewise.
77         (cp_parser_objc_selector): Likewise.
78         (cp_parser_objc_declaration): Likewise.
79         (cp_parser_objc_statement): Likewise.
80         (cp_parser_omp_clause_name): Likewise.
81         (cp_parser_omp_clause_default): Likewise.
82         (cp_parser_omp_clause_schedule): Likewise.
83         (cp_parser_omp_parallel): Likewise.
84         (cp_parser_initial_pragma): Likewise.
85         (pragma_lex): Likewise.
86         (cp_parser_pre_parsed_nested_name_specifier): Likewise.
87         (cp_parser_nested_name_specifier_opt): Likewise.
88         Use cp_token::u::tree_check_value to save the token's value, the
89         associated deferred checks and its qualifying scope.
90         (cp_parser_template_id): Likewise.
91         (cp_parser_template_declaration_after_export): Adjusted the call to
92         get_deferred_access_checks.
93         (cp_parser_init_declarator): Take the access checks as a vector of struct
94         deferred_access_check instead of a tree list.
95         (cp_parser_single_declaration): Likewise.
96         (cp_parser_perform_template_parameter_access_checks): Likewise.
97         (cp_parser_simple_declaration): Adjusted the call to
98         cp_parser_init_declarator.
99         (cp_parser_explicit_specialization): Adjusted the call to
100         cp_parser_single_declaration.
102 2006-12-13  Ian Lance Taylor  <iant@google.com>
104         PR c++/19564
105         PR c++/19756
106         * parser.c (cp_parser_expression_stack_entry): Add field
107         lhs_type.
108         (cp_parser_binary_expression): Track tree code of left hand side
109         of expression.  Use it when calling build_x_binary_op.
110         (cp_parser_selection_statement): Add if_p parameter.  Change all
111         callers.  Warn about ambiguous else.
112         (cp_parser_statement): Add if_p parameter.  Change all callers.
113         (cp_parser_implicitly_scoped_statement): Likewise.
114         * typeck.c (build_x_binary_op): Add parameters arg1_code and
115         arg2_code.  Change all callers.  Call warn_about_parentheses.
116         * cp-tree.h (build_x_binary_op): Update declaration.
118 2006-12-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
120         * decl.c (build_enumerator): Update error message to match C
121         front-end.
122         
123 2006-12-11  Jan Hubicka  <jh@suse.cz>
125         * decl2.c (var_finalized_p): Update for renamed varpool functions.
127 2006-12-09  Zack Weinberg  <zackw@panix.com>
129         * parser.c (yydebug, enum pragma_omp_clause): Delete.
131 2006-12-07  Mark Mitchell  <mark@codesourcery.com>
133         PR c++/29732
134         * cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations.
135         (explicit_class_specialization_p): Declare.
136         * pt.c (explicit_class_specialization_p): New function.
137         * parser.c (cp_parser_init_declarator): Check correct number of
138         template parameters for in-class function definitions.
139         (cp_parser_check_declrator_template_parameters): Stop looking for
140         template classes when we find an explicit specialization.
142 2006-12-07  Lee Millward  <lee.millward@codesourcery.com>
144         PR c++/29980
145         * cp_parser_elaborated_type_specifier: Check
146         the return value of check_elaborated_type_specifier.
148 2006-12-06  Mark Mitchell  <mark@codesourcery.com>
150         PR c++/29730
151         * parser.c (cp_parser_init_declarator): Reject initialization of
152         functions.
154 2006-12-05  Mark Mitchell  <mark@codesourcery.com>
156         PR c++/29729
157         * decl2.c (check_member_template): Move check for member
158         templates in local classes to ...
159         * parser.c (cp_parser_template_declaration_after_export):
160         ... here.
162         PR c++/29728
163         * decl.c (check_array_designated_initializer): New function.
164         (maybe_deduce_size_from_array_init): Use it.
165         (reshape_init_array): Likewise.
167 2006-12-05  Aldy Hernandez  <aldyh@redhat.com>
169         Merge from gimple-tuples-branch.
171         2006-10-05  Aldy Hernandez  <aldyh@redhat.com>
173         * cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
174         (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
175         (cxx_omp_clause_copy_ctor): Same.
176         (cxx_omp_clause_assign_op): Same.
178         2006-09-28  Aldy Hernandez  <aldyh@redhat.com>
180         * cp-tree.h (union lang_tree_node): Gimple statements do not
181         have a TREE_CHAIN.
182         (TREE_INDIRECT_USING): Look in base.
184 2006-12-04  Jan Hubicka  <jh@suse.cz>
186         * cp-objcp-common.c (cp_expr_size): Return NULL in the case
187         size is undefined.
189 2006-12-04  Mark Mitchell  <mark@codesourcery.com>
191         PR c++/29733
192         * pt.c (tsubst_decl): Disallow variables of function type.
194         PR c++/29632
195         * call.c (add_builtin_candidate): Do not permit NULL pointer
196         constants to be compared with template parameters.
198 2006-12-04  Eric Botcazou  <ebotcazou@adacore.com>
200         * pt.c (for_each_template_parm_r) <INTEGER_TYPE>: New case.
201         Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.
203 2006-12-03  Richard Henderson  <rth@redhat.com>
204             Andrew Pinski  <pinskia@gmail.com>
206         PR C++/14329
207         * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR.
209 2006-12-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
211         PR C++/30033
212         * decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.
214 2006-12-02  Kazu Hirata  <kazu@codesourcery.com>
216         * name-lookup.c: Follow spelling conventions.
218 2006-12-01  Geoffrey Keating  <geoffk@apple.com>
220         * decl.c (poplevel): Check DECL_INITIAL invariant.
221         (duplicate_decls): Preserve DECL_INITIAL when eliminating
222         a new definition in favour of an old declaration.
223         (start_preparsed_function): Define and document value of
224         DECL_INITIAL before and after routine.
225         (finish_function): Check DECL_INITIAL invariant.
226         * parser.c
227         (cp_parser_function_definition_from_specifiers_and_declarator):
228         Skip duplicate function definitions.
230 2006-12-01  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
232         PR c++/30022
233         * typeck.c (type_after_usual_arithmetic_conversions):
234         Fix assertion for vector types.
235         (build_binary_op): Use temporary for inner type of vector types.
237 2006-12-01  Ryan Mansfield  <rmansfield@qnx.com>
239         PR c++/29066
240         * typeck.c (build_binary_op):  Fix pointer to member function
241         comparison for ptrmemfunc_vbit_in_delta targets.
243 2006-12-01  Dirk Mueller  <dmueller@suse.de>
245         PR c++/18313
246         * decl.c (grokdeclarator): Warn for type qualifiers on return
247         type for non-dependent types.
248         * pt.c (tsubst_function_type): Warn for type qualifiers on
249         return type for dependent types.
251 2006-11-30  Geoffrey Keating  <geoffk@apple.com>
253         * rtti.c (get_tinfo_decl): Handle return value from
254         pushdecl_top_level_and_finish.
256 2006-11-29  Lee Millward  <lee.millward@codesourcery.com>
258         PR c++/29022
259         * parser.c (cp_parser_class_head): Move processing
260         of any base classes to...
261         (cp_parser_class_specifier) ...here. Take an extra
262         tree* parameter for any base classes. Only process
263         them if the opening brace was found.
265 2006-11-28  Jakub Jelinek  <jakub@redhat.com>
267         PR c++/29735
268         * decl.c (grokfndecl): Check main's type after applying
269         attributes, not before.
271 2006-11-27  Mark Mitchell  <mark@codesourcery.com>
273         * class.c (build_vcall_offset_vtbl_entries): Do not add vcall
274         entries for a primary construction virtual table.
276 2006-11-26  Mark Mitchell  <mark@codesourcery.com>
278         PR c++/29886
279         * parser.c (cp_parser): Add in_function_body.
280         (cp_parser_new): Initialize it.
281         (cp_parser_primary_expression): Use parser->in_function_body
282         instead of at_function_scope_p.
283         (cp_parser_asm_definition): Likewise.
284         (cp_parser_direct_declarator): Likewise.
285         (cp_parser_class_specifier): Clear parser->in_function_body.
286         (cp_parser_constructor_declarator_p): Use parser->in_function_body
287         instead of at_function_scope_p.
288         (cp_parser_function_body_after_declarator): Set
289         parser->in_function_body.
291 2006-11-21      Douglas Gregor <doug.gregor@gmail.com>
293         * cp-tree.def (STATIC_ASSERT): New.
294         * cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT.
295         * error.c (dump_decl): Handle STATIC_ASSERT.
296         * cp-tree.h (STATIC_ASSERT_CONDITION): New.
297         (STATIC_ASSERT_MESSAGE): New.
298         (STATIC_ASSERT_SOURCE_LOCATION): New.
299         (struct tree_static_assert): New.
300         (enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT.
301         (union lang_tree_node): Add static_assertion.
302         (finish_static_assert): Declare.
303         * cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT.
304         (pp_cxx_declaration): Handle STATIC_ASSERT.
305         * pt.c (instantiate_class_template): Handle
306         STATIC_ASSERT members.
307         (tsubst_expr): Handle STATIC_ASSERT statements.
308         * semantics.c (finish_static_assert): New.
309         * lex.c (D_CPP0X): New.
310         (reswords): Add static_assert keyword.
311         (init_reswords): If not flag_cpp0x, mask out C++0x keywords.
312         * parser.c (cp_parser_block_declaration): Parse static
313         assertions.
314         (cp_parser_static_assert): New.
315         (cp_parser_member_declaration): Parse static assertions.
317 2006-11-21  Jakub Jelinek  <jakub@redhat.com>
319         PR c++/29570
320         * decl.c (cp_finish_decl): Check for value dependent brace enclosed
321         scalar initializer.
323         PR c++/29734
324         * cp-tree.h (WANT_VECTOR): Define.
325         (WANT_ARITH): Add WANT_VECTOR.
326         * cvt.c (build_expr_type_conversion): Handle vector types.
327         * typeck.c (build_unary_op): Add WANT_VECTOR to
328         build_expr_type_conversion flags.
330 2006-11-20  Simon Martin  <simartin@users.sourceforge.net>
332         PR c++/29475
333         * cp-tree.h (enforce_access, perform_or_defer_access_check): Added an
334         extra argument that represents the declaration to use to print
335         potential error messages.
336         * init.c (build_offset_ref): Adjusted the call to
337         perform_or_defer_access_check.
338         * class.c (alter_access, resolve_address_of_overloaded_function):
339         Likewise.
340         * decl.c (make_typename_type, make_unbound_class_template): Likewise.
341         * search.c (lookup_member): Likewise.
342         * friend.c (add_friend): Likewise.
343         * parser.c (cp_parser_template_id,
344         cp_parser_pre_parsed_nested_name_specifier): Likewise.
345         * semantics.c (finish_non_static_data_member,
346         check_accessibility_of_qualified_id, finish_id_expression): Likewise.
347         (pop_to_parent_deferring_access_checks, perform_access_checks,
348         perform_or_defer_access_check): Adjusted the call to enforce_access.
349         * call.c (enforce_access): Use the new extra argument to build the
350         error message.
351         (build_op_delete_call): Adjusted the call to
352         perform_or_defer_access_check.
353         (build_over_call): Likewise.
355 2006-11-16  Dirk Mueller  <dmueller@suse.de>
357         * name-lookup.c (begin_scope): Use GGC_CNEW instead of
358         GGC_NEW and memset.
360 2006-11-13  Roger Sayle  <roger@eyesopen.com>
362         * rtti.c (get_pseudo_ti_init): Ensure that the offset field of the
363         base type info initializer has the correct type.
365 2006-11-13  Mark Mitchell  <mark@codesourcery.com>
367         PR c++/29518
368         * pt.c (coerce_template_parms): Do not skip_evaluation while
369         substituting template arguments.
371 2006-11-11  Richard Guenther  <rguenther@suse.de>
373         * typeck.c (build_unary_op): Remove handling of FIX_CEIL_EXPR,
374         FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
376 2006-11-03  Roger Sayle  <roger@eyesopen.com>
378         * call.c (build_op_delete_call): Test user-visible type against
379         size_type_node, instead of against the internal type, sizetype.
380         * class.c (type_requires_array_cookie): Likewise.
381         * mangle.c (write_builtin_type) <INTEGER_TYPE>: Remove special
382         handling of TYPE_IS_SIZETYPE.
383         * typeck.c (type_after_usual_arithmetic_conversions): Remove
384         special case handling of TYPE_IS_SIZETYPE.
385         (comptypes): Likewise.
387 2006-11-01  Danny Smith  <dannysmith@users.sourceforge.net>
389         * decl.c (get_atexit_node): Reference atexit, not __cxa_exit.
390         if targetm.cxx.use_atexit_for cxa_atexit.
391         (start_cleanup_fn): Likewise.
392         (register_dtor_fn): Likewise.
394 2006-09-25  Geoffrey Keating  <geoffk@apple.com>
396         * decl2.c (cp_write_global_declarations): Rename from
397         cp_finish_file.
398         * cp-lang.c (finish_file): Don't call cp_finish_file.
399         * cp-tree.h (cp_write_global_declarations): Rename from
400         cp_finish_file.
401         * cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to
402         cp_write_global_declarations.
404 2006-10-31  Geoffrey Keating  <geoffk@apple.com>
406         * name-lookup.c (get_anonymous_namespace_name): New.
407         (push_namespace_with_attribs): Use get_anonymous_namespace_name.
408         * decl2.c (start_objects): Update for rename of
409         get_file_function_name_long.
411 2006-10-30  Dirk Mueller  <dmueller@suse.de>
413         PR c++/28704
414         * decl.c (grokdeclarator): Duplicate diagnostic message
415         for easier translation.
416         * decl.c (grokdeclarator): Fix line-wrapping.
418 2006-10-30  Dirk Mueller  <dmueller@suse.de>
420         PR c++/6321
421         * decl.c (grokfndecl): Use check_main_parameter_types.
423 2006-10-30  Dirk Mueller  <dmueller@suse.de>
425         PR c++/28669
426         * decl.c (grokfndecl): Duplicate warning message for
427         easier translation.
429 2006-10-30  Dirk Mueller  <dmueller@suse.de>
431         * typeck.c (build_unary_op): Fix indenting. Use G_().
433 2006-10-29  Dirk Mueller  <dmueller@suse.de>
435         PR c++/29089
436         * typeck.c (build_unary_op): Duplicate warning message
437         for easier translation.
439 2006-10-29  Dirk Mueller  <dmueller@suse.de>
441         PR c++/16307
442         * typeck.c (build_array_ref): Warn for char subscriptions
443         on pointers.
445 2006-10-29  Kazu Hirata  <kazu@codesourcery.com>
447         * decl.c: Fix a comment typo.
449 2006-10-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
451         PR C++/29295
452         * typeck.c (build_unary_op): Use same_type_p when comparing to
453         boolean type.
455 2006-10-29  Dirk Mueller  <dmueller@suse.de>
457         PR c++/29033
458         * typeck.c (build_binary_op): Duplicate warning message
459         for better translation.
461 2006-10-23  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
463         * decl.c (builtin_function_1): Move common code to
464         add_builtin_function.
465         (builtin_function): Rename to cxx_builtin_function.
466         Change the signature.
467         * call.c: Include langhooks.h.
468         (build_java_interface_fn_ref):  Replace calls to
469         builtin_function with add_builtin_function.
470         * Make-lang.in (cp/call.o): Depend on langhooks.h.
471         * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
472         cxx_builtin_function.
473         * cp-tree.h (builtin_function): Rename to cxx_builtin_function.
474         Change the signature.
476 2006-10-22  Nathan Sidwell  <nathan@codesourcery.com>
478         PR c++/20647
479         * rtti.c (tinfo_base_init): The type info string is always global.
481 2006-10-20  Lee Millward  <lee.millward@codesourcery.com>
482             Mark Mitchell <mark@codesourcery.com>
484         PR c++/28053
485         * decl2.c (grokbitfield): Detect invalid non-integral
486         types earlier when possible.
488 2006-10-18  Mark Shinwell  <shinwell@codesourcery.com>
490         PR c++/26884
491         * typeck2.c (digest_init): Raise error upon attempts to
492         initialize arrays with variables.
494 2006-10-17  Lee Millward  <lee.millward@codesourcery.com>
496         PR c++/27952
497         * cp-tree.h (xref_basetypes): Return bool instead of void.
498         * decl.c (xref_basetypes): Adjust definition. Return false
499         if the class bases are invalid.
500         * parser.c (cp_parser_class_head): Check the return value
501         from xref_basetypes.
503 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
505         PR c++/28261
506         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Add
507         comment.
509         PR c++/28261
510         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): New
511         function.
512         (cp_parser_constructor_declarator_p): Use it.
513         (cp_parser_check_type_definition): Return a value indicating
514         whether or not the definition is valid.
515         (cp_parser_enum_specifier): Skip invalid enum definitions.
517 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
519         PR c++/29039
520         * typeck2.c (build_functional_cast): Don't zero-initialize
521         non-PODs; instead, call their constructors.
522         * method.c (synthesize_method): Always build mem-initializers, if
523         we're synthesizing the default constructor.
525 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
527         PR c++/27270
528         * decl.c (reshape_init_class): Move check for designated
529         to ...
530         * parser.c (cp_parser_initializer_list): ... here.
531         * pt.c (tsubst_copy_and_build): Use finish_compound_literal.
533 2006-10-16  Mark Mitchell  <mark@codesourcery.com>
535         PR c++/27270
536         * typeck2.c (process_init_constructor_array): Reword comment.
537         * pt.c (tsubst_copy_and_built): Call reshape_init before calling
538         digest_init.
540         PR c++/29408
541         * parser.c (cp_parser_using_declaration): Stop parsing when
542         something goes wrong with an access declaration.
544         PR c++/29435
545         * typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent
546         types when their sizes are required.  Refine test for VLAs.
548         PR c++/28211
549         * parser.c (cp_parser_template_argument): Don't consider "&var" a
550         possible constant-expression.
551         * pt.c (convert_nontype_argument): Refine handling of arguments of
552         pointer type.
554 2006-10-13  Mark Mitchell  <mark@codesourcery.com>
556         PR c++/28506
557         * parser.c (function_declarator_p): New function.
558         (cp_parser_init_declarator): Use it.
559         (cp_parser_member_declaration): Likewise.
561 2006-10-12  Mark Mitchell  <mark@codesourcery.com>
563         PR c++/29318
564         * rtti.c (get_tinfo_decl): Refuse to create type info objects for
565         variably modified types.
567 2006-10-12 Lee Millward <lee.millward@codesourcery.com>
569        PR c++/27961
570        * decl.c (start_decl): Return error_mark_node if a
571        function is initialized like a variable.
572        (check_var_type): If a variable of field is declared void,
573        set the type to error_mark_node.
574        (grokdeclarator): Check the return type of check_var_type.
575        * class.c (finish_struct_1): Robustify.
577 2006-10-11  Mark Mitchell  <mark@codesourcery.com>
579         PR c++/29175
580         * decl.c (check_initializer): Issue errors about trying to
581         initialize arrays whose elements have variable size.
583 2006-10-11  Lee Millward  <lee.millward@codesourcery.com>
585         PR c++/29024
586         * cp-tree (struct cp_decl_specifier_seq): Rename to
587         conflicting_specifiers_p
588         * parser.c (cp_parser_set_storage_class): Set
589         conflicting_specifiers_p for the input decl specifier
590         if a typedef specifier is present. Rename uses of
591         multiple_specifiers_p to conflicting_specifiers_p.
592         (cp_parser_decl_specifier_seq) <RID_TYPEDEF>: If a storage
593         class specifier has already been set for this declaration,
594         set conflicting_specifiers_p to true on the decl_specs.
595         * decl.c (grokdeclarator): Rename uses of
596         multiple_specifiers_p to conflicting_specifiers_p.
598 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
600         * Make-lang.in: Added "c++.pdf" target support.
602 2006-10-10  Richard Guenther  <rguenther@suse.de>
604         PR rtl-optimization/29323
605         * decl.c (finish_function): Set TREE_NOTHROW only for
606         functions that bind local.
608 2006-10-09  Richard Henderson  <rth@redhat.com>
610         Revert emutls patch.
612 2006-10-04  Richard Henderson  <rth@redhat.com>
613             Jakub Jelinek  <jakub@redhat.com>
615         * decl.c (grokvardecl): Don't error if !have_tls.
616         (grokdeclarator): Likewise.
617         * parser.c (cp_parser_omp_threadprivate): Likewise.
619 2006-10-03  Mark Mitchell  <mark@codesourcery.com>
621         PR c++/29020
622         * friend.c (do_friend): Improve comments; add assertion.
623         * parser.c (cp_parser_nested_name_specifier_opt): Resolve
624         typenames for qualified names used in declarations, even when
625         caching qualified name lookup.
627         PR c++/29138
628         * decl2.c (grokfield): Don't handle access declarations here.
629         * parser.c (cp_parser_using_declaration): Handle access
630         declarations too.
631         (cp_parser_block_declaration): Adjust calls to
632         cp_parser_using_declaration.
633         (cp_parser_member_declaration): Likewise.  Use
634         cp_parser_using_declaration to look for access_declarations.
636 2006-10-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
638         PR c++/29291
639         * init.c (build_new): Check for invalid init.
641 2006-10-02  Mark Mitchell  <mark@codesourcery.com>
643         PR c++/29226
644         * typeck.c (cxx_sizeof_or_alignof_type): Tidy.  In templates, do
645         not try to actually evaluate sizeof for a VLA type.
647 2006-10-01  Mark Mitchell  <mark@codesourcery.com>
649         PR c++/29105
650         * pt.c (tsubst_baselink): Substituteinto the qualifying scope.
651         * semantics.c (baselink_for_fns): Build a baselink, even when
652         processing a template.
654         PR c++/29080
655         * parser.c (cp_parser_postfix_dot_deref_expression): Use
656         BASELINK_ACCESS_BINFO as the qualifying scope when calling
657         adjust_result_of_qualified_name_lookup.
659 2006-09-25  Lee Millward  <lee.millward@codesourcery.com>
661         PR c++/27329
662         PR c++/26938
663         * cp-tree.h (redeclare_class_template): Adjust declaration
664         to return bool instead of void.
665         * pt.c (redeclare_class_template): Update definition.
666         Return false on error.
667         * decl.c (xref_tag): Return error_mark_node if
668         redeclare_class_template returned false.
670         PR c++/27667
671         * cp-tree.h (begin_specialization): Return bool
672         instead of void.
673         * pt.c (check_specialization_scope): Likwise.
674         Adjust comment. Return false if a specialization
675         isn't permitted in the current scope.
676         (begin_specialization): Use the return value of
677         check_specialization_scope.
678         * parser.c (cp_parser_explicit_specialization): If
679         begin_specialization returned false, skip the rest
680         of the specialization.
682 2006-09-21  Mark Mitchell  <mark@codesourcery.com>
684         PR c++/29016
685         * typeck.c (build_unary_op): Don't form an ADDR_EXPR around a
686         BASELINK.
688 2006-09-21  Lee Millward  <lee.millward@codesourcery.com>
690         PR c++/28861
691         * decl.c (shadow_tag): Return error_mark_node
692         if maybe_process_partial_specialization failed.
694         PR c++/28303
695         * decl.c (grokdeclarator): Return error_mark_node on
696         declaration with two or more data types.
698 2006-09-20  Danny Smith  <dannysmith@users.sourceforge.net>
700         PR target/27650
701         * class.c (check_for_override): Remove dllimport from virtual
702         methods.
704 2006-09-18  Steven Bosscher  <steven@gcc.gnu.org>
706         PR c++/29087
707         * parser.c (cp_parser_labeled_statement): Return nothing.  Do
708         not take in_statement_expr and in_compound as arguments.  Rename
709         to cp_parser_label_for_labeled_statement.  Parse only the label,
710         not the statement.
711         (cp_parser_statement): Parse the statement of a labeled-statement
712         from here, using tail recursion.
714 2006-09-14  Andrew Pinski  <pinskia@physics.uc.edu>
716         PR C++/29002
717         * init.c (build_zero_init): If we have an error mark node for
718         the array size, return.
720 2006-09-10  Mark Mitchell  <mark@codesourcery.com>
722         PR c++/28991
723         * cp-objcp-common.c (cxx_staticp): New function.
724         * cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
725         * cp-tree.h (cxx_staticp): New function.
727 2006-09-09  Jason Merrill  <jason@redhat.com>
729         PR c++/28996
730         * cvt.c (convert_to_void): Strip COMPONENT_REF to functions.
732 2006-09-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
734         PR c++/28858
735         * parser.c (cp_parser_skip_until_found): Rename to
736         cp_parser_skip_to_end_of_template_parameter_list.  Remove last two
737         parameters.  Track levels of '< ... >'.  Stop at '{', '}', or ';'.
738         Reorganize.  Adjust comment.
739         (cp_parser_template_declaration_after_export): Adjust call.
740         (cp_parser_enclosed_template_argument_list): Likewise.
742 2006-09-07  Andrew Pinski  <pinskia@physics.uc.edu>
744         PR C++/28906
745         * init.c (build_new_1): Build a distinct type copy
746         for the array type that was returned from
747         build_cplus_array_type.
749 2006-09-07  Jason Merrill  <jason@redhat.com>
751         PR c++/27371
752         * cvt.c (convert_to_void): Enable previous change.
754         PR c++/26957
755         * method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
756         parms.
758 2006-09-07  Simon Martin  <simartin@users.sourceforge.net>
760         PR c++/28284
761         * pt.c (fold_non_dependent_expr): Make sure expr is not
762         dereferenced if it is NULL.
764 2006-09-06  Zak Kipling  <zak@transversal.com>
766         PR c++/26195
767         * decl.c (make_rtl_for_nonlocal_decl),
768         (start_preparsed_function): Don't use lbasename on
769         input_filename when calling get_fileinfo.
770         * semantics.c (begin_class_definition): Likewise.
771         * lex.c (cxx_make_type): Likewise.
772         (handle_pragma_interface): Call get_fileinfo on input_filename,
773         not on the parameter to the directive.
775 2006-09-06  Mark Mitchell  <mark@codesourcery.com>
777         PR c++/28903
778         * pt.c (tsubst): Use fold_non_dependent_expr to fold array
779         dimensions.
781         PR c++/28886
782         * pt.c (unify): Avoid unnecessary calls to fold_build2 for array
783         dimensions.
785 2006-09-06  Jason Merrill  <jason@redhat.com>
787         PR c++/27371
788         * cvt.c (convert_to_void): Strip useless TARGET_EXPR.
789         * cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
790         * tree.c (build_cplus_new): Set it.
792         PR c++/26696
793         * cvt.c (convert_to_void): Replace a subexpression with no side
794         effects with void_zero_node.
795         * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
796         (get_first_fn): Ditto.
797         * decl.c (grokdeclarator): No need to look through COMPONENT_REF.
799 2006-09-05  Jason Merrill  <jason@redhat.com>
801         PR c++/26571
802         * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
803         where the name is a type used incorrectly.
805         PR c++/26671
806         * typeck.c (maybe_warn_about_returning_address_of_local): Look
807         through COMPONENT_REF and ARRAY_REF.
809         PR c++/26102
810         * name-lookup.c (do_class_using_decl): Try to find the base even
811         if bases_dependent_p.
812         * pt.c (type_dependent_expression_p): A USING_DECL is dependent.
814         PR c++/19809
815         * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
817 2006-09-04  Nathan Sidwell  <nathan@codesourcery.com>
819         PR 23287 Revert my 2006-09-01 patch.
820         * parser.c: Reverted.
821         * pt.c: Reverted.
823 2006-09-02  Lee Millward  <lee.millward@codesourcery.com>
825         PR c++/27670
826         PR c++/27493
827         PR c++/27494
828         PR c++/27397
829         * parser.c (cp_parser_template_parameter_list): Add
830         invalid template parameters to the parameter list as
831         error_mark_node.
833 2006-09-02  Jakub Jelinek  <jakub@redhat.com>
835         PR c++/28878
836         * except.c (build_throw): Only set current_function_returns_abnormally
837         if cfun is not NULL.
839         PR c++/26917
840         * repo.c (repo_file): Remove.
841         (open_repo_file, reopen_repo_file_for_write): Return fopened
842         FILE * instead of setting global repo_file variable.
843         (init_repo): Adjust caller.
844         (finish_repo): Likewise.  Return instead of goto out before
845         reopen_repo_file_for_write has been called.
847 2006-09-01  Nathan Sidwell  <nathan@codesourcery.com>
849         PR c++/28705
850         * semantics.c (finish_call_expr): Add assert.
851         * name-lookup.c (lookup_arg_dependent): Check we found an overload
852         or an object.
854         PR c++/23287
855         * parser.c (cp_parser_id_expression): Add member_p
856         argument. Update all callers.
857         (cp_parser_unqualified_id): Likewise.  Lookup a destructor name in
858         the object's scope, if valid.
859         (cp_parser_global_scope_opt): Add object_scope_valid_p.  Update
860         callers.
861         (cp_parser_postfix_dot_deref_expression): Set object_scope.
862         * pt.c (tsubst_copy_and_build): Lookup dependent dtor name here.
864 2006-08-30  Jason Merrill  <jason@redhat.com>
866         PR c++/26670
867         * class.c (check_field_decls): Don't unset TYPE_PACKED until all
868         the fields have been processed.
870 2006-08-29  Andrew Pinski  <pinskia@physics.uc.edu>
872         PR C++/28349
873         * call.c (build_x_va_arg): Remove the reference type
874         from the type before creating the pointer type.
876 2006-08-29  J"orn Rennecke  <joern.rennecke@st.com>
878         PR c++/28139
879         * except.c (expand_start_catch_block): Use correct types for bitwise
880         copy.
882 2006-08-28  Jason Merrill  <jason@redhat.com>
884         PR c++/26670
885         * class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
886         fields can't be packed.
888         PR c++/26577
889         * cvt.c (convert_to_void): Don't automatically load from volatiles
890         of TREE_ADDRESSABLE type.
892 2006-08-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
894         PR c++/28860
895         * cp-tree.h (maybe_process_partial_specialization): Return
896         tree instead of void.
897         * parser.c (cp_parser_class_head): Use return value of
898         maybe_process_partial_specialization.
899         * pt.c (maybe_process_partial_specialization): Return error_mark_node
900         for broken specializations, TYPE otherwise.  Check for template
901         template parameters.
903 2006-08-27  Mark Mitchell  <mark@codesourcery.com>
905         PR c++/28058
906         * pt.c (register_specialization): Return error_mark_node for
907         specialization-after-instantiation.
908         * decl2.c (mark_used): Mark the main function used when one of its
909         clones is used.
911 2006-08-27  Lee Millward  <lee.millward@codesourcery.com>
913         PR c++/26573
914         * class.c (check_field_decls): Don't issue error about
915         local classes containing static data members.
917 2006-08-26  Joseph S. Myers  <joseph@codesourcery.com>
919         PR c++/24009
920         * parser.c (struct cp_token): Add input_file_stack_index.
921         (eof_token): Update.
922         (cp_lexer_get_preprocessor_token): Save input_file_stack_tick.
923         (cp_lexer_set_source_position_from_token): Restore input file
924         stack.
926 2006-08-26  Lee Millward  <lee.millward@codesourcery.com>
928         PR c++/28736
929         PR c++/28737
930         PR c++/28738
931         * pt.c (process_template_parm): Store invalid template
932         parameters as a TREE_LIST with a TREE_VALUE of error_mark_node.
933         (push_inline_template_parms_recursive): Check for template
934         parameters having a TREE_VALUE of error_mark_node rather than
935         check the parameter itself.
936         (mangle_class_name_for_template): Likewise.
937         (comp_template_parms): When comparing the individual template
938         parameters, return 1 if either is error_mark_node.
939         (current_template_args): Robustify.
940         (redeclare_class_template): Likewise.
942 2006-08-26  Mark Mitchell  <mark@codesourcery.com>
944         PR c++/28588
945         * class.c (resolve_address_of_overloaded_function): Add
946         access_path parameter.  Perform access checks.
947         (instantiate_type): Adjust call to
948         resolve_address_of_overloaded_function.  Remove unnecessary code.
949         * tree.c (is_overloaded_fn): Document.  Return 2 when there are
950         acutally multiple functions.
951         (really_overloaded_fn): Use is_overloaded_fn.
952         * mangle.c (write_expression): Handle BASELINKs.
953         * cp-tree.h (really_overloaded_fn): Return bool.
954         (baselink_for_fns): Declare.
955         * search.c (lookup_member): Check access for single static
956         functions here.
957         * pt.c (convert_nontype_argument_function): Handle BASELINKs.
958         (tsubst_copy_and_build): Generate BASELINKs for template-ids.
959         * semantics.c (finish_call_expr): Use baselink_for_fns.
960         (baselink_for_fns): New function.
961         (finish_id_expression): Use it.
962         * parser.c (cp_parser_template_argument): Don't strip BASELINKs.
964         PR c++/28595
965         * pt.c (tsubst): Issue errors about attempts to create VLAs at
966         template-instantiation time.
968 2006-08-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
970         PR c++/28853
971         * typeck2.c (cxx_incomplete_type_diagnostic): Handle template
972         template parameters.  Improve error message for template type
973         parameters.
975         PR c++/28852
976         * cp-tree.h (grok_op_properties): Return bool instead of void.
977         * decl.c (grokfndecl): Discard invalid operator declarations.
978         (copy_fn_p): Revert change for PR 27547.
979         (grok_op_properties): Return error status (true on success).
980         * pt.c (tsubst_decl): Discard invalid operator declarations.
982 2006-08-25  Mark Mitchell  <mark@codesourcery.com>
984         PR c++/28056
985         * decl.c (grokdeclarator): Disallow declarations with qualified
986         names in local scopes.
988 2006-08-25  Nathan Sidwell  <nathan@codesourcery.com>
990         PR c++/27787
991         * decl.c (make_typename_type): Only try and resolve it when
992         context is not dependent.  Refactor.
993         * decl2.c (check_classfn): Push to class scope before looking for
994         the function.
996 2006-08-24  Danny Smith   <dannysmith@users.sourceforge.net>
998         PR driver/28528
999         * g++spec.c (lang_specific_driver): Always check if we need to
1000         swallow a space-separated  arg to '-x'.
1001         * lang-specs.h: Don't create ouput files for '-xc++-header'
1002         if -fsyntax-only.
1004 2006-08-23  Jason Merrill  <jason@redhat.com>
1006         PR c++/27714
1007         * pt.c (push_template_decl_real): A friend template with class
1008         scope isn't primary.
1010 2006-08-23  Benjamin Smedberg <benjamin@smedbergs.us>
1012         PR c++/28687
1013         * rtti.c (build_dynamic_cast, build_dynamic_cast_1):
1014         Move -fno-rtti check to be more specific.
1016 2006-08-22  Jason Merrill  <jason@redhat.com>
1018         PR c++/23372
1019         * call.c (build_over_call): Don't make a copy here if build_call
1020         will make one too.
1022 2006-08-22  Andrew Pinski  <pinskia@physics.uc.edu>
1024         PR C++/28450
1025         * cp/init.c (build_zero_init): Handle VECTOR_TYPE and
1026         COMPLEX_TYPEs.
1028 2006-08-22  Simon Martin  <simartin@users.sourceforge.net>
1030         PR c++/28420
1031         * parser.c (cp_parser_postfix_expression): Make sure that the
1032         saved value for parser->type_definition_forbidden_message is
1033         restored before returning to avoid an invalid free().
1035 2006-08-22  Jason Merrill  <jason@redhat.com>
1037         PR c++/28659
1038         * typeck.c (merge_types): If either of the types have the right
1039         attributes, return that one.
1041         * tree.c (cp_build_type_attribute_variant): Make sure we aren't
1042         doing this to class types.
1043         * typeck.c (original_type): Deal with type quals properly.
1045 2006-08-21  Jason Merrill  <jason@redhat.com>
1047         PR c++/27115
1048         * semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
1049         just leave the expression as it is.
1050         (finish_stmt_expr): If the statement-expression has class type,
1051         wrap it in a TARGET_EXPR.
1052         * cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
1053         CLEANUP_POINT_EXPR.
1054         * except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.
1056 2006-08-21  Lee Millward  <lee.millward@codesourcery.com>
1058         PR c++/26269
1059         * decl.c (duplicate_decls): Return early if either
1060         newdecl or olddecl is error_mark_node.
1062          PR c++/28505
1063         * decl.c (grokdeclarator): Return early after
1064         issuing diagnostic about an incomplete type.
1066         PR c++/28741
1067         * tree.c (decl_anon_ns_mem_p): Robustify.
1068         * decl2.c (determine_visibility): Likewise.
1070 2006-08-20  Mark Mitchell  <mark@codesourcery.com>
1072         PR c++/28341
1073         * tree.c (cast_valid_in_integral_constant_expression_p): New
1074         function.
1075         * cp-tree.h (tsubst_copy_and_build): Adjust prototype.
1076         * pt.c (tsubst_expr): Add integral_constant_expression_p
1077         parameter.
1078         (fold_non_dependent_expr): Adjust callers of
1079         tsubst_{expr,copy_and_build}.
1080         (tsubst_friend_function): Likewise.
1081         (tsubst_template_arg): Likewise.
1082         (tsubst_default_argument): Likewise.
1083         (tsubst_decl): Likewise.
1084         (tsubst): Likewise.
1085         (tsubst_omp_clasuses): Likewise.
1086         (regenerate_decl_fromp_template): Likewise.
1087         (instantiate_decl): Likewise.
1088         (tsubst_initializer_list): Likewise.
1089         (tsubst_enum): Likewise.
1090         (tsubst_expr): Use RECUR throughout.
1091         (tsubst_copy_and_build): Change definition of RECUR.  Do not allow
1092         invalid casts in integral constant expressions.
1093         * parser.c (cp_parser_postfix_expression): Use
1094         cast_valid_in_integral_constant_expression_p.
1095         (cp_parser_cast_expression): Likewise.
1096         (cp_parser_functional_cast): Likewise.
1098         PR c++/28346
1099         * pt.c (tsubst_qualified_id): Do not strip references from
1100         OFFSET_REFs.
1102 2006-08-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1104         PR c++/28606
1105         * parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
1106         Fix formatting.
1107         (cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
1108         for valid type-names.
1109         (cp_parser_unqualified_id): Fix error handling for destructors.
1111         PR c++/28710
1112         * decl.c (xref_tag): Improve error message.  Return early on error.
1114         PR c++/28711
1115         * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Robustify.
1117 2006-08-17  Paolo Bonzini  <bonzini@gnu.org>
1119         PR c++/28573
1120         * semantics.c (finish_offsetof): Add new argument to fold_offsetof.
1122 2006-08-16  Andrew Pinski  <pinskia@physics.uc.edu>
1124         PR c++/28302
1125         * typeck.c (build_unary_op <case BIT_NOT_EXPR:>): Don't call
1126         perform_integral_promotions for non integral type.
1128 2006-08-16  Jason Merrill  <jason@redhat.com>
1130         PR c++/28385
1131         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
1132         if arg is a function.
1134 2006-08-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1136         PR c++/28593
1137         * init.c (build_new): Return early on invalid placement.
1139 2006-08-15  Lee Millward  <lee.millward@codesourcery.com>
1141         PR c++/28594
1142         * pt.c (process_template_parm): Robustify.
1144 2006-08-14  Steve Ellcey  <sje@cup.hp.com>
1146         PR c++/28288
1147         PR c++/14556
1148         * operators.def: Remove <?, ?>, <?=, and >?= operators.
1149         * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
1150         (cp_parser_warn_min_max): Remove.
1152 2006-08-11  Jason Merrill  <jason@redhat.com>
1154         PR c++/28559
1155         * parser.c (cp_parser_elaborated_type_specifier): Also ignore
1156         attributes applied to a TYPENAME_TYPE.
1158 2006-08-09  Lee Millward  <lee.millward@codesourcery.com>
1160         PR c++/28637
1161         * pt.c (coerce_template_parms): Copy across the
1162         invalid template arguments to the new template inner arguments.
1163         (retrieve_specialization): Robustify.
1165         PR c++/28638
1166         * pt.c (coerce_template_template_parms): Robustify.
1168         PR c++/28639
1169         * error.c (dump_template_parms): Robustify.
1171         PR c++/28640
1172         * pt.c (redeclare_class_template): Robustify.
1174         PR c++/28641
1175         * pt.c (type_unification_real): Robustify.
1177 2006-08-03  Lee Millward  <lee.millward@codesourcery.com>
1179         PR c++/28347
1180         * decl.c (start_decl): Return error_mark_node if a
1181         diagnostic was issed for an invalid typedef initialization.
1183 2006-08-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1185         PR c++/27508
1186         * parser.c (cp_parser_unqualified_id): Check for invalid scopes
1187         when parsing destructor names.
1189         PR c++/28274
1190         * decl.c (duplicate_decls): Call check_default_args here.
1191         (start_preparsed_function): Do not call check_default_args.
1192         * name-lookup.c (pushdecl_maybe_friend): Only call
1193         check_default_args if duplicate_decls got bypassed.
1195 2006-08-02  Richard Guenther  <rguenther@suse.de>
1197         PR c++/28479
1198         Revert
1199         2006-07-05  Richard Guenther  <rguenther@suse.de>
1200         Andrew Pinski  <pinskia@gcc.gnu.org>
1202         PR c++/27084
1203         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
1204         top level qualifiers for pointer type comparisons.
1206 2006-08-02  Mark Mitchell  <mark@codesourcery.com>
1208         PR c++/28557
1209         * pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.
1211 2006-07-31  Mark Mitchell  <mark@codesourcery.com>
1213         PR c++/28523
1214         * tree.c (stabilize_expr): Tweak documentation.  Add assertion.
1215         (stabilize_call): Tweak documentation.
1216         (stabilize_init): Only call stabilize_call for calls.
1218 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
1220         PR c++/28432
1221         * decl2.c (check_classfn): Remove early return.
1222         * search.c (lookup_member): Return NULL with bad type.
1224 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
1226         PR c++/28256
1227         * decl.c (check_initializer): Check for 1 initializer on scalar types.
1229 2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
1231         PR debug/23336
1232         * pt.c (tsubst_copy_and_build): Mark used enum types.
1233         * semantics.c (finish_id_expression): Likewise.
1235 2006-07-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1237         PR c++/6634
1238         * decl.c (grokdeclarator): Check whether "long" or "short" was
1239         specified for non-integral types.
1241 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1243         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
1245 2006-07-28  Lee Millward  <lee.millward@codesourcery.com>
1247         PR c++/27668
1248         PR c++/27962
1249         * pt.c (process_template_parm) Store invalid template
1250         parameters as error_mark_node in the paramater list.
1251         (push_inline_template_parms_recursive): Handle invalid
1252         template parameters.
1253         (comp_template_parms): Likewise.
1254         (check_default_tmpl_arg): Likewise.
1255         (coerce_template_template_parms): Likewise.
1256         (mangle_class_name_for_template): Likewise.
1257         (tsubst_template_parms): Likewise.
1258         * error.c (dump_template_argument_list): Likewise.
1260 2006-07-28  Kazu Hirata  <kazu@codesourcery.com>
1262         * cp-tree.h: Fix a comment typo.
1264 2006-07-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1266         PR c++/27572
1267         * decl.c (grokdeclarator): Return error_mark_node after invalid
1268         typedef.
1270 2006-07-23  Daniel Jacobowitz  <dan@codesourcery.com>
1272         PR c++/28460
1273         * decl.c (grokvardecl): Use FROB_CONTEXT.
1274         * pt.c (register_specialization): Likewise.
1276 2006-07-23  Mark Mitchell  <mark@codesourcery.com>
1278         PR c++/28025
1279         * cp-tree.h (LOOKUP_HIDDEN): New macro.  Reformat comments.
1280         * name-lookup.c (unqualified_namespace_lookup): There is no way to
1281         have a hidden name in non-namespace scopes.
1282         * pt.c (tsubst_friend_class): Look for hidden names.
1283         * decl.c (lookup_and_check_tag): Fix typo in comment.
1285         * semantics.c (finish_compound_literal): Fix typo in comment.
1287 2006-07-21  Jason Merrill  <jason@redhat.com>
1289         * decl2.c (determine_visibility): Don't propagate visibility from
1290         type to decl.
1291         (constrain_class_visibility): Don't warn in system headers.
1292         Don't warn about pointer fields.
1294 2006-07-20  Mike Stump  <mrs@apple.com>
1296         * decl2.c (determine_visibility_from_class): Don't use hidden
1297         visibility for explicit instantiations.
1299 2006-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1301         PR c++/28250
1302         * pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
1303         valid decls.  Cleanup.
1305         PR c++/28363
1306         * semantics.c (check_template_template_default_arg): Simplify
1307         error handling.
1309 2006-07-20  Jason Merrill  <jason@redhat.com>
1311         PR c++/28407
1312         * decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
1313         const variables with implicit internal linkage.
1314         * tree.c (decl_linkage): Only return lk_external if it's set.
1316         PR c++/28409
1317         * decl2.c (constrain_visibility): Ignore the anonymous namespace
1318         for extern "C" decls.
1319         (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.
1321         * decl2.c (constrain_visibility): Remove specified and reason
1322         parameters.  Don't touch decls that already have explicit visibility.
1323         (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from
1324         template.
1325         (determine_visibility_from_class): Reverse sense of
1326         DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
1327         (constrain_class_visibility): Only complain about member visibility
1328         if the member type is another class.  Don't change visibility of the
1329         current class.
1331 2006-07-19  Mark Mitchell  <mark@codesourcery.com>
1333         PR c++/28338
1334         * decl.c (layout_var_decl): Don't call push_local_name here.
1335         (initialize_artificial_var): Assert artificiality.
1336         (cp_finish_decl): Call push_local_name here.
1338 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
1340         PR c++/28337
1341         * typeck.c (build_binary_op): Short-circuit pointer arithmetic in
1342         templates.
1344 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
1346         PR c++/28048
1347         * semantics.c (check_accessibility_of_qualified_id): Robustify.
1349         PR c++/28235
1350         * pt.c (tsubst_decl): Handling substitutions into a static data
1351         member from within the scope of the tempalte itself.
1353 2006-07-18  Lee Millward  <lee.millward@gmail.com>
1355         PR c++/28258
1356         * method.c (locate_copy): Check for non_reference
1357         returning error_mark_node.
1359         PR c++/28260
1360         * decl.c (duplicate_decls): Return error_mark_node
1361         on ambiguous declaration.
1363 2006-07-18  Steve Ellcey  <sje@cup.hp.com>
1365         PR c++/27495
1366         * search.c (adjust_result_of_qualified_name_lookup): Change
1367         assert to part of if statement.
1369 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
1371         PR c++/28291
1372         * decl.c (reshape_init_class): Return error_mark_node on error.
1374 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
1376         PR c++/28304
1377         * decl2.c (check_classfn): Return NULL_TREE on error.
1379 2006-07-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1381         PR c++/28250
1382         * name-lookup.c (pushdecl_maybe_friend): Return early on
1383         error_mark_node.
1384         * except.c (expand_start_catch_block): Use error_mark_node instead
1385         of NULL_TREE for invalid decls.
1386         * parser.c (cp_parser_exception_declaration): Return error_mark_node
1387         on invalid catch parameter. Simplify.
1389 2006-07-16  Jakub Jelinek  <jakub@redhat.com>
1391         PR c++/28370
1392         * decl2.c (note_vague_linkage_var): Removed.
1393         (finish_static_data_member_decl): Add decl to pending_statics vector
1394         directly.  Do it even for non-public decls.
1396 2006-07-15  Lee Millward  <lee.millward@gmail.com>
1398         PR c++/28292
1399         * decl2.c (acceptable_java_type): Robustify. Use
1400         proper Boolean return type instead of return 1.
1401         (check_java_method): Don't issue error about
1402         type not being an acceptable Java parameter if
1403         it's error_mark_node.
1405         PR c++/28269
1406         * parser.c (cp_parser_elaborated_type_specifier):
1407         Return early if an invalid type was detected.
1409 2006-07-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1411         PR c++/28249
1412         * parser.c (cp_parser_check_decl_spec): New function.
1413         (cp_parser_decl_specifier_seq): Factor out check for repeated
1414         decl-specifiers into cp_parser_check_decl_spec. Use it.
1415         (cp_parser_type_specifier_seq): Use it.
1417         PR c++/28294
1418         * semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
1419         only.
1421         PR c++/28387
1422         * decl2.c (cplus_decl_attributes): Check for invalid decls.
1424 2006-07-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1426         PR c++/28343
1427         * decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
1428         * decl2.c (grokfield): Likewise.
1430 2006-07-12  Geoffrey Keating  <geoffk@apple.com>
1432         * decl2.c (determine_visibility): Don't change visibility of
1433         function locals because of -fvisibility-inlines-hidden.
1435 2006-07-12  Jason Merrill  <jason@redhat.com>
1437         PR c++/28217
1438         * semantics.c (note_decl_for_pch): Don't premangle templates.
1440 2006-07-12  Martin Michlmayr  <tbm@cyrius.com>
1442         * typeck.c (string_conv_p): Remove spurious quotation mark in
1443         warning.
1445 2006-07-07  Lee Millward  <lee.millward@gmail.com>
1446             Andrew Pinski  <pinskia@gmail.com>
1448         PR c++/27820
1449         * decl.c (define_label): Return error_mark_node on error.
1450         * semantics.c (finish_label_stmt): Don't call
1451         add_stmt for invalid labels.
1453 2006-07-06  Jason Merrill  <jason@redhat.com>
1455         PR c++/28279
1456         * decl2.c (finish_static_data_member_decl): Don't assert
1457         TREE_PUBLIC.
1459 2006-07-05  Jason Merrill  <jason@redhat.com>
1461         PR c++/13983
1462         PR c++/17519
1463         * class.c (check_field_decls): Check TYPE_PACKED after
1464         stripping array types.
1465         (finish_struct_bits): Don't copy TYPE_SIZE here.
1467         PR c++/18681
1468         * friend.c (is_friend): Fix DR 45 implementation.
1470 2006-07-05  Richard Guenther  <rguenther@suse.de>
1471         Andrew Pinski  <pinskia@gcc.gnu.org>
1473         PR c++/27084
1474         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
1475         top level qualifiers for pointer type comparisons.
1477 2006-07-01  Jason Merrill  <jason@redhat.com>
1479         PR c++/28215
1480         * method.c (make_thunk): Unset DECL_USE_TEMPLATE and
1481         DECL_TEMPLATE_INFO.
1483 2006-06-30  Jason Merrill  <jason@redhat.com>
1485         PR c++/26577
1486         * call.c (build_new_method_call): Force evaluation of the
1487         instance pointer, not the object.
1489 2006-06-30  Kazu Hirata  <kazu@codesourcery.com>
1491         * decl2.c: Fix a comment typo.
1493 2006-06-30  Jason Merrill  <jason@redhat.com>
1495         PR c++/18698
1496         * decl2.c (grokfield): Only try to treat the decl as an access
1497         declaration if the scope is a class.
1499 2006-06-29  Jason Merrill  <jason@redhat.com>
1501         PR c++/26905
1502         PR c++/26612
1503         PR c++/27000
1504         PR c++/26984
1505         PR c++/19134
1506         * decl2.c (determine_visibility): Overhaul.
1507         (determine_visibility_from_class): Likewise.
1508         (min_vis_r, type_visibility, constrain_visibility): New fns.
1509         (constrain_visibility_for_template): Likewise.
1510         (constrain_class_visibility): Likewise.
1511         * decl.c (cp_finish_decl): Call determine_visibility for function
1512         decls, too.
1513         * name-lookup.c (pushtag): Call determine_visibility.
1514         * decl.c (duplicate_decls): Don't copy visibility from template to
1515         specialization.
1516         * pt.c (check_explicit_specialization): Likewise.
1517         (lookup_template_class, tsubst_decl): Call determine_visibility.
1518         * class.c (finish_struct_1): Call constrain_class_visibility.
1520         PR c++/26905
1521         PR c++/21675
1522         PR c++/17470
1523         * parser.c (cp_parser_explicit_instantiation): Pass the attributes
1524         to grokdeclarator.
1525         (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
1526         (cp_parser_enum_specifier): Likewise.
1527         (cp_parser_elaborated_type_specifier): Apply attributes if this
1528         declares only the class.
1529         (cp_parser_class_specifier): Apply leading attributes immediately.
1530         * semantics.c (begin_class_definition): Add attributes parameter,
1531         apply them to the type.
1533         PR c++/21581
1534         PR c++/25915
1535         * tree.c (decl_anon_ns_mem_p): New function.
1536         * cp-tree.h: Declare it.
1537         * decl2.c (determine_visibility): Make anonymous namespace
1538         members static.
1539         (min_vis_r, constrain_visibility): Likewise.
1540         * rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
1541         pseudo-types.
1542         * decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
1543         global_namespace.
1544         * name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
1545         on anonymous namespaces.
1547 2006-06-28  Jason Merrill  <jason@redhat.com>
1549         PR c++/27424
1550         * pt.c (convert_template_argument): Pass all template arguments
1551         on to coerce_template_template_parms.
1553 2006-06-25  Lee Millward  <lee.millward@gmail.com>
1554             Mark Mitchell <mark@codesuorcery.com>
1556         PR c++/28054
1557         * decl2.c (grokbitfied): Remove check for grokdeclarator
1558         returning NULL_TREE, instead check for error_mark_node
1559         to indicate failure.
1560         * decl.c (grokdeclarator): Adjust block comment.
1562 2006-06-25  Lee Millward  <lee.millward@gmail.com>
1564         PR c++/28051
1565         * mangle.c (mangle_conv_op_name_for_type): Check for
1566         invalid types.
1567         * name-lookup.c (push_class_level_binding): Robustify.
1568         (do_class_using_decl): Return early if name is error_mark_node.
1570 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
1572         PR c++/28114
1573         * name-lookup.c (pushtag): Return if we have error_mark_node.
1575 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
1577         PR c++/27019
1578         * typeck2.c (process_init_constructor_array): Set ce->value on errors.
1580 2006-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1582         PR c++/28112
1583         * parser.c (cp_parser_attribute_list): Skip attributes with invalid
1584         arguments.  Fix comment.
1586         PR c++/11468
1587         * init.c (build_new_1): Handle error_mark_nodes returned by
1588         build_java_class_ref.
1589         (build_java_class_ref): Do not abort compilation, but return
1590         error_mark_node.  Improve error message.  Fix indentation.
1592 2006-06-23  Danny Smith   <dannysmith@users.sourceforge.net>
1594         PR target/27789
1595         * decl.c (start_decl): Check that dllimports are not initialized.
1597 2006-06-22  Lee Millward  <lee.millward@gmail.com>
1599         PR c++/27805
1600         * typeck2.c (build_m_component_ref): Use error_operand_p.
1602         PR c++/27821
1603         * decl.c (grokdeclarator): Return error_mark_node on
1604         invalid uses of the scope resolution operator.
1606 2006-06-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1608         PR c++/28111
1609         * pt.c (determine_specialization): Check for invalid decls.
1611         PR c++/28110
1612         * pt.c (unify) <case TEMPLATE_PARM_INDEX>: Check for invalid
1613         parameters.
1615         PR c++/28109
1616         * rtti.c (get_tinfo_decl_dynamic): Robustify.
1618 2006-06-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1620         PR c++/28052
1621         * init.c (push_base_cleanups): Skip members with invalid types.
1622         * typeck.c (build_class_member_access_expr): Robustify.
1624 2006-06-19  Mark Mitchell  <mark@codesourcery.com>
1626         * pt.c (instantiate_template): Fix typo in comment.
1628 2006-06-19  Richard Guenther  <rguenther@suse.de>
1630         * parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near
1631         power-of-two token vector size.
1633 2006-06-16  Mark Mitchell  <mark@codesourcery.com>
1635         PR c++/28016
1636         * decl.c (cp_finsh_decl): Do not emit uninstantiated static data
1637         members.
1639         PR c++/27979
1640         * call.c (standard_conversion): Strip cv-qualifiers from bitfield
1641         types.
1643         PR c++/27884
1644         * decl.c (have_extern_spec): Remove.
1645         (start_decl): Do not check have_extern_spec.
1646         (start_function): Likewise.
1647         * cp-tree.h (have_extern_spec): Remove.
1648         * parser.c (cp_parser_linkage_specification): Don't set
1649         have_extern_spec.
1650         (cp_parser_init_declarator): Likewise.
1651         (cp_parser_parameter_declaration): Do not treat parameters as
1652         within the scope of an unbraced linkage specification.
1654 2006-06-15  Mark Mitchell  <mark@codesourcery.com>
1656         PR c++/27689
1657         * cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New
1658         macro.
1659         * pt.c (unify): Use it.
1661         PR c++/27666
1662         * call.c (build_conditional_expr): Robustify.
1664         PR c++/27640
1665         * pt.c (instantiate_template): Set processing_template_decl to
1666         zero while performing substitutions.
1668 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
1670         PR c++/27665
1671         * parser.c (cp_parser_unqualified_id): Use constructor_name_p to
1672         identify destructors.
1673         (cp_parser_nested_name_specifier_opt): Remove invalid
1674         optimization.
1675         (cp_parser_template_id): Refine heuristic for determining whether
1676         we are entering a scope.
1678         PR c++/27648
1679         * parser.c (cp_parser_declarator): Robustify.
1681         PR c++/26559
1682         * pt.c (tsubst_expr): Use finish_omp_atomic.
1683         (value_dependent_expression_p): All CALL_EXPRs are dependent.
1684         * semantics.c (finish_omp_atomic): Rework to use standard
1685         paradigms for handling non-dependent expressions.
1687 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1689         * typeck.c (build_modify_expr): Tidy diagnostic message.
1691 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
1693         PR c++/28018
1694         * typeck.c (build_modify_expr): Disallow array assignment.
1696 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1698         * cp-tree.def: Fix typo.
1700 2006-06-13  Mark Mitchell  <mark@codesourcery.com>
1702         PR c++/27227
1703         * decl.c (decls_match): Allow an extern "C" variable declarations
1704         from different namespaces to match.
1705         (duplicate_decls): Disallow redeclaring a variable with a
1706         different linkage specification.
1708 2006-06-13  Jakub Jelinek  <jakub@redhat.com>
1710         PR middle-end/27793
1711         * cp-tree.h (cxx_int_tree_map): New struct.
1712         (struct language_function): Add extern_decl_map field.
1713         * name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
1714         to cp_function_chain->extern_decl_map hash table instead of
1715         copying over DECL_UID.
1716         * cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
1717         functions.
1718         (cp_genericize_r): Remap DECL_EXTERN local decls using
1719         cp_function_chain->extern_decl_map hash table.
1720         * decl.c (finish_function): Clear extern_decl_map.
1722 2006-06-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1724         PR c++/27601
1725         * semantics.c (finish_offsetof): Handle pseudo-destructors.
1727         PR c++/27933
1728         * name-lookup.c (lookup_qualified_name): Always return error_mark_node
1729         if lookup fails.
1731         PR c++/27951
1732         * decl2.c (finish_anon_union): Return early if build_anon_union_vars
1733         fails.
1735 2006-06-12  Roger Sayle  <roger@eyesopen.com>
1737         PR c++/21210
1738         * typeck2.c (build_functional_cast): Use cp_convert to construct
1739         non-aggregate initializers instead of the user-level build_c_cast.
1741 2006-06-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1743         PR c++/27601
1744         * cp-tree.h (finish_offsetof): Add prototype.
1745         * semantics.c (finish_offsetof): New function.
1746         * parser.c (cp_parser_builtin_offsetof): Call it instead of
1747         fold_offsetof.
1748         * pt.c (tsubst_copy_and_build): Likewise.
1750 2006-06-06  Mark Mitchell  <mark@codesourcery.com>
1752         PR c++/27177
1753         * call.c (standard_conversion): Require that the derived type be
1754         complete when performing a derived-to-base conversion.
1756 2006-06-04  Mark Mitchell  <mark@codesourcery.com>
1758         PR c++/27819
1759         * decl.c (cp_finish_decl): Process initializers for static data
1760         members with non-dependent initializers, even in templates.
1762         PR c++/27722
1763         * decl.c (maybe_deduce_size_from_array_init): If the declaration
1764         is erroneous, give it an erroneous type.
1765         (layout_var_decl): If the type is erroneous, give up.
1766         (check_initializer): Likewise.
1768         PR c++/27807
1769         * cp-tree.h (TYPE_OBJ_P): New macro.
1770         (TYPE_PTROB_P): Use it.
1771         (TYPE_REF_OBJ_P): Likewise.
1772         * semantics.c (finish_compound_literal): Do not permit compound
1773         literals of non-object types.
1775         PR c++/27806
1776         * typeck.c (original_type): Robustify.
1778 2006-06-05  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1780         PR c++/27804
1781         * init.c (constant_value_1): Return decl instead of error_mark_node
1782         for invalid initializers.
1784 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
1786         PR c++/27592
1787         * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion
1788         on operand of the COND_EXPR for the null pointer check.
1790 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
1792         PR c++/26740
1793         * typeck.c (build_unary_op): Mark the function as being used.
1795 2006-06-01  Alexandre Oliva  <aoliva@redhat.com>
1797         PR c++/26660
1798         * parser.c (cp_parser_initial_pragma): Read one more token for
1799         caller after reading PCH file in.
1801 2006-05-31  Mark Mitchell  <mark@codesourcery.com>
1803         PR c++/27801
1804         * call.c (perform_implicit_conversion): Do not actually perform
1805         conversions in templates.
1807         PR c++/26496
1808         * call.c (resolve_args): Check for invalid uses of bound
1809         non-static member functions.
1810         * init.c (build_offset_ref): Return error_mark_node for errors.
1812         PR c++/27385
1813         * decl.c (reshape_init): Robustify.
1814         (reshape_init_array_1): Likewise.
1816 2006-05-30  Mark Mitchell  <mark@codesourcery.com>
1818         PR c++/27808
1819         * parser.c (cp_parser_decl_specifier_seq): Issue errors about
1820         "friend" specifiers that do not appear in class scopes.
1822         PR c++/27803
1823         * class.c (check_bitfield_decl): Ensure that all bitfields have
1824         integral type.
1826 2006-05-29  Kazu Hirata  <kazu@codesourcery.com>
1828         * pt.c (convert_nontype_argument): Fix a typo in an error
1829         message.
1831 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
1833         * decl.c, decl2.c, parser.c: Fix comment typos.  Follow
1834         spelling conventions.
1836 2006-05-24  Mark Mitchell  <mark@codesourcery.com>
1838         PR c++/20103
1839         * decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
1840         error_mark_node to indicate an initialization is OK.
1841         (start_decl): Likewise.  Adjust call to start_decl_1.
1842         (start_decl_1): Add initialized parameter.  Simplify.
1843         * except.c (initialize_handler_parm): Adjust call to
1844         setart_decl_1.
1845         (expand_start_catch_block): Let cp_finish_decl initialize catch
1846         parameters.
1847         * cp-tree.h (start_decl_1): Adjust prototype.
1848         * pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
1849         (instantiate_decl): Let cp_finish_decl handle initialization.
1850         * semantics.c (finish_compound_literal): Create a temporary
1851         variable for the literal.
1852         * typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
1853         cases.
1854         * decl2.c (finish_static_data_member_decl): Don't set
1855         DECL_INITIAL.
1856         (grokfield): Do not try to initialize functions.
1858 2006-05-23  Mark Mitchell  <mark@codesourcery.com>
1860         PR c++/20173
1861         * pt.c (determine_specialization): Disallow partial
1862         specializations of templates.
1864 2006-05-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1866         PR c++/27716
1867         * typeck.c (build_modify_expr): Test arguments for error_operand_p.
1869         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.
1871 2006-05-21  Mark Mitchell  <mark@codesourcery.com>
1873         PR c++/27210
1874         * cp-tree.h (cp_save_expr): New function.
1875         * init.c (build_new): Correct logic for zero-element array
1876         warning.  Use cp_save_expr.
1877         * tree.c (cp_save_expr): New function.
1879 2006-05-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1881         PR c++/27398
1882         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
1883         or void_type_node.
1885 2006-05-19  Mike Stump  <mrs@apple.com>
1887         * typeck.c (default_conversion): Remove static.
1889 2006-05-19  Mark Mitchell  <mark@codesourcery.com>
1891         PR c++/26433
1892         * cp-tree.h (begin_function_try_block): Change prototype.
1893         (finish_function_handler_sequence): Likewise.
1894         * parser.c (cp_parser_function_try_block): Adjust calls.
1895         * pt.c (tsubst_expr): Adjust calls.
1896         * semantics.c (begin_function_try_block): Create an artificial
1897         outer scope.
1898         (finish_function_handler_sequence): Close it.
1900 2006-05-18  Mark Mitchell  <mark@codesourcery.com>
1902         PR c++/27471
1903         PR c++/27506
1904         * typeck.c (decay_conversion): Convert bitfields to their declared
1905         types here.  Improve documentation.  Avoid use of cp_convert.
1906         (default_conversion): Make it static.  Perform integral promotions
1907         before lvalue-to-rvalue, function-to-pointer, and array-to-pointer
1908         conversions.
1909         * init.c (build_init): Remove.
1910         (expand_default_init): Do not call rvalue.
1911         * call.c (null_ptr_cst_p): Robustify.
1912         (build_conditional_expr): Tidy.
1913         * except.c (build_throw): Do not perform lvalue-to-rvalue
1914         conversion on operand before initializing temporary.
1915         * tree.c (convert.h): Include it.
1916         (convert_bitfield_to_declared_type): Use convert_to_integer, not
1917         cp_convert.
1918         (rvalue): Don't convert bitfields to their declared type here.
1919         * cp-tree.h (build_init): Remove.
1920         (default_conversion): Likewise.
1921         * typeck2.c (build_m_component_ref): Do not perform
1922         lvalue-to-rvalue, function-to-pointer, or array-to-pointer
1923         conversions here.  Correct error message.
1925 2006-05-17  Mark Mitchell  <mark@codesourcery.com>
1927         PR c++/26122
1928         * decl2.c (check_member_template): Remove checks for virtual
1929         functions.
1930         * parser.c (cp_parser_function_specifier_opt): Complain about
1931         virtual templates.
1932         (cp_parser_pure_specifier): Likewise.
1934         PR c++/26068
1935         * parser.c (cp_parser_set_storage_class): Check for
1936         invalid uses of storage classes on unbraced linkage
1937         specifications.
1938         (cp_parser_decl_specifier_seq): Pass keywords, not storage classes,
1939         to cp_parser_set_storage_class.
1941 2006-05-17  Jakub Jelinek  <jakub@redhat.com>
1943         PR c++/27491
1944         * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR
1945         on CONSTRUCTORs.
1947         PR middle-end/27415
1948         * parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
1949         on combined parallel workshare constructs.
1950         * pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag.
1952 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
1954         PR driver/26885
1955         * Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS).
1957 2006-05-15  Mark Mitchell  <mark@codesourcery.com>
1959         PR c++/27339
1960         * cp-tree.h (perform_access_checks): New function.
1961         * semantics.c (perform_access_checks): New function.
1962         (perform_deferred_access_checks): Use it.
1963         * parser.c (cp_parser_simple_declaration): Adjust call to
1964         cp_parser_init_declarator.
1965         (cp_parser_type_parameter): Do not defer checks in default
1966         arguments.
1967         (cp_parser_explicit_specialization): Adjust call to
1968         cp_parser_single_declaration.
1969         (cp_parser_init_declarator): Perform template-parameter access
1970         checks.
1971         (cp_parser_parameter_declaration): Do not defer checks for
1972         template parameter default arguments.
1973         (cp_parser_template_declaration_after_export): Gather access
1974         checks for template parameters, and pass them to
1975         cp_parser_single_declaration.
1976         (cp_parser_template_parameter_access_checks): New function.
1977         (cp_parser_single_declaration): Add checks parameter.
1979         PR c++/27505
1980         * call.c (convert_like_real): Convert bitfields to their declared
1981         types when forming an rvalue.
1982         * tree.c (convert_bitfield_to_declared_type): New function.
1983         (rvalue): Use it.
1984         * cp-tree.h (convert_bitfield_to_declare_type): Declare it.
1986 2006-05-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1988         PR c++/27582
1989         * pt.c (any_dependent_template_arguments_p): Return early on invalid
1990         argument list.
1992         PR c++/27581
1993         * search.c (adjust_result_of_qualified_name_lookup): Skip on
1994         invalid context_class.
1996         PR c++/27315
1997         * pt.c (do_decl_instantiation): Return early on invalid decl.
1999         PR c++/27559
2000         * pt.c (push_template_decl_real): Return error_mark_node instead
2001         of broken decl.
2003         PR c++/27496
2004         * pt.c (tsubst_friend_class): Return early on invalid friend
2005         declarations.
2007 2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>
2009         * Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H).
2010         (cp/decl2.o): Likewise.
2011         (cp/typeck.o): Likewise.
2012         (cp/cvt.o): Likewise.
2013         (cp/parser.o): Likewise.
2014         (cp/call.o): Replace target.h with $(TARGET_H).
2016 2006-05-14  Alexandre Oliva  <aoliva@redhat.com>
2018         * pt.c (build_non_dependent_expr): Leave ADDR_EXPR of
2019         COMPONENT_REF alone.
2021 2006-05-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2023         PR c++/27547
2024         * decl.c (copy_fn_p): Return early on non-member functions.
2026 2006-05-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2028         PR c++/27447
2029         * decl2.c (build_memfn_type): Skip invalid functions and class types.
2031 2006-05-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2033         PR c++/27427
2034         * pt.c (convert_nontype_argument): Return early on invalid arguments.
2036         * pt.c (process_template_parm): Remove superfluous temporary.
2038         PR c++/27430
2039         * pt.c (process_template_parm): Handle erroneous non-type parameters.
2041         PR c++/27423
2042         * typeck.c (convert_for_initialization): Skip erroneous types.
2044         PR c++/27422
2045         * typeck.c (convert_arguments): Return early on args with
2046         invalid types.
2048 2006-05-03  Aldy Hernandez  <aldyh@redhat.com>
2050         PR/21391
2051         * typeck.c (build_static_cast_1): Save casted types in used types
2052         hash table.
2053         (build_reinterpret_cast_1): Same.
2054         * rtti.c (build_dynamic_cast_1): Same.
2056 2006-05-04  Jakub Jelinek  <jakub@redhat.com>
2058         PR c++/27359
2059         * parser.c (cp_parser_omp_for_loop): Only call
2060         cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
2061         called.
2063 2006-05-02  Mark Mitchell  <mark@codesourcery.com>
2065         PR c++/27102
2066         * decl.c (grokdeclarator): Robustify checks for defining members
2067         of incomplete types.
2069         PR c++/27309
2070         * class.c (add_method): Call grok_special_member_properties.
2071         * decl.c (grokdeclarator): Don't call it here.
2072         (copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
2073         assignment operator.  Set TYPE_HAS_CONSTURCTOR if DECL is a
2074         constructor.
2075         (start_method): Don't call grok_special_member_properties.
2076         * method.c (implicitly_declare_fn): Likewise.
2077         * pt.c (instantiate_class_template): Likewise.
2078         * decl2.c (grokfield): Likewise.
2080 2006-05-02  Jakub Jelinek  <jakub@redhat.com>
2082         PR middle-end/27337
2083         * cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
2084         * cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
2085         * cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.
2087 2006-04-30  Mark Mitchell  <mark@codesourcery.com>
2089         PR c++/27094
2090         * pt.c (tsubst_default_argument): Increment function_depth around
2091         call to tsubst_expr.
2092         * parser.c (cp_parser_parameter_declaration): Likewise.
2093         * decl2.c (mark_used): Tidy.
2095 2006-04-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2097         PR c++/27278
2098         * decl.c (grok_op_properties): Skip operators with invalid args
2099         when checking for class-type or enum-type args.
2101 2006-04-29  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2103         PR c++/27279
2104         * decl.c (copy_fn_p): Skip functions with invalid first arg.
2106 2006-04-27  Mark Mitchell  <mark@codesourcery.com>
2108         PR c++/27292
2109         * tree.c (rvalue): Convert bitfields to their declared types.
2111         PR c++/27102
2112         * typeck2.c (cxx_incomplete_type_diagnostic): Handle
2113         TYPENAME_TYPE.
2115 2006-04-24  Mark Mitchell  <mark@codesourcery.com>
2117         PR c++/27292
2118         * typeck.c (decay_conversion): Don't adjust bitfield types.
2119         (perform_integral_promotions): Treat bitfield enums as enums, not
2120         as short integer types.
2121         * tree.c (rvalue): Convert bitfields to their correct types.
2123 2006-04-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2125         PR c++/19963
2126         * class.c (layout_class_type): Skip fields with invalid types.
2128 2006-04-23  Mark Mitchell  <mark@codesourcery.com>
2130         PR c++/26912
2131         * cp-tree.h (build_this_parm): Declare.
2132         (grok_method_quals): Remove.
2133         (build_memfn_type): Declare.
2134         (build_artificial_parm): Declare.
2135         (do_friend): Remove quals parameter.
2136         * decl.c (build_this_parm): New function.
2137         (grokfndecl): Use it.  Do not pass quals to grokclassfn.
2138         (grokdeclarator): Rename quals to memfn_quals.  Avoid allocating
2139         unnecessary TYPE_DECLs.  Correct qualification of member function
2140         types.  Tidy.
2141         * method.c (implicitly_declare_fn): Use build_this_parm.
2142         * friend.c (do_friend): Remove quals parameter.
2143         * decl2.c (grok_method_quals): Remove.
2144         (build_memfn_type): New function.
2145         (build_artificial_parm): Give it external linkage.
2146         (grokclassfn): Remove quals parameter.  Do not build "this"
2147         PARM_DECL here.
2149         PR c++/26534
2150         * cp-tree.h (is_bitfield_expr_with_lowered_type): New function.
2151         * typeck.c (is_bitfield_expr_with_lowered_type): New function.
2152         (decay_conversion): Convert bitfield expressions to the correct
2153         type.
2154         (build_modify_expr): Remove spurious conversions.
2155         * class.c (layout_class_type): Modify the type of bitfields to
2156         indicate a limited range.
2157         * call.c (standard_conversion): Adjust the type of bitfield
2158         expressions used in an rvalue context.
2159         (build_conditional_expr): Likewise.
2161 2006-04-22  Kazu Hirata  <kazu@codesourcery.com>
2163         * decl.c: Fix comment typos.
2165 2006-04-21  Eric Christopher  <echristo@apple.com>
2167         * decl.c: Fix typo in function name.
2169 2006-04-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2171         PR c++/26558
2172         * parser.c (cp_parser_class_name): Check for invalid typenames.
2173         Rearrange code.
2175         PR c++/26739
2176         * pt.c (tsubst_friend_function): Return early if
2177         pushdecl_namespace_level fails.
2179         PR c++/26036
2180         * typeck.c (convert_arguments): Return error_mark_node instead of
2181         error_mark_list.
2182         * cp-tree.h (error_mark_list): Remove declaration.
2183         * decl.c (error_mark_list): Remove definition.
2184         (cxx_init_decl_processing): Do not initialize error_mark_list.
2186         PR c++/10385
2187         * rtti.c (build_dynamic_cast_1): Check for invalid conversions
2188         before calling convert_to_reference.
2189         * cvt.c (convert_to_reference): Assert that reftype is a
2190         REFERENCE_TYPE.
2192 2006-04-19  Mark Mitchell  <mark@codesourcery.com>
2194         PR c++/27102
2195         * class.c (currently_open_class): Tidy.
2196         * decl.c (grokdeclarator): If we encounter an erroneous
2197         declarator, assume that we have already issued an error message
2198         and return.  Return error_mark_node instead of NULL_TREE in more
2199         places.  Issue errors about function definitions that do not have
2200         a function declarator.  Check for complete types for all function
2201         definitions.
2202         * cp-tree.h (cp_error_declarator): Remove.
2203         (currently_open_class): Change return type.
2204         * parser.c (cp_parser_id_expression): Add optional_p parameter.
2205         (cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
2206         (cp_parser_id_expression): Likewise.
2207         (cp_parser_unqualified_id): If the name is optional, return
2208         NULL_TREE.
2209         (cp_parser_postfix_dot_deref_expression): Adjust calls.
2210         (cp_parser_type_parameter): Likewise.
2211         (cp_parser_unqualified_id): Likewise.
2212         (cp_parser_direct_declarator): Likewise.
2213         (cp_parser_declarator_id): Add optional_p parameter.
2214         (cp_parser_function_definition_from_specifiers_and_declarator):
2215         Assume that start_function indicates failure only if it has issued
2216         an error.
2217         (cp_parser_omp_var_list_no_open): Adjust calls.
2219 2006-04-17  Janis Johnson  <janis187@us.ibm.com>
2221         PR c++/26114, c++/26115
2222         * typeck.c (cxx_mark_addressable): Restore check for extra_warnings.
2223         * class.c (check_field_decls): Ditto.
2225 2006-04-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2227         * init.c (build_offset_ref): Remove superfluous temporary.
2229 2006-04-16  Mark Mitchell  <mark@codesourcery.com>
2231         PR c++/26365
2232         * typeck.c (finish_class_member_access_expr): Robustify
2234 2006-04-15  Kazu Hirata  <kazu@codesourcery.com>
2236         * Make-lang.in (cp/pt.o): Depend on vecprim.h.
2237         * pt.c: Include vecprim.h.
2238         (inline_parm_levels): Change the type to VEC(int,heap) *.
2239         (inline_parm_levels_used): Remove.
2240         (maybe_begin_member_template_processing,
2241         maybe_end_member_template_processing): Use VEC instead of
2242         VARRAY.
2244         * cp/call.c: Fix comment typos.
2246 2006-04-12  Mark Mitchell  <mark@codesourcery.com>
2248         * parser.c (cp_parser_init_declarator): Initialize local variables
2249         aggressively.
2251 2006-04-12  Roger Sayle  <roger@eyesopen.com>
2253         * parser.c (cp_parser_init_declarator): Initialise
2254         is_parenthesized_init to false to avoid compiler warning.
2256 2006-04-11  Mark Mitchell  <mark@codesourcery.com>
2258         * cp-tree.h (build_operator_new_call): Adjust prototype.
2259         (build_new_method_call): Likewise.
2260         (build_op_delete_call): Likewise.
2261         * init.c (build_raw_new_expr): New function.
2262         (build_new_1): Pass information as parameters, rather than
2263         bundling it into a NEW_EXPR.
2264         (build_new): Adjust accordingly.
2265         (build_vec_delete_1): Adjust for changes to build_op_delete_call.
2266         (build_delete): Likewise.
2267         * decl.c (finish_destructor_body): Likewise.
2268         * call.c (build_operator_new_call): Return the allocation function
2269         used.
2270         (build_op_delete_call): Take allocation function as parameter.
2271         (build_special_member_call): Adjust call to build_new_method_call.
2272         (build_new_method_call): Return function called.
2273         * pt.c (tsubst_copy_and_build): Adjust call to
2274         build_new_method_call.
2275         * semantics.c (finish_call_expr): Likewise.
2276         * parser.c (cp_parser_postfix_expression): Likewise.
2277         * typeck2.c (cxx_incomplete_type_diagnostic): Refer to
2278         "incomplete", not "undefined", types.
2280         PR c++/26295
2281         * decl.c (grokdeclarator): Remove namespace-handling code for
2282         pointers-to-members.
2283         * parser.c (cp_parser_ptr_operator): Check for qualified names
2284         using namespaces.
2286         PR c++/26122
2287         * parser.c (cp_parser_init_declarator): Adjust logic for deciding
2288         whether or not to look for a pure-specifier.
2289         (cp_parser_member_declaration): Likewise.
2291 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
2293         * decl2.c, pt.c, semantics.c: Fix comment typos.
2295 2006-04-06  Roger Sayle  <roger@eyesopen.com>
2297         * call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check.
2299 2006-04-05  Jason Merrill  <jason@redhat.com>
2301         * name-lookup.c (push_namespace_with_attribs): Temporarily disable
2302         default hidden visibility for anonymous namespace.
2304 2006-03-29  Roger Sayle  <roger@eyesopen.com>
2306         PR c++/22494
2307         * init.c (build_vec_delete_1): Convert BASE pointer's type to
2308         the base pointer type to avoid a type mismatch in the EQ_EXPR.
2310 2006-03-24  Carlos O'Donell  <carlos@codesourcery.com>
2312         * search.c (maybe_suppress_debug_info): If
2313         flag_emit_class_debug_always then don't suppress.
2315 2006-03-22  Jason Merrill  <jason@redhat.com>
2317         * name-lookup.c (push_namespace_with_attribs): Only apply hidden
2318         visibility to anonymous namespaces if HAVE_GAS_HIDDEN.
2320 2006-03-21  Jakub Jelinek  <jakub@redhat.com>
2322         PR c++/26691
2323         * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments.
2325 2006-03-21  Jason Merrill  <jason@redhat.com>
2327         PR c++/21581
2328         * parser.c (cp_parser_declaration): Support attributes on
2329         anonymous namespaces.
2330         * name-lookup.c (push_namespace_with_attribs): Anonymous
2331         namespaces default to hidden visibility.
2333 2006-03-20  Jason Merrill  <jason@redhat.com>
2335         PR c++/21764, c++/19238
2336         * decl.c (cp_finish_decl): Call determine_visibility later.
2337         (start_preparsed_function): Likewise.
2338         * cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
2339         (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
2340         * name-lookup.h (struct cp_binding_level): Add has_visibility
2341         bitfield.
2342         * name-lookup.c: Include c-pragma.h.
2343         (push_namespace_with_attribs): Split out from push_namespace.
2344         Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
2345         (leave_scope): Pop visibility if appropriate.
2346         * decl2.c (determine_visibility_from_class): Split out from...
2347         (determine_visibility): ...here.  Handle function scope and
2348         nested classes.
2349         (import_export_decl): Move visibility handling to
2350         determine_visibility_from_class.
2351         * parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
2352         attributes on namespace declarations.
2354 2006-03-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2356         PR c++/6634
2357         * decl.c (grokdeclarator): Do not accept long long double.
2358         Reorganize checks for invalid (combinations of) type modifiers.
2359         Quote modifiers in messages.
2361 2006-03-09  Jason Merrill  <jason@redhat.com>
2363         PR c++/16387, c++/16389
2364         * typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions.
2365         (cxx_sizeof_or_alignof_expr): Split out from here.
2367 2006-03-09  Diego Novillo  <dnovillo@redhat.com>
2369         Merge from gomp-20050608-branch
2371         2006-02-02  Diego Novillo  <dnovillo@redhat.com>
2373                 * decl.c (pop_labels_1): Use appropriate pointer casting.
2374                 (poplevel_named_label_1): Likewise.
2375                 (named_label_entry_hash): Likewise.
2376                 (named_label_entry_eq): Likewise.
2377                 (check_goto): Likewise.
2378                 (define_label): Likewise.
2380         2006-01-26  Diego Novillo  <dnovillo@redhat.com>
2382                 * cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead
2383                 of TREE_BLOCK.
2384                 * pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND
2385                 instead of TREE_CODE/TREE_OPERAND.
2386                 * semantics.c: Likewise.
2387                 * parser.c: Likewise.
2389         2005-11-10  Diego Novillo  <dnovillo@redhat.com>
2391                 * parser.c (cp_parser_omp_threadprivate): Emit diagnostic if
2392                 target does not support TLS.
2394         2005-11-09  Jakub Jelinek  <jakub@redhat.com>
2396                 * decl.c (redeclaration_error_message): Don't error about
2397                 DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P
2398                 (olddecl).
2400         2005-11-08  Jakub Jelinek  <jakub@redhat.com>
2402                 PR c++/24735
2403                 * semantics.c (finish_omp_barrier, finish_omp_flush): New
2404                   functions.
2405                 * parser.c (cp_parser_omp_barrier): Call finish_omp_barrier.
2406                 (cp_parser_omp_flush): Call finish_omp_flush.
2407                 * cp-tree.h (finish_omp_barrier, finish_omp_flush): New
2408                   prototypes.
2410                 PR c++/24734
2411                 * pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED.
2413         2005-11-03  Jakub Jelinek  <jakub@redhat.com>
2415                 * semantics.c (finish_omp_threadprivate): Error on class-scope
2416                 variables.
2418         2005-11-02  Jakub Jelinek  <jakub@redhat.com>
2420                 * parser.c (cp_parser_omp_all_clauses): If some clause
2421                 type is not allowed, don't remove just one of the
2422                 clauses, but all clauses added in that loop round.
2424                 * semantics.c (finish_omp_clauses): Fix function
2425                 comment. Don't handle non-const or mutable specially,
2426                 as const and not mutable is predetermined shared and
2427                 that leads to double error. Don't ICE if copyin var is
2428                 PARM_DECL.
2430                 PR c++/24613
2431                 * parser.c (cp_parser_pragma): Diagnose
2432                 PRAGMA_OMP_SECTION outside of PRAGMA_OMP_SECTIONS
2433                 construct.
2435                 * semantics.c (finish_omp_threadprivate): Error if V
2436                   is automatic variable or has incomplete type.
2438         2005-11-01  Diego Novillo  <dnovillo@redhat.com>
2440                 * parser.c (cp_parser_omp_all_clauses): Use
2441                 OMP_CLAUSE_CHAIN instead of TREE_CHAIN.
2443         2005-11-01  Diego Novillo  <dnovillo@redhat.com>
2445                 * parser.c (cp_parser_omp_all_clauses): When emitting an
2446                 error message, remove the invalid clause from the list.
2448         2005-10-31  Diego Novillo  <dnovillo@redhat.com>
2450                 * parser.c (cp_parser_omp_parallel): Do not allow 'nowait' in
2451                 combined parallel+workshare directives.
2453         2005-10-31  Richard Henderson  <rth@redhat.com>
2455                 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DTOR):
2456                 Use cxx_omp_clause_dtor.
2457                 * cp-tree.h (CP_OMP_CLAUSE_INFO): New.
2458                 (cxx_omp_clause_dtor): New.
2459                 * cp-gimplify.c (cxx_omp_clause_apply_fn): New.
2460                 (cxx_omp_clause_default_ctor): Use it.
2461                 (cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op):
2462                 Likewise.
2463                 (cxx_omp_clause_dtor): New.
2464                 * semantics.c (finish_omp_clauses): Rewrite cdtor
2465                 checking to fill in CP_OMP_CLAUSE_INFO.  Don't
2466                 specialcase LASTPRIVATE for removal.
2467                 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
2468                 cxx_omp_clause_assign_op): Move to cp-gimplify.c.
2470         2005-10-28  Jakub Jelinek  <jakub@redhat.com>
2472                 * semantics.c (finish_omp_threadprivate): If
2473                   DECL_RTL_SET_P, call make_decl_rtl again so that
2474                   encode_section_info can update SYMBOL_REF's flags.
2476         2005-10-26  Jakub Jelinek  <jakub@redhat.com>
2478                 * semantics.c (finish_omp_for): Don't segfault if COND
2479                 or INCR is NULL.  If not calling c_finish_omp_for
2480                 right away and one of COND and INCR is NULL, issue
2481                 error and don't expand anything.
2483                 PR c++/24512
2484                 * cp-tree.h (finish_omp_for): Add PRE_BODY argument.
2485                 * semantics.c (finish_omp_for): Likewise.  Set
2486                 OMP_FOR_PRE_BODY to PRE_BODY if deferring, add it
2487                 into the current statement list if not processing
2488                 template decl or pass it to c_finish_omp_for.
2490                 * parser.c (cp_parser_omp_for_loop): Expand optional DECL_EXPRs
2491                 into PRE_BODY statement list.  Pass it to finish_omp_for.
2492                 * pt.c (tsubst_expr) <case OMP_FOR>: tsubst_expr also
2493                 OMP_FOR_PRE_BODY into PRE_BODY stmt list, pass it to
2494                 finish_omp_for.  Put all the statements into sk_omp
2495                 scope.
2497         2005-10-25  Jakub Jelinek  <jakub@redhat.com>
2499                 PR c++/24516
2500                 * parser.c (struct cp_parser): Rename in_iteration_statement
2501                 field to in_statement.
2502                 (IN_SWITCH_STMT, IN_ITERATION_STMT): Define.
2503                 (IN_OMP_BLOCK, IN_OMP_FOR): Change values.
2504                 (cp_parser_new, cp_parser_begin_omp_structured_block,
2505                 cp_parser_end_omp_structured_block,
2506                 cp_parser_omp_for_loop): Adjust for
2507                 in_iteration_statement renaming.
2508                 (cp_parser_selection_statement): Save
2509                 parser->in_iteration, or it temporarily with
2510                 IN_SWITCH_STMT for the
2511                 cp_parser_implicitly_scoped_statement call.
2512                 (cp_parser_iteration_statement): Adjust for
2513                 in_iteration_statement renaming.  Use
2514                 IN_ITERATION_STMT rather than true.
2515                 (cp_parser_jump_statement): Adjust for
2516                 in_iteration_statement renaming and new values.  Don't
2517                 error on break in a switch statement within OMP_FOR or
2518                 OpenMP structured block.
2520                 PR c++/24513
2521                 * parser.c (cp_parser_cache_group): Don't stop if next
2522                 token is CPP_PRAGMA_EOL and end is CPP_PRAGMA_EOL as
2523                 well.  If current token is CPP_PRAGMA, consume
2524                 everything until CPP_PRAGMA_EOL inclusive.
2526         2005-10-24  Jakub Jelinek  <jakub@redhat.com>
2528                 PR c++/24502
2529                 * semantics.c (finish_omp_for): Handle MODOP_EXPR in
2530                 addition to MODIFY_EXPR.
2532         2005-10-23  Richard Henderson  <rth@redhat.com>
2534                 * cp-gimplify.c (struct cp_gimplify_ctx): Remove.
2535                 (bc_label): New.
2536                 (begin_bc_block, finish_bc_block): Use it.
2537                 (push_context, pop_context): Remove.
2538                 (cp_genericize): Don't use them.  Assert bc_label is null.
2539                 * semantics.c (finish_omp_clauses): Create a fake data
2540                 element of TYPE for probing ctors.
2542         2005-10-23  Richard Henderson  <rth@redhat.com>
2544                 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): New.
2545                 (LANG_HOOKS_OMP_CLAUSE_COPY_CTOR): New.
2546                 (LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP): New.
2547                 (LANG_HOOKS_OMP_CLAUSE_DTOR): New.
2548                 * semantics.c (finish_omp_clauses): Look through
2549                 arrays when looking up special member calls.  Also
2550                 remove FIRSTPRIVATE when LASTPRIVATE fails.
2551                 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor): New.
2552                 (cxx_omp_clause_assign_op): New.
2553                 * cp-tree.h: Declare them.
2555         2005-10-21  Richard Henderson  <rth@redhat.com>
2557                 * decl.c (check_previous_goto_1): Return false if error.
2558                 (check_switch_goto): Likewise.
2559                 (finish_case_label): Don't emit the case label on error.
2560                 * parser.c (struct cp_parser): Revert
2561                 in_switch_statement_p changes.
2562                 (cp_parser_labeled_statement,
2563                 cp_parser_selection_statement): Likewise.
2564                 (cp_parser_begin_omp_structured_block): Don't save...
2565                 (cp_parser_end_omp_structured_block): or restore
2566                 in_switch_statement_p.
2568         2005-10-21  Richard Henderson  <rth@redhat.com>
2570                 * semantics.c (finish_omp_threadprivate): Set
2571                 decl_flags.u2sel when necessary.
2573         2005-10-21  Richard Henderson  <rth@redhat.com>
2575                 * decl.c (poplevel_named_label_1): Restore creation of the
2576                 bad_decls list.
2577                 (decl_jump_unsafe): Check for error_mark_node types.
2578                 (check_goto): Don't check cdtor_label.  Don't use identify_goto.
2579                 * semantics.c (finish_return_stmt): Do check_omp_return before
2580                 converting to cdtor_label goto.
2582         2005-10-21  Richard Henderson  <rth@redhat.com>
2584                 PR c++/24451
2585                 * decl.c (check_omp_return): Return false on error.
2586                 * cp-tree.h (check_omp_return): Update decl.
2587                 * semantics.c (finish_return_stmt): Avoid adding
2588                 return on error.
2590         2005-10-21  Richard Henderson  <rth@redhat.com>
2592                 * cp-tree.h (struct language_function): Remove
2593                 x_named_label_uses.
2594                 Change x_named_labels to a hashtable.
2595                 (check_omp_return): Declare.
2596                 * decl.c (struct named_label_use_entry): Rename from
2597                 named_label_use_list.  Remove label_decl.
2598                 (struct named_label_entry): Rename from
2599                 named_label_list.  Remove old_value and next.  Change
2600                 in_try_scope and in_catch_scope to bool. Add
2601                 in_omp_scope.
2602                 (pop_labels_1): New.
2603                 (pop_labels): Use it.
2604                 (pop_local_label, poplevel_named_label_1): New.
2605                 (poplevel): Use them.
2606                 (named_label_entry_hash, named_label_entry_eq): New.
2607                 (make_label_decl): Create named_labels.  Move label
2608                 creation bits from lookup_label.
2609                 (declare_local_label): Tidy.
2610                 (identify_goto): Split out from ...
2611                 (check_previous_goto_1): Add exited_omp argument.
2612                 Handle omp scopes.
2614                 (use_label): Merge into...
2615                 (check_goto): ... here.  Handle omp scopes.
2616                 (check_omp_return): New.
2617                 (check_previous_gotos): Merge into...
2618                 (define_label): ... here.
2619                 (save_function_data): Remove x_named_label_uses reference.
2620                 (finish_function): Likewise.
2621                 * name-lookup.h (sk_omp): New.
2622                 * name-lookup.c (begin_scope): Handle it.
2623                 * parser.c (cp_parser_omp_for): Don't create extra
2624                 compound stmt.
2626                 (cp_parser_omp_sections): Likewise.
2627                 * semantics.c (finish_return_stmt): Call check_omp_return.
2628                 (begin_omp_structured_block): Use sk_omp.
2629                 (finish_omp_structured_block): Use do_poplevel.  Don't build a
2630                 MUST_NOT_THROW expression here.
2631                 (begin_omp_parallel, finish_omp_parallel): Don't create extra
2632                 compound statements.
2634         2005-10-21  Diego Novillo  <dnovillo@redhat.com>
2636                 PR 24455
2637                 * cp/cp-tree.h (struct lang_decl_flags): Add field
2638                 threadprivate_p.
2639                 (CP_DECL_IS_THREADPRIVATE): Define.
2640                 * cp/semantics.c (finish_omp_threadprivate): Set.  Do
2641                 not error out if CP_DECL_IS_THREADPRIVATE is set
2642                 already.
2643                 * cp/decl.c (duplicate_decls): Merge
2644                 CP_DECL_THREADPRIVATE_P.
2646         2005-10-20  Richard Henderson  <rth@redhat.com>
2648                 * cp-gimplify.c (cp_gimplify_omp_for): New.
2649                 (cp_gimplify_expr): Call it.
2650                 * cp-tree.h (OMP_FOR_GIMPLIFYING_P): New.
2651                 * parser.c (struct cp_parser): Rename
2652                 in_iteration_statement_p to in_iteration_statement and
2653                 change to unsigned char.  Similarly with
2654                 in_switch_statement.  Update all users.
2655                 (IN_OMP_BLOCK, IN_OMP_FOR): New.
2656                 (cp_parser_labeled_statement): Diagnose case labels
2657                 binding closer to an openmp block nested than the
2658                 switch.
2659                 (cp_parser_jump_statement): Diagnose break and
2660                 continue labels binding closer to an openmp block than
2661                 an iteration or switch.
2662                 (cp_parser_omp_for_loop): Mark in_iteration_statement
2663                 for an omp for.
2664                 (cp_parser_begin_omp_structured_block): New.
2665                 (cp_parser_end_omp_structured_block): New.
2666                 (cp_parser_omp_structured_block): Use them.
2667                 (cp_parser_omp_for, cp_parser_omp_sections_scope): Likewise.
2668                 (cp_parser_omp_parallel): Likewise.
2670         2005-10-20  Richard Henderson  <rth@redhat.com>
2672                 * semantics.c (begin_omp_structured_block): New.
2673                 (finish_omp_structured_block): New.
2674                 (begin_omp_parallel, finish_omp_parallel): Use them.
2675                 * parser.c (cp_parser_omp_structured_block): Likewise.
2676                 (cp_parser_omp_for): Likewise.
2677                 (cp_parser_omp_sections_scope): Likewise.
2678                 * cp-tree.h: Declare them.
2680         2005-10-20  Richard Henderson  <rth@redhat.com>
2682                 * parser.c (cp_parser_omp_master): Return the statement.
2683                 (cp_parser_omp_ordered): Likewise.
2684                 (cp_parser_omp_construct): Set the locus for them.
2686         2005-10-19  Richard Henderson  <rth@redhat.com>
2688                 * semantics.c (finish_omp_atomic): Revert to
2689                 uses_template_parms.
2691         2005-10-19  Richard Henderson  <rth@redhat.com>
2693                 * semantics.c (finish_omp_clauses): Avoid
2694                 DECL_THREAD_LOCAL_P on a PARM_DECL.  Remove some
2695                 stub asserts guaranteed to fail.
2697         2005-10-19  Richard Henderson  <rth@redhat.com>
2699                 * cp-tree.h (OMP_ATOMIC_DEPENDENT_P, OMP_ATOMIC_CODE): New.
2700                 (finish_omp_clauses, finish_omp_for, finish_omp_atomic): New.
2701                 * parser.c (cp_parser_omp_clause_copyin): Remove.
2702                 (cp_parser_omp_all_clauses): Use cp_parser_omp_var_list instead.
2703                 Call finish_omp_clauses.
2704                 (cp_parser_omp_clause_if): Don't do error checking here.
2705                 (cp_parser_omp_clause_num_threads): Likewise.
2706                 (cp_parser_omp_clause_schedule): Likewise.
2707                 (cp_parser_omp_atomic): Use finish_omp_atomic.
2708                 (cp_parser_omp_for_loop): Don't discard DECL_EXPR.
2709                 Don't decompose assignment statment here.  Use
2710                 finish_omp_for.
2712                 * pt.c (tsubst_omp_clauses): New.
2713                 (tsubst_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
2714                 OMP_SINGLE, OMP_SECTION, OMP_CRITICAL, OMP_ATOMIC.
2715                 * semantics.c (finish_omp_clauses): New.
2716                 (begin_omp_parallel, finish_omp_parallel): Know Less about the
2717                 internals of the stmt_list stack.
2718                 (finish_omp_for, finish_omp_atomic): New.
2720         2005-10-18  Jakub Jelinek  <jakub@redhat.com>
2722                 * semantics.c (cxx_omp_predetermined_sharing): New function.
2723                 * cp-tree.h (cxx_omp_predetermined_sharing): New prototype.
2724                 * cp-objcp-common.h
2725                 (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
2727         2005-10-18  Richard Henderson  <rth@redhat.com>
2729                 * parser.c (cp_parser_omp_single): Use make_node and accessors
2730                 instead of build.
2732         2005-10-17  Richard Henderson  <rth@redhat.com>
2734                 * parser.c (cp_parser_omp_for_loop): Handle declarations.
2736         2005-10-12  Richard Henderson  <rth@redhat.com>
2738                 * Make-lang.in (CXX_C_OBJS): Add c-omp.o.
2739                 * cp-tree.h (begin_omp_parallel, finish_omp_parallel): Declare.
2740                 (finish_omp_threadprivate): Declare.
2741                 * parser.c (struct cp_lexer): Add in_pragma.
2742                 (cp_lexer_consume_token): Don't consume a PRAGMA_EOL
2743                 when in_pragma.
2744                 (cp_parser_skip_to_closing_parenthesis): Stop at PRAGMA_EOL.
2745                 (cp_parser_skip_to_end_of_statement): Likewise.
2746                 (cp_parser_skip_to_end_of_block_or_statement): Likewise.
2747                 (cp_parser_skip_to_closing_brace): Likewise.
2748                 (cp_parser_skip_to_pragma_eol): Reset in_pragma.
2749                 (cp_parser_require_pragma_eol): New.
2750                 (cp_parser_statement): Add in_compound argument;
2751                 update all callers.
2752                 Restart if a non-statement pragma seen outside a
2753                 compound.
2754                 (cp_parser_statement_seq_opt): Stop at PRAGMA_EOL.
2755                 (cp_parser_declaration_seq_opt): Likewise.
2756                 (cp_parser_member_specification_opt): Likewise.
2757                 (cp_parser_function_definition_after_decl): Likewise.
2758                 (cp_parser_skip_until_found): Likewise.
2759                 (cp_parser_cache_group): Likewise.
2760                 (enum pragma_omp_clause, cp_parser_omp_clause_name,
2761                 check_no_duplicate_clause,
2762                 cp_parser_omp_var_list_no_open,
2763                 cp_parser_omp_var_list, cp_parser_omp_clause_copyin,
2764                 cp_parser_omp_clause_default, cp_parser_omp_clause_if,
2765                 cp_parser_omp_clause_nowait,
2766                 cp_parser_omp_clause_num_threads,
2767                 cp_parser_omp_clause_ordered,
2768                 cp_parser_omp_clause_reduction,
2769                 cp_parser_omp_clause_schedule,
2770                 cp_parser_omp_all_clauses,
2771                 cp_parser_omp_structured_block, cp_parser_omp_atomic,
2772                 cp_parser_omp_barrier, cp_parser_omp_critical,
2773                 cp_parser_omp_flush, cp_parser_omp_for_loop,
2774                 cp_parser_omp_for, cp_parser_omp_master,
2775                 cp_parser_omp_ordered, cp_parser_omp_sections_scope,
2776                 cp_parser_omp_sections, cp_parser_omp_parallel,
2777                 cp_parser_omp_single, cp_parser_omp_threadprivate,
2778                 cp_parser_omp_construct): New.
2779                 (cp_parser_pragma): Handle OpenMP pragmas.
2780                 * semantics.c (finish_omp_threadprivate): New.
2781                 (begin_omp_parallel, finish_omp_parallel): New.
2783         2005-10-11  Richard Henderson  <rth@redhat.com>
2785                 * parser.c (struct cp_token): Add pragma_kind.
2786                 (eof_token): Initialize it.
2787                 (cp_lexer_handle_pragma): Remove.
2788                 (cp_parser_initial_pragma): New.
2789                 (cp_lexer_new_main): Use it.
2790                 (cp_lexer_get_preprocessor_token): Initialize pragma_kind.
2791                 (cp_lexer_print_token): Don't handle CPP_PRAGMA.
2792                 (cp_parser_skip_to_pragma_eol): New.
2793                 (cp_parser_error): Use it.
2794                 (pragma_lex): New.
2796         2005-10-09  Richard Henderson  <rth@redhat.com>
2798                 * lex.c (parse_strconst_pragma): Update for c_lex name change.
2799                 (handle_pragma_java_exceptions): Likewise.
2800                 * parser.c (cp_lexer_new_main): Likewise.
2802         2005-10-06  Richard Henderson  <rth@redhat.com>
2804                 * parser.c (cp_lexer_new_main): Comment out defer_pragmas.
2805                 (cp_lexer_handle_pragma): Comment out
2806                 cpp_handle_deferred_pragma.
2808         2005-10-01  Richard Henderson  <rth@redhat.com>
2810                 * name-lookup.c (lookup_name): Remove prefer_type argument.
2811                 (lookup_name_prefer_type): New function.
2812                 * name-lookup.h (lookup_name_prefer_type): Declare it.
2813                 * decl.c (lookup_and_check_tag): Use it.
2814                 * pt.c (tsubst_friend_class): Likewise. Update for
2815                 lookup_name change.
2816                 (lookup_template_class, tsubst_copy_and_build): Likewise.
2818 2006-03-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2820         PR c++/15759
2821         * tree.c (bot_manip): Don't call mark_used.
2823 2006-03-02  Mike Stump  <mrs@apple.com>
2825         * decl2.c (import_export_decl): Remove redundant call to
2826         targetm.cxx.key_method_may_be_inline ().
2828 2006-03-02  Richard Sandiford  <richard@codesourcery.com>
2830         * decl.c (start_decl): Use have_global_bss_p when deciding
2831         whether to make the decl common.
2833 2006-03-01  Mike Stump  <mrs@apple.com>
2835         PR darwin/25908
2836         * decl2.c (import_export_decl): Fix ABI breakage on darwin.
2838 2006-02-24  Geoffrey Keating  <geoffk@apple.com>
2840         * except.c (expand_start_catch_block): Handle
2841         flag_use_cxa_get_exception_ptr.
2843 2006-02-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2845         PR c++/26291
2846         * decl.c (grok_op_properties): Check for ellipsis in arguments of
2847         operators.
2849 2006-02-20  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
2851         * Make-lang.in (C++): Remove.
2852         (.PHONY): Remove C++.
2854 2006-02-18  Mark Mitchell  <mark@codesourcery.com>
2856         PR c++/26266
2857         * cp-tree.h (cp_finish_decl): Adjust declaration.
2858         (grokbitfield): Likewise.
2859         (finish_static_data_member_decl): Likewise.
2860         * init.c (constant_value_1): Ensure processing_template_decl when
2861         folding non-dependent initializers for static data members of
2862         dependent types.  Return error_mark_node for erroneous
2863         initailizers.
2864         * class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl.
2865         * decl.c (cp_make_fname_decl): Adjust call to cp_finish_decl.
2866         (cp_finish_decl): Add init_const_expr_p parameter.  Set
2867         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
2868         (finish_decl): Adjust call to cp_finish_decl.
2869         (compute_array_index_type): Robustify.
2870         (start_method): Use finish_decl, not cp_finish_decl.
2871         * rtti.c (emit_tinfo_decl): Likewise.
2872         * except.c (initialize_handler_parm): Adjust call to
2873         cp_finish_decl.
2874         (expand_start_catch_block): Likewise.
2875         * cvt.c (build_up_reference): Adjust call to cp_finish_decl.
2876         * pt.c (instantiate_class_template): Adjust call to
2877         finish_static_data_member_decl.
2878         (tsubst_expr): Use finish_decl, not cp_finish_decl.
2879         (instantiate_decl): Adjust call to cp_finish_decl.
2880         * name-lookup.c (pushdecl_top_level_1): Use finish_decl, not
2881         cp_finish_decl.
2882         * decl2.c (finish_static_data_member_decl): Add init_const_expr_p
2883         parameter.
2884         (grokfield): Likewise.
2885         * parser.c (cp_parser_condition): Check for constant initializers.
2886         (cp_parser_init_declarator): Adjust calls to grokfield and
2887         cp_finish_decl.  Don't set
2888         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
2889         (cp_parser_member_declaration): Likewise.
2890         (cp_parser_objc_class_ivars): Likewise.
2892 2006-02-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2894         * call.c (standard_conversion): Return NULL instead of 0.
2895         (build_user_type_conversion_1): Likewise.
2896         (tourney): Likewise.
2897         * decl.c (redeclaration_error_message): Likewise.
2898         * error.c (language_to_string): Likewise.
2900 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2902         * cp-tree.h (warn_hidden): Remove prototype.
2903         * class.c (warn_hidden): Make static.
2905         * cp-tree.h (build_type_conversion): Remove prototype.
2906         * cvt.c (build_type_conversion): Add prototype, make static.
2908         * cp-tree.h (push_tinst_level): Remove prototype.
2909         (pop_tinst_level): Likewise.
2910         * pt.c (push_tinst_level): Add prototype, make static.
2911         (pop_tinst_level): Likewise.
2913 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2915         * decl.c (grokdeclarator): Return NULL_TREE instead of 0.
2916         * typeck.c (unary_complex_lvalue): Likewise.
2918 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2920         * lex.c (parse_strconst_pragma): Return error_mark_node instead of
2921         "(tree)-1" to indicate failure.  Simplify.
2922         (handle_pragma_interface): Test for error_mark_node instead of
2923         "(tree)-1".
2924         (handle_pragma_implementation): Likewise.
2926 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2928         PR c++/26151
2929         * parser.c (cp_parser_decl_specifier_seq): Check for duplicate
2930         decl-specifiers.  Remove extra check for duplicate 'friend'.
2931         * decl.c (grokdeclarator): Remove check for duplicate
2932         decl-specifiers.  Set longlong together with long_p.
2934 2006-02-12  Jason Merrill  <jason@redhat.com>
2936         PR c++/24996
2937         * except.c (build_throw): Add a CLEANUP_POINT_EXPR inside the
2938         TRY_CATCH_EXPR or MUST_NOT_THROW_EXPR.
2940 2006-02-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2942         * class.c (debug_class): Remove extern.
2943         (debug_thunks): Likewise.
2945 2006-02-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2947         * typeck.c (string_conv_p): Don't test for flag_const_strings.
2949 2006-02-08  Jason Merrill  <jason@redhat.com>
2951         PR c++/25979
2952         * cp-gimplify.c (cp_gimplify_expr): Don't call
2953         cp_gimplify_init_expr for MODIFY_EXPRs.
2954         * typeck2.c (split_nonconstant_init_1): Use INIT_EXPR.
2956 2006-02-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2958         PR c++/26071
2959         * decl.c (grokdeclarator): Set dname also for destructor.
2961         PR c++/26070
2962         * decl.c (grokdeclarator): Clear storage_class together with staticp.
2964 2006-02-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2966         * cp-tree.h (tf_warning_or_error): Renamed from tf_warn_or_error.
2967         (cp_build_qualified_type): Propogate renaming.
2968         * call.c (convert_like_real): Likewise.
2969         * cvt.c (cp_convert_to_pointer, convert_to_reference): Likewise.
2970         * decl.c (make_typename_type, grokdeclarator): Likewise.
2971         * pt.c (tsubst_friend_function, instantiate_class_template,
2972         tsubst_default_argument, instantiate_decl,
2973         tsubst_initializer_list, tsubst_enum): Likewise.
2974         * semantics.c (finish_template_type): Likewise.
2975         * typeck.c (build_ptrmemfunc, convert_for_assignment): Likewise.
2977 2006-02-07  Dirk Mueller  <dmueller@suse.com>
2979         * typeck.c (build_binary_op): Annotate div-by-zero
2980         warnings to make -Wno-div-by-zero have an effect.
2982 2006-02-07  Mark Mitchell  <mark@codesourcery.com>
2984         PR c++/9737
2985         * pt.c (coerce_template_template_parms): Do not templates with
2986         excess default arguments to match template template parameters
2987         with fewer parameters.
2988         (coerce_template_parms): Add use_default_args parameter; use
2989         default arguments only when true.
2990         (lookup_template_class): Adjust call to coerce_template_parms.
2991         (fn_type_unification): Likewise.
2992         (unify): Likewise.
2993         (get_bindings): Likewise.
2994         (dependent_type_p): Add assertions.
2996 2006-02-06  Roger Sayle  <roger@eyesopen.com>
2998         * decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE.
2999         * rtti.c (typeinfo_in_lib_p): Likewise.
3000         * cp-tree.h (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P): Likewise.
3001         * name-lookup.c (arg_assoc_type): Likewise.
3003 2006-02-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3005         * cp-tree.h (tf_warn_or_error): New substituion flag.
3006         (cp_build_qualified_type): Use it.
3007         * call.c (convert_like_real): Likewise.
3008         * cvt.c (cp_convert_to_pointer): Likewise.
3009         (convert_to_reference): Likewise.
3010         * decl.c (make_typename_type): Likewise.
3011         (grokdeclarator): Likewise.
3012         * pt.c (tsubst_friend_function): Likewise.
3013         (tsubst_friend_class): Likewise.
3014         (instantiate_class_template): Likewise.
3015         (tsubst_default_argument): Likewise.
3016         (instantiate_decl): Likewise.
3017         (tsubst_initializer_list): Likewise.
3018         (tsubst_enum): Likewise.
3019         * semantics.c (finish_template_type): Likewise.
3020         * typeck.c (build_ptrmemfunc): Likewise.
3021         (convert_for_assignment): Likewise.
3023 2006-02-03  Lee Millward  <lee.millward@gmail.com>
3025         * typeck.c (string_conv_p): Pass appropiate
3026         OPT_Wxxxx values when calling warning().
3027         (build_array_ref, cxx_mark_addressable): Likewise.
3028         (check_return_expr): Likewise.
3030         * init.c (perform_member_init): Likewise.
3031         (sort_mem_initializers, emit_mem_initializers): Likewise.
3033         * class.c (check_field_decls): Likewise.
3034         (warn_about_ambiguous_bases): Likewise.
3036         * decl.c (pop_label, poplevel): Likewise.
3037         (duplicate_decls, grok_op_properties): Likewise.
3038         (start_preparsed_function, finish_function): Likewise.
3040         * name-lookup.c (pushdecl_maybe_friend): Likewise.
3041         (pushdecl_maybe_friend): Likewise.
3043         * parser.c (cp_parser_warn_min_max): Likewise.
3044         (cp_parser_cast_expression): Likewise.
3046         * method.c (lazily_declare_fn): Likewise.
3047         * cvt.c (convert_to_void): Likewise.
3048         * mangle.c (finish_mangling): Likewise.
3049         * cp-gimplify.c (gimplify_expr_stmt): Likewise.
3051 2006-02-03  Mark Mitchell  <mark@codesourcery.com>
3053         * name-lookup.c (do_class_using_decl): Use IDENTIFIER_TYPENAME_P,
3054         not IDENTIFIER_OPNAME_P.
3056 2006-01-31  Mark Mitchell  <mark@codesourcery.com>
3058         PR c++/25342
3059         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Revise
3060         documentation.
3061         * pt.c (determine_specialization): Use INNERMOST_TEMPLATE_PARMS,
3062         not TREE_VALUE.
3063         (instantiate_class_template): Simplify.
3064         (verify_class_unification): Remove.
3065         (unify): Document parameters.  Use INNERMOST_TEMPLATE_ARGS to
3066         permit multiple levels of template arguments.
3067         (more_specialized_class): Simplify.
3068         (get_class_bindings): Pass full arguments to unify.  Fold
3069         verify_class_unification into this function.  Return full
3070         arguments.
3071         (most_specialized_class): Adjust for changes to
3072         get_class_bindings.  Issue errors here for ambiguity.  Return the
3073         fully deduced arguments for the most specialized class, in
3074         addition to the partial specialization.
3076 2006-01-31  Ben Elliston  <bje@au.ibm.com>
3078         * mangle.c: Comment fix.
3080 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3082         * Make-lang.in (cp-warn): Include CXX_COMPAT_WARN.
3083         * repo.c (extract_string, afgets): Use cast when converting from
3084         void *.
3086 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3088         * call.c (alloc_conversion): Use cast when converting from void *.
3089         (alloc_conversions): Likewise.
3090         (add_candidate): Likewise.
3091         (print_z_candidates): Likewise.
3092         (add_warning): Likewise.
3093         * pt.c (retrieve_local_specialization): Likewise.
3094         (process_partial_specialization): Likewise.
3095         (mangle_class_name_for_template): Likewise.
3096         (tsubst_template_args): Likewise.
3097         * typeck2.c (pat_calc_hash): Likewise.
3098         (pat_compare): Likewise.
3099         (abstract_virtuals_error): Likewise.
3100         * class.c (method_name_cmp): Likewise.
3101         (resort_method_name_cmp): Likewise.
3102         (get_vfield_name): Likewise.
3103         * decl2.c (generate_ctor_and_dtor_functions_for_priority): Likewise.
3104         * lex.c (init_reswords): Likewise.
3105         * rtti.c (create_pseudo_type_info): Likewise.
3106         * search.c (dfs_lookup_base): Likewise.
3107         (dfs_dcast_hint_pre): Likewise.
3108         (dfs_dcast_hint_post): Likewise.
3109         * tree.c (hash_tree_cons): Likewise.
3110         * repo.c (extract_string): Likewise.
3111         (afgets): Likewise.
3112         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Likewise.
3113         * g++spec.c (lang_specific_driver): Likewise.
3115 2006-01-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3117         * call.c (joust): Pass option code to warning.  Use inform for
3118         explanation.
3119         * class.c (check_bases): Likewise.
3120         (maybe_warn_about_overly_private_class): Likewise.
3121         (check_field_decls): Likewise.
3122         (layout_empty_base): Likewise.
3123         (layout_virtual_bases): Likewise.
3124         (layout_class_type): Likewise.
3126 2006-01-28  Mark Mitchell  <mark@codesourcery.com>
3128         PR c++/25999
3129         * decl.c (start_preparsed_function): Call maybe_apply_pragma_weak
3130         here, not ...
3131         (start_function): ... here.
3133 2006-01-28  Mark Mitchell  <mark@codesourcery.com>
3135         PR c++/25855
3136         * class.c (resolve_address_of_overloaded_function): Adjust use of
3137         return value from most_specialized_instantiation.
3138         * pt.c (determine_specialization): Avoid multiple calls to
3139         get_bindings.
3140         (most_specialized_instantiation): When a tie occurs, set the
3141         current presumed champion to the next template.  Return the
3142         TREE_LIST node containing the template, rather than the template
3143         itself.
3144         (most_specialized): Remove.
3145         * name-lookup.c (push_overloaded_decl): When duplicate_decls
3146         indicates a failed redeclaration, report that to callers.
3148 2006-01-26  Jason Merrill  <jason@redhat.com>
3150         PR c++/16021
3151         * name-lookup.c (parse_using_directive): Require strong using to
3152         name a nested namespace.
3154 2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3156         Revert:
3157         * cp-tree.h (do_poplevel): Remove prototype.
3158         * semantics.c (do_poplevel): Add prototype.  Make static.
3160         Revert:
3161         * cp-tree.h (default_conversion): Remove prototype.
3162         * typeck.c (default_conversion): Make static.
3164 2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3166         * cp-tree.h (get_primary_binfo): Remove prototype.
3167         (push_using_decl): Likewise.
3168         (current_template_args): Likewise.
3169         (more_specialized_class): Likewise.
3170         (mark_class_instantiated): Likewise.
3171         (default_conversion): Likewise.
3172         (pfn_from_ptrmemfunc): Likewise.
3173         * class.c (get_primary_binfo): Add prototype, make static, simplify.
3174         * name-lookup.c (push_using_decl): Make static.
3175         * pt.c (current_template_args): Likewise.
3176         (more_specialized_class): Likewise.
3177         (mark_class_instantiated): Likewise.
3178         * typeck.c (default_conversion): Make static.
3179         (pfn_from_ptrmemfunc): Add prototype, make static.
3181 2006-01-24  Dirk Mueller  <dmueller@suse.de>
3183         * typeck.c (build_binary_op): Use OPT_Wfloat_equal in warning().
3185 2006-01-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3187         PR c++/25552
3188         * parser.c (cp_parser_unqualified_id): Check that destructor name
3189         and scope match.
3190         * call.c (check_dtor_name): Do not expect a BIT_NOT_EXPR.
3191         Adjust comment.  Return early if possible.
3192         Use same_type_p to compare types.
3193         * typeck.c (lookup_destructor): Adjust call to check_dtor_name.
3195 2006-01-24  Mark Mitchell  <mark@codesourcery.com>
3197         * semantics.c: Remove outdated comment.
3199 2006-01-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3201         * cp-tree.h (do_poplevel): Remove prototype.
3202         * semantics.c (do_poplevel): Add prototype.  Make static.
3204         * cp-tree.h (original_type): Remove prototype.
3205         * typeck.c (original_type): Make static.
3207         * cp-tree.h (declare_global_var): Remove prototype.
3208         * decl.c (declare_global_var): Make static.
3210         * cp-tree.h (implicitly_declare_fn): Remove prototype.
3211         * method.c (implicitly_declare_fn): Make static.
3213         * cp-tree.h (fold_decl_constant_value): Remove prototype.
3214         * pt.c (fold_decl_constant_value): Make static.
3216         * cp-tree.h (build_x_delete): Remove prototype.
3217         * init.c (build_vec_delete_1): Call build_op_delete_call directly
3218         and not via build_x_delete.
3219         (build_x_delete): Remove.
3221         * cp-tree.h (get_vtt_name): Remove prototype.
3222         * class.c (get_vtt_name): Remove.
3223         (build_vtt): Call mangle_vtt_for_type instead of get_vtt_name.
3225 2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3227         * rtti.c (build_dynamic_cast): Fix comment.
3229 2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3231         PR c++/10891
3232         * rtti.c (build_dynamic_cast): Reject dynamic_cast use if
3233         -fno-rtti.
3235 2006-01-21  Mark Mitchell  <mark@codesourcery.com>
3237         PR c++/25895
3238         * class.c (build_base_path): Generate a NOP_EXPR instead of a
3239         COMPONENT_REF if the base and derived classes are at the same
3240         address.
3242         PR c++/25856
3243         * decl.c (begin_destructor_body): Robustify.
3245         PR c++/25858
3246         * parser.c (cp_parser_direct_declarator): Robustify.
3248 2006-01-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3250         * parser.c (cp_lexer_next_token_is_keyword): Simplify.
3252         * parser.c (clear_decl_specs): Remove prototype.
3254         * parser.c (cp_parser_expression_fn): Remove.
3256         * call.c (add_builtin_candidates): Remove superfluous return.
3257         * name-lookup.c (do_toplevel_using_decl): Likewise.
3258         * parser.c (cp_parser_type_specifier_seq): Likewise.
3259         (cp_parser_save_default_args): Likewise.
3261 2006-01-20  Dirk Mueller  <dmueller@suse.com>
3263         PR c++/5520
3264         * semantics.c (finish_if_stmt): Call empty_body_warning.
3265         * parser.c (cp_parser_implicitly_scoped_statement):
3266         Mark empty statement with an empty stmt.
3268 2006-01-19  Mark Mitchell  <mark@codesourcery.com>
3270         PR c++/22136
3271         * name-lookup.c (do_class_using_decl): Don't try to look up base
3272         classes in templates with dependent base types.
3274 2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3276         PR c++/25854
3277         * pt.c (maybe_process_partial_specialization): Return early on
3278         error_mark_node.
3280 2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3282         PR c++/16829
3283         * decl.c (start_preparsed_function): Check default arguments
3284         unconditionally.
3285         * name-lookup.c (pushdecl_maybe_friend): Check default arguments
3286         of all functions and function templates.
3287         * parser.c (cp_parser_late_parsing_default_args): Check default
3288         arguments.
3289         * decl2.c (check_default_args): Set missing default arguments to
3290         error_mark_node.
3292 2006-01-18  Mark Mitchell  <mark@codesourcery.com>
3294         PR c++/25836
3295         * cp-tree.h (push_class_stack): New function.
3296         (pop_class_stack): Likewise.
3297         * class.c (class_stack_node): Add hidden field.
3298         (pushclass): Clear it.
3299         (push_class_stack): New function.
3300         (pop_class_stack): Likewise.
3301         (currently_open_class): Ignore hidden classes.
3302         (currently_open_derived_class): Likewise.
3303         * name-lookup.c (push_to_top_level): Call push_class_stack.
3304         (pop_from_top_level): Call pop_class_stack.
3306 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
3308         * tree.c (find_tree_t, find_tree): Remove.
3309         * cp-tree.h: Remove the prototype for find_tree.
3311 2006-01-18  Jakub Jelinek  <jakub@redhat.com>
3313         * search.c (lookup_conversions_r): Fix a pasto.
3315 2006-01-17  Eric Christopher  <echristo@apple.com>
3317         * call.c (convert_like_real): When issuing conversion
3318         warnings, depend on OPT_Wconversion.
3319         * cvt.c (build_expr_type_conversion): Ditto.
3321 2006-01-17  Kazu Hirata  <kazu@codesourcery.com>
3323         * name-lookup.c (lookup_namespace_name): Remove.
3324         * name-lookup.h: Remove the prototype for
3325         lookup_namespace_name.
3327 2006-01-17  Jakub Jelinek  <jakub@redhat.com>
3329         PR c/25682
3330         * decl.c (compute_array_index_type): After issuing not an integral
3331         constant-expression error, set size to 1 to avoid ICEs later on.
3333 2006-01-16  Ian Lance Taylor  <ian@airs.com>
3335         * parser.c: Include "cgraph.h".
3336         (cp_parser_asm_definition): Call cgraph_add_asm_node rather than
3337         assemble_asm.
3339 2006-01-16  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
3341         * g++spec.c (lang_specific_spec_functions): Remove.
3343 2006-01-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3345         * decl.c (check_initializer): Fix thinko.
3347 2006-01-14  Mark Mitchell  <mark@codesourcery.com>
3349         PR c++/25663
3350         * parser.c (cp_parser_direct_declarator): Use cp_parser_error
3351         instead of error.
3353 2006-01-13  Jason Merrill  <jason@redhat.com>
3355         * pt.c (check_explicit_specialization): Use CP_DECL_CONTEXT even more.
3357         * name-lookup.c (set_decl_namespace): Use CP_DECL_CONTEXT.
3358         * pt.c (check_explicit_specialization): Likewise.
3360 2006-01-12  Jason Merrill  <jason@redhat.com>
3362         PR libstdc++/24660
3363         * pt.c (check_explicit_specialization): Handle namespace
3364         association.
3365         * name-lookup.c (set_decl_namespace): Likewise.
3367 2006-01-12  Nathan Sidwell  <nathan@codesourcery.com>
3369         PR c++/24824
3370         * class.c (handle_using_decl): Pass correct scope to
3371         cp_emit_debug_info_for_using.
3373 2006-01-11  Nathan Sidwell  <nathan@codesourcery.com>
3375         PR c++/25386
3376         * tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
3377         packedness.
3379 2006-01-06  Gabriel Dos Reis  <gdr@integrablesolutions.net>
3381         * parser.c (cp_parser_primary_expression): Document the grammar
3382         for the built-in offsetof, a GNU extension.
3384 2006-01-04  Zdenek Dvorak <dvorakz@suse.cz>
3386         PR c++/25632
3387         * init.c (constant_value_1): Unshare use of DECL_INITIAL.  Fix a typo
3388         in condition.
3390 2006-01-04  Chris Lattner  <sabre@gnu.org>
3392         * typeck2.c: update copyright to 2006
3393         (split_nonconstant_init_1):  Set TREE_CONSTANT to true.
3395 2006-01-04  Mark Mitchell  <mark@codesourcery.com>
3397         PR c++/24782
3398         * parser.c (cp_parser_nested_name_specifier_opt): Preserve access
3399         checks, even when parsing tentatively.
3401 2006-01-04  Richard Henderson  <rth@redhat.com>
3403         Merge from gomp branch.
3404         * lex.c (handle_pragma_java_exceptions): Fix whitespace.
3405         * parser.c (struct cp_token): Add pragma_kind.
3406         (eof_token): Update to match.
3407         (struct cp_lexer): Add in_pragma; rearrange next for better packing.
3408         (cp_parser_initial_pragma): New.
3409         (cp_lexer_new_main): Use it.  Don't bother clearing
3410         c_lex_return_raw_strings.
3411         (cp_lexer_get_preprocessor_token): Always initialize keyword
3412         and pragma_kind fields.  Handle CPP_PRAGMA.
3413         (cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when
3414         in_pragma is set.
3415         (cp_lexer_handle_pragma): Remove.  Update callers to cp_parser_pragma.
3416         (cp_lexer_print_token) <CPP_PRAGMA>: Don't print as a string.
3417         (cp_parser_skip_to_pragma_eol): New.
3418         (cp_parser_error): Use it.
3419         (cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL;
3420         rearrange with switch statement.
3421         (cp_parser_skip_to_end_of_statement): Likewise.
3422         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
3423         (cp_parser_skip_to_closing_brace): Likewise.
3424         (cp_parser_skip_until_found): Likewise.
3425         (cp_parser_statement): Add in_compound argument; update callers.
3426         Use it to decide how to handle pragma parsing.
3427         (cp_parser_labeled_statement): Add in_compound argument; pass
3428         it on to cp_parser_statement.
3429         (cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL.
3430         (cp_parser_declaration_seq_opt): Likewise.
3431         (cp_parser_parameter_declaration): Likewise.
3432         (cp_parser_member_specification_opt): Likewise.
3433         (cp_parser_function_definition_after_decl): Likewise.
3434         (cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs.
3435         (cp_parser_pragma): New.
3436         (pragma_lex): New.
3438 2006-01-04  Dirk Mueller <dmueller@suse.com>
3440         * decl.c (finish_constructor_body): create simple
3441         compound stmt instead of a if(1) { } construct.
3443 2006-01-03  Mark Mitchell  <mark@codesourcery.com>
3445         PR c++/25492
3446         * name-lookup.c (push_class_level_binding): When a derived class
3447         provides a type binding, eliminate any type binding from a base
3448         class.
3450         PR c++/25625
3451         * repo.c (repo_emit_p): Always instantiate static data members
3452         initialized by constant expressions, so that there values are
3453         available.
3455 2006-01-02  Mark Mitchell  <mark@codesourcery.com>
3457         PR c++/25635
3458         * class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a
3459         conversion operator.
3460         * decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here.
3462         PR c++/25638
3463         * class.c (add_method): Never associate more than one destructor
3464         with a single class.
3466         PR c++/25637
3467         * cp-tree.h (do_friend): Adjust prototype.
3468         * decl.c (grokfndecl): Make funcdef_flag a bool, not an int.
3469         (grokdeclarator): Likewise.  Refine check for invalid
3470         declarations/definitions of member functions outside of their own
3471         class.
3472         * friend.c (do_friend): Make funcdef_flag a bool, not an int.
3474         PR c++/25633
3475         * parser.c (cp_parser_mem_initializer_list): Check result of
3476         cp_parser_mem_initializer against error_mark_node, not NULL_TREE.
3477         (cp_parser_mem_initializer): Return error_mark_node for failure.
3479         PR c++/25634
3480         * parser.c (cp_parser_template_parameter_list): Call
3481         begin_template_parm_list and end_template_parm_list here.
3482         (cp_parser_type_parameter): Not here.
3483         (cp_parser_template_declaration_after_export): Or here.
3484         (cp_parser_elaborated_type_specifier): Call
3485         cp_parser_check_template_parameters.
3487         * tree.c (build_target_expr_with_type): Use force_target_expr.
3489         * decl2.c (mark_used): Fix typo in comment.
3491 2006-01-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3493         * parser.c (cp_parser_using_declaration): Skip name-lookup on
3494         invalid scope.
3498 Copyright (C) 2006 Free Software Foundation, Inc.
3500 Copying and distribution of this file, with or without modification,
3501 are permitted in any medium without royalty provided the copyright
3502 notice and this notice are preserved.