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