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