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