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