2007-02-12 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
[official-gcc.git] / gcc / cp / ChangeLog
blob95bcd26cac74c1ec6085eaacf131320c2917495a
1 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3         PR middle-end/7651
4         * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
5         Check warn_unused_value just once.
7 2007-02-11  Mark Mitchell  <mark@codesourcery.com>
9         PR c++/26988
10         * pt.c (determine_specialization): Use skip_artificial_parms_for.
11         (fn_type_unificiation): Likewise.
12         (get_bindings): Likewise.
14 o2007-02-06  Mark Mitchell  <mark@codesourcery.com>
16         PR target/29487
17         * decl.c (finish_function): Use DECL_REPLACEABLE.
18         * tree.c (cp_cannot_inline_tree_fn): Likewise.
20 2007-02-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
22         * parser.c (cp_parser_primary_expression): Reformat overly long lines.
24 2007-02-10  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>
26         * decl.c (grokvardecl): Don't error if !have_tls.
27         (grokdeclarator): Likewise.
28         * parser.c (cp_parser_omp_threadprivate): Likewise.
30 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
32         PR c++/30703
33         * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
34         parameters and result decls in omp clauses.
35         (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
36         by reference.
38 2007-02-05  Dirk Mueller  <dmueller@suse.de>
40         PR bootstrap/30510
41         * parser.c (cp_parser_class_specifier): Always initialize bases.
43 2007-02-05  Paolo Bonzini  <bonzini@gnu.org>
45         * cp-tree.h (OMP_ATOMIC_CODE): Delete.
46         (OMP_ATOMIC_DEPENDENT_P): Rewrite.
47         * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
48         expressions.
49         * semantics.c (finish_omp_atomic): Store a whole expression node
50         in operand 1, and integer_zero_node in operand 0, for dependent
51         OMP_ATOMIC.  Rewrite to make flow easier to understand.
53 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
55         * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
57 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
59         * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
60         parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
62 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
64        * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
65        keyword warning to -Wc++0x-compat.
66         
67 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
69         * decl.c (grokdeclarator): Update documentation.
71 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
73         PR c++/30536
74         * decl.c (grokdeclarator): If __thread is used together with
75         a storage class other than extern and static, clear thread_p
76         after issuing diagnostics and fall through to checking the
77         storage class.
79 2007-01-30  Roger Sayle  <roger@eyesopen.com>
81         * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
82         calculating the size of an array (to avoid recursive errors).
84 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
86         PR c++/24745
87         * typeck.c (build_binary_op): Fix logic for warning. Move warning
88         to -Wpointer-arith.
89         * call.c (convert_like_real): Don't warn when converting to
90         boolean type.
91         
92 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
94         * decl.c (pop_label): Replace warning with call to
95         warn_for_unused_label.
97 2007-01-28  Andrew Pinski  <pinskia@gmail.com>
99         PR C++/28988
100         * semantics.c (finish_pseudo_destructor_expr): Check the
101         destrutor name by calling check_dtor_name.
103 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
105         * lex.c (D_CPP0X): Rename.
106         (D_CXX0X): To this.
107         (reswords): D_CPP0X -> D_CXX0X.
108         (init_reswords): Ditto.
109         * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
110         of C++0x keywords as identifiers.
112 2007-01-23  Simon Martin  <simartin@users.sourceforge.net>
114         PR c++/27492
115         * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
116         function decls.
118 2007-01-23  Ian Lance Taylor  <iant@google.com>
120         * typeck.c (convert_for_assignment): Only warn about a = b = c
121         when converting to bool.
123 2007-01-23  Roger Sayle  <roger@eyesopen.com>
125         * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
126         TREE_OVERFLOW.
127         * typeck.c (ignore_overflows): Remove the remaining uses of
128         TREE_CONSTANT_OVERFLOW.
130 2007-01-20  Jan Hubicka  <jh@suse.cz>
132         * decl2.c (start_objects, start_static_storage_duration_function):
133         Do not make the functions uninlinable.
135 2007-01-17  Ian Lance Taylor  <iant@google.com>
137         * class.c (add_method): Call VEC_reserve_exact rather than passing
138         a negative size to VEC_reserve.
140 2007-01-11  Simon Martin  <simartin@users.sourceforge.net>
142         PR c++/29573
143         * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
145 2007-01-10  Mark Mitchell  <mark@codesourcery.com>
147         PR c++/28999
148         * decl.c (make_typename_type): If the qualified name is not a
149         type, issue an error.
150         * parser.c (cp_parser_elaborated_type_specifier): Fix comment
151         formatting.
153 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
155         * rtti.c: Include target.h.
156         (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
157         don't emit typeinfo for fundamental types as weak.
158         * Make-lang.in (cp/rtti.o): Update and correct dependencies.
160 2007-01-08  Richard Guenther  <rguenther@suse.de>
162         * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
164 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
166         * call.c (standard_conversion): Pass flag to
167         vector_types_convertible_p to disallow emission of note.
168         * typeck.c (convert_for_assignment): Pass flag to
169         vector_types_convertible_p to allow emission of note.
170         (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
171         to disallow emission of note.
173 2007-01-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
175         PR c++/28986
176         * typeck.c (build_binary_op): Call overflow_warning if
177         TREE_OVERFLOW_P is true for the result and not for any of the
178         operands.
179         
180 2007-01-06  Lee Millward  <lee.millward@codesourcery.com>
182        PR c++/19439
183        * class.c (add_method): Don't wait until template
184        instantiation time to complain about duplicate methods.
185         
186 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
188         PR c/19978
189         * semantics.c (finish_unary_op_expr): Warn only if result
190         overflowed and operands did not.
192 2007-01-05  Ian Lance Taylor  <iant@google.com>
194         * typeck.c (build_binary_op): Warn about comparing a non-weak
195         address to NULL.
197 2007-01-05  Douglas Gregor  <doug.gregor@gmail.com>
199         * pt.c (tsubst): Propagate the need for structural equality checks
200         when reducing the level of template parameters.
202 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
204         * pt.c: Fix a comment typo.
206 2006-01-02  Ian Lance Taylor  <iant@google.com>
208         * semantics.c (maybe_convert_cond): Optionally warn when using an
209         assignment as a condition.
210         * typeck.c (convert_for_assignment): Optionally warn about
211         assigning the result of an assignment to a bool.
213 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
215         * pt.c (canonical_template_parms): Correct typo in comment.
216         
217 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
219         * typeck.c (structural_comptypes): Renamed from "comptypes".
220         (comptypes): Use canonical type information to perform fast type
221         comparison. When VERIFY_CANONICAL_TYPES, verify that the
222         canonical type comparison returns the same results as we would see
223         from the current, structural check. Support COMPARE_STRUCTURAL
224         when we need structural checks.
225         * decl.c (typename_compare): Fix comment.
226         (build_typename_type): TYPENAME_TYPE nodes require structural
227         equality checks, because they resolve different based on the
228         current class type.
229         (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
230         require structural equality checks (for now).
231         (build_ptrmemfunc_type): Build the canonical pointer to member
232         function type.
233         (compute_array_index_type): Whenever we build a new index type
234         to represent the size of an array in a template, we need to mark
235         this index type as requiring structural equality. This goes for
236         arrays with value-dependent sizes with the current ABI, or all
237         arrays with ABI-1.
238         * tree.c (cplus_array_hash): New.
239         (struct cplus_array_info): New.
240         (cplus_array_compare): New.
241         (cplus_array_htab): New.
242         (build_cplus_array_type_1): Use a hash table to cache the array
243         types we build. Build the canonical array type for each array
244         type.
245         (cp_build_qualified_type_real): When building a cv-qualified array
246         type, use the hash table of array types and build canonical array
247         types as necessary.
248         (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
249         use structural equality (for now).
250         * cp-tree.h (COMPARE_STRUCTURAL): New.
251         * pt.c (canonical_template_parms): New.
252         (canonical_type_parameter): New.
253         (process_template_parm): Find the canonical type parameter.
254         (lookup_template_class): When we have named the primary template
255         type, set the canonical type for our template class to the primary
256         template type. If any of the template arguments need structural
257         equality checks, the template class needs structural equality
258         checks.
259         (tsubst): When reducing the level of a template template
260         parameter, we require structural equality tests for the resulting
261         parameter because its template parameters have not had their types
262         canonicalized. When reducing a template type parameter, find the
263         canonical reduced type parameter.
264         (any_template_arguments_need_structural_equality_p): New.
266 2006-12-31  Simon Martin  <simartin@users.sourceforge.net>
268         PR c++/29731
269         * parser.c (cp_parser_primary_expression): Return error_mark_node when
270         a statement-expression is found outside of a function body.
272 2006-12-28  Kazu Hirata  <kazu@codesourcery.com>
274         * cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P):
275         Remove.
277         * decl2.c: Fix a comment typo.
279 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
281         PR C++/30225
282         * decl.c (cxx_builtin_function): Only copy the decl if adding
283         it to the std namespace.
285 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
287         PR C++/30168
288         * optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.
290 2006-12-22  Kazu Hirata  <kazu@codesourcery.com>
292         * decl.c: Fix a coment typo.
294 2006-12-18  Ian Lance Taylor  <iant@google.com>
296         * decl.c (start_preparsed_function): Add support for
297         -Wmissing-declarations.
299 2006-12-16  Simon Martin  <simartin@users.sourceforge.net>
301         PR c++/29475
302         * cp-tree.h (struct deferred_access_check): New structure to represent a
303         deferred access check. It replaces the previous representation as a tree.
304         (get_deferred_access_checks): Return a vector of struct
305         deferred_access_check instead of a tree list.
306         (perform_access_checks): Take a vector of struct deferred_access_check
307         instead of a tree list.
308         * semantics.c (struct deferred_access): Store the deferred access checks
309         as a vector of struct deferred_access_check instead of a tree list.
310         (push_deferring_access_checks): Handle the change in struct
311         deferred_access.
312         (get_deferred_access_checks): Likewise.
313         (pop_to_parent_deferring_access_checks): Likewise.
314         (perform_or_defer_access_check): Likewise.
315         (perform_access_checks): Take a vector of struct deferred_access_check
316         instead of a tree list.
317         * parser.c (struct tree_check): New structure to store various data
318         associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token.
319         (struct cp_token): Changed the value field to be a union with a pointer to
320         a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID
321         tokens and a tree field for all other tokens.
322         (eof_token): Adjusted due to the change in struct cp_token.
323         (cp_lexer_get_preprocessor_token): Likewise.
324         (cp_lexer_purge_token): Likewise.
325         (cp_lexer_purge_tokens_after): Likewise.
326         (cp_lexer_print_token): Likewise.
327         (cp_parser_error): Likewise.
328         (cp_parser_identifier): Likewise.
329         (cp_parser_string_literal): Likewise.
330         (cp_parser_primary_expression): Likewise.
331         (cp_parser_unqualified_id): Likewise.
332         (cp_parser_parenthesized_expression_list): Likewise.
333         (cp_parser_storage_class_specifier_opt): Likewise.
334         (cp_parser_function_specifier_opt): Likewise.
335         (cp_parser_type_specifier): Likewise.
336         (cp_parser_simple_type_specifier): Likewise.
337         (cp_parser_initializer_list): Likewise.
338         (cp_parser_member_specification_opt): Likewise.
339         (cp_parser_attribute_list): Likewise.
340         (cp_parser_objc_expression): Likewise.
341         (cp_parser_objc_protocol_qualifiers): Likewise.
342         (cp_parser_objc_selector): Likewise.
343         (cp_parser_objc_declaration): Likewise.
344         (cp_parser_objc_statement): Likewise.
345         (cp_parser_omp_clause_name): Likewise.
346         (cp_parser_omp_clause_default): Likewise.
347         (cp_parser_omp_clause_schedule): Likewise.
348         (cp_parser_omp_parallel): Likewise.
349         (cp_parser_initial_pragma): Likewise.
350         (pragma_lex): Likewise.
351         (cp_parser_pre_parsed_nested_name_specifier): Likewise.
352         (cp_parser_nested_name_specifier_opt): Likewise.
353         Use cp_token::u::tree_check_value to save the token's value, the
354         associated deferred checks and its qualifying scope.
355         (cp_parser_template_id): Likewise.
356         (cp_parser_template_declaration_after_export): Adjusted the call to
357         get_deferred_access_checks.
358         (cp_parser_init_declarator): Take the access checks as a vector of struct
359         deferred_access_check instead of a tree list.
360         (cp_parser_single_declaration): Likewise.
361         (cp_parser_perform_template_parameter_access_checks): Likewise.
362         (cp_parser_simple_declaration): Adjusted the call to
363         cp_parser_init_declarator.
364         (cp_parser_explicit_specialization): Adjusted the call to
365         cp_parser_single_declaration.
367 2006-12-13  Ian Lance Taylor  <iant@google.com>
369         PR c++/19564
370         PR c++/19756
371         * parser.c (cp_parser_expression_stack_entry): Add field
372         lhs_type.
373         (cp_parser_binary_expression): Track tree code of left hand side
374         of expression.  Use it when calling build_x_binary_op.
375         (cp_parser_selection_statement): Add if_p parameter.  Change all
376         callers.  Warn about ambiguous else.
377         (cp_parser_statement): Add if_p parameter.  Change all callers.
378         (cp_parser_implicitly_scoped_statement): Likewise.
379         * typeck.c (build_x_binary_op): Add parameters arg1_code and
380         arg2_code.  Change all callers.  Call warn_about_parentheses.
381         * cp-tree.h (build_x_binary_op): Update declaration.
383 2006-12-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
385         * decl.c (build_enumerator): Update error message to match C
386         front-end.
387         
388 2006-12-11  Jan Hubicka  <jh@suse.cz>
390         * decl2.c (var_finalized_p): Update for renamed varpool functions.
392 2006-12-09  Zack Weinberg  <zackw@panix.com>
394         * parser.c (yydebug, enum pragma_omp_clause): Delete.
396 2006-12-07  Mark Mitchell  <mark@codesourcery.com>
398         PR c++/29732
399         * cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations.
400         (explicit_class_specialization_p): Declare.
401         * pt.c (explicit_class_specialization_p): New function.
402         * parser.c (cp_parser_init_declarator): Check correct number of
403         template parameters for in-class function definitions.
404         (cp_parser_check_declrator_template_parameters): Stop looking for
405         template classes when we find an explicit specialization.
407 2006-12-07  Lee Millward  <lee.millward@codesourcery.com>
409         PR c++/29980
410         * cp_parser_elaborated_type_specifier: Check
411         the return value of check_elaborated_type_specifier.
413 2006-12-06  Mark Mitchell  <mark@codesourcery.com>
415         PR c++/29730
416         * parser.c (cp_parser_init_declarator): Reject initialization of
417         functions.
419 2006-12-05  Mark Mitchell  <mark@codesourcery.com>
421         PR c++/29729
422         * decl2.c (check_member_template): Move check for member
423         templates in local classes to ...
424         * parser.c (cp_parser_template_declaration_after_export):
425         ... here.
427         PR c++/29728
428         * decl.c (check_array_designated_initializer): New function.
429         (maybe_deduce_size_from_array_init): Use it.
430         (reshape_init_array): Likewise.
432 2006-12-05  Aldy Hernandez  <aldyh@redhat.com>
434         Merge from gimple-tuples-branch.
436         2006-10-05  Aldy Hernandez  <aldyh@redhat.com>
438         * cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
439         (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
440         (cxx_omp_clause_copy_ctor): Same.
441         (cxx_omp_clause_assign_op): Same.
443         2006-09-28  Aldy Hernandez  <aldyh@redhat.com>
445         * cp-tree.h (union lang_tree_node): Gimple statements do not
446         have a TREE_CHAIN.
447         (TREE_INDIRECT_USING): Look in base.
449 2006-12-04  Jan Hubicka  <jh@suse.cz>
451         * cp-objcp-common.c (cp_expr_size): Return NULL in the case
452         size is undefined.
454 2006-12-04  Mark Mitchell  <mark@codesourcery.com>
456         PR c++/29733
457         * pt.c (tsubst_decl): Disallow variables of function type.
459         PR c++/29632
460         * call.c (add_builtin_candidate): Do not permit NULL pointer
461         constants to be compared with template parameters.
463 2006-12-04  Eric Botcazou  <ebotcazou@adacore.com>
465         * pt.c (for_each_template_parm_r) <INTEGER_TYPE>: New case.
466         Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.
468 2006-12-03  Richard Henderson  <rth@redhat.com>
469             Andrew Pinski  <pinskia@gmail.com>
471         PR C++/14329
472         * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR.
474 2006-12-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
476         PR C++/30033
477         * decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.
479 2006-12-02  Kazu Hirata  <kazu@codesourcery.com>
481         * name-lookup.c: Follow spelling conventions.
483 2006-12-01  Geoffrey Keating  <geoffk@apple.com>
485         * decl.c (poplevel): Check DECL_INITIAL invariant.
486         (duplicate_decls): Preserve DECL_INITIAL when eliminating
487         a new definition in favour of an old declaration.
488         (start_preparsed_function): Define and document value of
489         DECL_INITIAL before and after routine.
490         (finish_function): Check DECL_INITIAL invariant.
491         * parser.c
492         (cp_parser_function_definition_from_specifiers_and_declarator):
493         Skip duplicate function definitions.
495 2006-12-01  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
497         PR c++/30022
498         * typeck.c (type_after_usual_arithmetic_conversions):
499         Fix assertion for vector types.
500         (build_binary_op): Use temporary for inner type of vector types.
502 2006-12-01  Ryan Mansfield  <rmansfield@qnx.com>
504         PR c++/29066
505         * typeck.c (build_binary_op):  Fix pointer to member function
506         comparison for ptrmemfunc_vbit_in_delta targets.
508 2006-12-01  Dirk Mueller  <dmueller@suse.de>
510         PR c++/18313
511         * decl.c (grokdeclarator): Warn for type qualifiers on return
512         type for non-dependent types.
513         * pt.c (tsubst_function_type): Warn for type qualifiers on
514         return type for dependent types.
516 2006-11-30  Geoffrey Keating  <geoffk@apple.com>
518         * rtti.c (get_tinfo_decl): Handle return value from
519         pushdecl_top_level_and_finish.
521 2006-11-29  Lee Millward  <lee.millward@codesourcery.com>
523         PR c++/29022
524         * parser.c (cp_parser_class_head): Move processing
525         of any base classes to...
526         (cp_parser_class_specifier) ...here. Take an extra
527         tree* parameter for any base classes. Only process
528         them if the opening brace was found.
530 2006-11-28  Jakub Jelinek  <jakub@redhat.com>
532         PR c++/29735
533         * decl.c (grokfndecl): Check main's type after applying
534         attributes, not before.
536 2006-11-27  Mark Mitchell  <mark@codesourcery.com>
538         * class.c (build_vcall_offset_vtbl_entries): Do not add vcall
539         entries for a primary construction virtual table.
541 2006-11-26  Mark Mitchell  <mark@codesourcery.com>
543         PR c++/29886
544         * parser.c (cp_parser): Add in_function_body.
545         (cp_parser_new): Initialize it.
546         (cp_parser_primary_expression): Use parser->in_function_body
547         instead of at_function_scope_p.
548         (cp_parser_asm_definition): Likewise.
549         (cp_parser_direct_declarator): Likewise.
550         (cp_parser_class_specifier): Clear parser->in_function_body.
551         (cp_parser_constructor_declarator_p): Use parser->in_function_body
552         instead of at_function_scope_p.
553         (cp_parser_function_body_after_declarator): Set
554         parser->in_function_body.
556 2006-11-21      Douglas Gregor <doug.gregor@gmail.com>
558         * cp-tree.def (STATIC_ASSERT): New.
559         * cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT.
560         * error.c (dump_decl): Handle STATIC_ASSERT.
561         * cp-tree.h (STATIC_ASSERT_CONDITION): New.
562         (STATIC_ASSERT_MESSAGE): New.
563         (STATIC_ASSERT_SOURCE_LOCATION): New.
564         (struct tree_static_assert): New.
565         (enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT.
566         (union lang_tree_node): Add static_assertion.
567         (finish_static_assert): Declare.
568         * cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT.
569         (pp_cxx_declaration): Handle STATIC_ASSERT.
570         * pt.c (instantiate_class_template): Handle
571         STATIC_ASSERT members.
572         (tsubst_expr): Handle STATIC_ASSERT statements.
573         * semantics.c (finish_static_assert): New.
574         * lex.c (D_CPP0X): New.
575         (reswords): Add static_assert keyword.
576         (init_reswords): If not flag_cpp0x, mask out C++0x keywords.
577         * parser.c (cp_parser_block_declaration): Parse static
578         assertions.
579         (cp_parser_static_assert): New.
580         (cp_parser_member_declaration): Parse static assertions.
582 2006-11-21  Jakub Jelinek  <jakub@redhat.com>
584         PR c++/29570
585         * decl.c (cp_finish_decl): Check for value dependent brace enclosed
586         scalar initializer.
588         PR c++/29734
589         * cp-tree.h (WANT_VECTOR): Define.
590         (WANT_ARITH): Add WANT_VECTOR.
591         * cvt.c (build_expr_type_conversion): Handle vector types.
592         * typeck.c (build_unary_op): Add WANT_VECTOR to
593         build_expr_type_conversion flags.
595 2006-11-20  Simon Martin  <simartin@users.sourceforge.net>
597         PR c++/29475
598         * cp-tree.h (enforce_access, perform_or_defer_access_check): Added an
599         extra argument that represents the declaration to use to print
600         potential error messages.
601         * init.c (build_offset_ref): Adjusted the call to
602         perform_or_defer_access_check.
603         * class.c (alter_access, resolve_address_of_overloaded_function):
604         Likewise.
605         * decl.c (make_typename_type, make_unbound_class_template): Likewise.
606         * search.c (lookup_member): Likewise.
607         * friend.c (add_friend): Likewise.
608         * parser.c (cp_parser_template_id,
609         cp_parser_pre_parsed_nested_name_specifier): Likewise.
610         * semantics.c (finish_non_static_data_member,
611         check_accessibility_of_qualified_id, finish_id_expression): Likewise.
612         (pop_to_parent_deferring_access_checks, perform_access_checks,
613         perform_or_defer_access_check): Adjusted the call to enforce_access.
614         * call.c (enforce_access): Use the new extra argument to build the
615         error message.
616         (build_op_delete_call): Adjusted the call to
617         perform_or_defer_access_check.
618         (build_over_call): Likewise.
620 2006-11-16  Dirk Mueller  <dmueller@suse.de>
622         * name-lookup.c (begin_scope): Use GGC_CNEW instead of
623         GGC_NEW and memset.
625 2006-11-13  Roger Sayle  <roger@eyesopen.com>
627         * rtti.c (get_pseudo_ti_init): Ensure that the offset field of the
628         base type info initializer has the correct type.
630 2006-11-13  Mark Mitchell  <mark@codesourcery.com>
632         PR c++/29518
633         * pt.c (coerce_template_parms): Do not skip_evaluation while
634         substituting template arguments.
636 2006-11-11  Richard Guenther  <rguenther@suse.de>
638         * typeck.c (build_unary_op): Remove handling of FIX_CEIL_EXPR,
639         FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
641 2006-11-03  Roger Sayle  <roger@eyesopen.com>
643         * call.c (build_op_delete_call): Test user-visible type against
644         size_type_node, instead of against the internal type, sizetype.
645         * class.c (type_requires_array_cookie): Likewise.
646         * mangle.c (write_builtin_type) <INTEGER_TYPE>: Remove special
647         handling of TYPE_IS_SIZETYPE.
648         * typeck.c (type_after_usual_arithmetic_conversions): Remove
649         special case handling of TYPE_IS_SIZETYPE.
650         (comptypes): Likewise.
652 2006-11-01  Danny Smith  <dannysmith@users.sourceforge.net>
654         * decl.c (get_atexit_node): Reference atexit, not __cxa_exit.
655         if targetm.cxx.use_atexit_for cxa_atexit.
656         (start_cleanup_fn): Likewise.
657         (register_dtor_fn): Likewise.
659 2006-09-25  Geoffrey Keating  <geoffk@apple.com>
661         * decl2.c (cp_write_global_declarations): Rename from
662         cp_finish_file.
663         * cp-lang.c (finish_file): Don't call cp_finish_file.
664         * cp-tree.h (cp_write_global_declarations): Rename from
665         cp_finish_file.
666         * cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to
667         cp_write_global_declarations.
669 2006-10-31  Geoffrey Keating  <geoffk@apple.com>
671         * name-lookup.c (get_anonymous_namespace_name): New.
672         (push_namespace_with_attribs): Use get_anonymous_namespace_name.
673         * decl2.c (start_objects): Update for rename of
674         get_file_function_name_long.
676 2006-10-30  Dirk Mueller  <dmueller@suse.de>
678         PR c++/28704
679         * decl.c (grokdeclarator): Duplicate diagnostic message
680         for easier translation.
681         * decl.c (grokdeclarator): Fix line-wrapping.
683 2006-10-30  Dirk Mueller  <dmueller@suse.de>
685         PR c++/6321
686         * decl.c (grokfndecl): Use check_main_parameter_types.
688 2006-10-30  Dirk Mueller  <dmueller@suse.de>
690         PR c++/28669
691         * decl.c (grokfndecl): Duplicate warning message for
692         easier translation.
694 2006-10-30  Dirk Mueller  <dmueller@suse.de>
696         * typeck.c (build_unary_op): Fix indenting. Use G_().
698 2006-10-29  Dirk Mueller  <dmueller@suse.de>
700         PR c++/29089
701         * typeck.c (build_unary_op): Duplicate warning message
702         for easier translation.
704 2006-10-29  Dirk Mueller  <dmueller@suse.de>
706         PR c++/16307
707         * typeck.c (build_array_ref): Warn for char subscriptions
708         on pointers.
710 2006-10-29  Kazu Hirata  <kazu@codesourcery.com>
712         * decl.c: Fix a comment typo.
714 2006-10-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
716         PR C++/29295
717         * typeck.c (build_unary_op): Use same_type_p when comparing to
718         boolean type.
720 2006-10-29  Dirk Mueller  <dmueller@suse.de>
722         PR c++/29033
723         * typeck.c (build_binary_op): Duplicate warning message
724         for better translation.
726 2006-10-23  Rafael Avila de Espindola  <rafael.espindola@gmail.com>
728         * decl.c (builtin_function_1): Move common code to
729         add_builtin_function.
730         (builtin_function): Rename to cxx_builtin_function.
731         Change the signature.
732         * call.c: Include langhooks.h.
733         (build_java_interface_fn_ref):  Replace calls to
734         builtin_function with add_builtin_function.
735         * Make-lang.in (cp/call.o): Depend on langhooks.h.
736         * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
737         cxx_builtin_function.
738         * cp-tree.h (builtin_function): Rename to cxx_builtin_function.
739         Change the signature.
741 2006-10-22  Nathan Sidwell  <nathan@codesourcery.com>
743         PR c++/20647
744         * rtti.c (tinfo_base_init): The type info string is always global.
746 2006-10-20  Lee Millward  <lee.millward@codesourcery.com>
747             Mark Mitchell <mark@codesourcery.com>
749         PR c++/28053
750         * decl2.c (grokbitfield): Detect invalid non-integral
751         types earlier when possible.
753 2006-10-18  Mark Shinwell  <shinwell@codesourcery.com>
755         PR c++/26884
756         * typeck2.c (digest_init): Raise error upon attempts to
757         initialize arrays with variables.
759 2006-10-17  Lee Millward  <lee.millward@codesourcery.com>
761         PR c++/27952
762         * cp-tree.h (xref_basetypes): Return bool instead of void.
763         * decl.c (xref_basetypes): Adjust definition. Return false
764         if the class bases are invalid.
765         * parser.c (cp_parser_class_head): Check the return value
766         from xref_basetypes.
768 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
770         PR c++/28261
771         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Add
772         comment.
774         PR c++/28261
775         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): New
776         function.
777         (cp_parser_constructor_declarator_p): Use it.
778         (cp_parser_check_type_definition): Return a value indicating
779         whether or not the definition is valid.
780         (cp_parser_enum_specifier): Skip invalid enum definitions.
782 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
784         PR c++/29039
785         * typeck2.c (build_functional_cast): Don't zero-initialize
786         non-PODs; instead, call their constructors.
787         * method.c (synthesize_method): Always build mem-initializers, if
788         we're synthesizing the default constructor.
790 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
792         PR c++/27270
793         * decl.c (reshape_init_class): Move check for designated
794         to ...
795         * parser.c (cp_parser_initializer_list): ... here.
796         * pt.c (tsubst_copy_and_build): Use finish_compound_literal.
798 2006-10-16  Mark Mitchell  <mark@codesourcery.com>
800         PR c++/27270
801         * typeck2.c (process_init_constructor_array): Reword comment.
802         * pt.c (tsubst_copy_and_built): Call reshape_init before calling
803         digest_init.
805         PR c++/29408
806         * parser.c (cp_parser_using_declaration): Stop parsing when
807         something goes wrong with an access declaration.
809         PR c++/29435
810         * typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent
811         types when their sizes are required.  Refine test for VLAs.
813         PR c++/28211
814         * parser.c (cp_parser_template_argument): Don't consider "&var" a
815         possible constant-expression.
816         * pt.c (convert_nontype_argument): Refine handling of arguments of
817         pointer type.
819 2006-10-13  Mark Mitchell  <mark@codesourcery.com>
821         PR c++/28506
822         * parser.c (function_declarator_p): New function.
823         (cp_parser_init_declarator): Use it.
824         (cp_parser_member_declaration): Likewise.
826 2006-10-12  Mark Mitchell  <mark@codesourcery.com>
828         PR c++/29318
829         * rtti.c (get_tinfo_decl): Refuse to create type info objects for
830         variably modified types.
832 2006-10-12 Lee Millward <lee.millward@codesourcery.com>
834        PR c++/27961
835        * decl.c (start_decl): Return error_mark_node if a
836        function is initialized like a variable.
837        (check_var_type): If a variable of field is declared void,
838        set the type to error_mark_node.
839        (grokdeclarator): Check the return type of check_var_type.
840        * class.c (finish_struct_1): Robustify.
842 2006-10-11  Mark Mitchell  <mark@codesourcery.com>
844         PR c++/29175
845         * decl.c (check_initializer): Issue errors about trying to
846         initialize arrays whose elements have variable size.
848 2006-10-11  Lee Millward  <lee.millward@codesourcery.com>
850         PR c++/29024
851         * cp-tree (struct cp_decl_specifier_seq): Rename to
852         conflicting_specifiers_p
853         * parser.c (cp_parser_set_storage_class): Set
854         conflicting_specifiers_p for the input decl specifier
855         if a typedef specifier is present. Rename uses of
856         multiple_specifiers_p to conflicting_specifiers_p.
857         (cp_parser_decl_specifier_seq) <RID_TYPEDEF>: If a storage
858         class specifier has already been set for this declaration,
859         set conflicting_specifiers_p to true on the decl_specs.
860         * decl.c (grokdeclarator): Rename uses of
861         multiple_specifiers_p to conflicting_specifiers_p.
863 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
865         * Make-lang.in: Added "c++.pdf" target support.
867 2006-10-10  Richard Guenther  <rguenther@suse.de>
869         PR rtl-optimization/29323
870         * decl.c (finish_function): Set TREE_NOTHROW only for
871         functions that bind local.
873 2006-10-09  Richard Henderson  <rth@redhat.com>
875         Revert emutls patch.
877 2006-10-04  Richard Henderson  <rth@redhat.com>
878             Jakub Jelinek  <jakub@redhat.com>
880         * decl.c (grokvardecl): Don't error if !have_tls.
881         (grokdeclarator): Likewise.
882         * parser.c (cp_parser_omp_threadprivate): Likewise.
884 2006-10-03  Mark Mitchell  <mark@codesourcery.com>
886         PR c++/29020
887         * friend.c (do_friend): Improve comments; add assertion.
888         * parser.c (cp_parser_nested_name_specifier_opt): Resolve
889         typenames for qualified names used in declarations, even when
890         caching qualified name lookup.
892         PR c++/29138
893         * decl2.c (grokfield): Don't handle access declarations here.
894         * parser.c (cp_parser_using_declaration): Handle access
895         declarations too.
896         (cp_parser_block_declaration): Adjust calls to
897         cp_parser_using_declaration.
898         (cp_parser_member_declaration): Likewise.  Use
899         cp_parser_using_declaration to look for access_declarations.
901 2006-10-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
903         PR c++/29291
904         * init.c (build_new): Check for invalid init.
906 2006-10-02  Mark Mitchell  <mark@codesourcery.com>
908         PR c++/29226
909         * typeck.c (cxx_sizeof_or_alignof_type): Tidy.  In templates, do
910         not try to actually evaluate sizeof for a VLA type.
912 2006-10-01  Mark Mitchell  <mark@codesourcery.com>
914         PR c++/29105
915         * pt.c (tsubst_baselink): Substituteinto the qualifying scope.
916         * semantics.c (baselink_for_fns): Build a baselink, even when
917         processing a template.
919         PR c++/29080
920         * parser.c (cp_parser_postfix_dot_deref_expression): Use
921         BASELINK_ACCESS_BINFO as the qualifying scope when calling
922         adjust_result_of_qualified_name_lookup.
924 2006-09-25  Lee Millward  <lee.millward@codesourcery.com>
926         PR c++/27329
927         PR c++/26938
928         * cp-tree.h (redeclare_class_template): Adjust declaration
929         to return bool instead of void.
930         * pt.c (redeclare_class_template): Update definition.
931         Return false on error.
932         * decl.c (xref_tag): Return error_mark_node if
933         redeclare_class_template returned false.
935         PR c++/27667
936         * cp-tree.h (begin_specialization): Return bool
937         instead of void.
938         * pt.c (check_specialization_scope): Likwise.
939         Adjust comment. Return false if a specialization
940         isn't permitted in the current scope.
941         (begin_specialization): Use the return value of
942         check_specialization_scope.
943         * parser.c (cp_parser_explicit_specialization): If
944         begin_specialization returned false, skip the rest
945         of the specialization.
947 2006-09-21  Mark Mitchell  <mark@codesourcery.com>
949         PR c++/29016
950         * typeck.c (build_unary_op): Don't form an ADDR_EXPR around a
951         BASELINK.
953 2006-09-21  Lee Millward  <lee.millward@codesourcery.com>
955         PR c++/28861
956         * decl.c (shadow_tag): Return error_mark_node
957         if maybe_process_partial_specialization failed.
959         PR c++/28303
960         * decl.c (grokdeclarator): Return error_mark_node on
961         declaration with two or more data types.
963 2006-09-20  Danny Smith  <dannysmith@users.sourceforge.net>
965         PR target/27650
966         * class.c (check_for_override): Remove dllimport from virtual
967         methods.
969 2006-09-18  Steven Bosscher  <steven@gcc.gnu.org>
971         PR c++/29087
972         * parser.c (cp_parser_labeled_statement): Return nothing.  Do
973         not take in_statement_expr and in_compound as arguments.  Rename
974         to cp_parser_label_for_labeled_statement.  Parse only the label,
975         not the statement.
976         (cp_parser_statement): Parse the statement of a labeled-statement
977         from here, using tail recursion.
979 2006-09-14  Andrew Pinski  <pinskia@physics.uc.edu>
981         PR C++/29002
982         * init.c (build_zero_init): If we have an error mark node for
983         the array size, return.
985 2006-09-10  Mark Mitchell  <mark@codesourcery.com>
987         PR c++/28991
988         * cp-objcp-common.c (cxx_staticp): New function.
989         * cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
990         * cp-tree.h (cxx_staticp): New function.
992 2006-09-09  Jason Merrill  <jason@redhat.com>
994         PR c++/28996
995         * cvt.c (convert_to_void): Strip COMPONENT_REF to functions.
997 2006-09-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
999         PR c++/28858
1000         * parser.c (cp_parser_skip_until_found): Rename to
1001         cp_parser_skip_to_end_of_template_parameter_list.  Remove last two
1002         parameters.  Track levels of '< ... >'.  Stop at '{', '}', or ';'.
1003         Reorganize.  Adjust comment.
1004         (cp_parser_template_declaration_after_export): Adjust call.
1005         (cp_parser_enclosed_template_argument_list): Likewise.
1007 2006-09-07  Andrew Pinski  <pinskia@physics.uc.edu>
1009         PR C++/28906
1010         * init.c (build_new_1): Build a distinct type copy
1011         for the array type that was returned from
1012         build_cplus_array_type.
1014 2006-09-07  Jason Merrill  <jason@redhat.com>
1016         PR c++/27371
1017         * cvt.c (convert_to_void): Enable previous change.
1019         PR c++/26957
1020         * method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
1021         parms.
1023 2006-09-07  Simon Martin  <simartin@users.sourceforge.net>
1025         PR c++/28284
1026         * pt.c (fold_non_dependent_expr): Make sure expr is not
1027         dereferenced if it is NULL.
1029 2006-09-06  Zak Kipling  <zak@transversal.com>
1031         PR c++/26195
1032         * decl.c (make_rtl_for_nonlocal_decl),
1033         (start_preparsed_function): Don't use lbasename on
1034         input_filename when calling get_fileinfo.
1035         * semantics.c (begin_class_definition): Likewise.
1036         * lex.c (cxx_make_type): Likewise.
1037         (handle_pragma_interface): Call get_fileinfo on input_filename,
1038         not on the parameter to the directive.
1040 2006-09-06  Mark Mitchell  <mark@codesourcery.com>
1042         PR c++/28903
1043         * pt.c (tsubst): Use fold_non_dependent_expr to fold array
1044         dimensions.
1046         PR c++/28886
1047         * pt.c (unify): Avoid unnecessary calls to fold_build2 for array
1048         dimensions.
1050 2006-09-06  Jason Merrill  <jason@redhat.com>
1052         PR c++/27371
1053         * cvt.c (convert_to_void): Strip useless TARGET_EXPR.
1054         * cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
1055         * tree.c (build_cplus_new): Set it.
1057         PR c++/26696
1058         * cvt.c (convert_to_void): Replace a subexpression with no side
1059         effects with void_zero_node.
1060         * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
1061         (get_first_fn): Ditto.
1062         * decl.c (grokdeclarator): No need to look through COMPONENT_REF.
1064 2006-09-05  Jason Merrill  <jason@redhat.com>
1066         PR c++/26571
1067         * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
1068         where the name is a type used incorrectly.
1070         PR c++/26671
1071         * typeck.c (maybe_warn_about_returning_address_of_local): Look
1072         through COMPONENT_REF and ARRAY_REF.
1074         PR c++/26102
1075         * name-lookup.c (do_class_using_decl): Try to find the base even
1076         if bases_dependent_p.
1077         * pt.c (type_dependent_expression_p): A USING_DECL is dependent.
1079         PR c++/19809
1080         * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
1082 2006-09-04  Nathan Sidwell  <nathan@codesourcery.com>
1084         PR 23287 Revert my 2006-09-01 patch.
1085         * parser.c: Reverted.
1086         * pt.c: Reverted.
1088 2006-09-02  Lee Millward  <lee.millward@codesourcery.com>
1090         PR c++/27670
1091         PR c++/27493
1092         PR c++/27494
1093         PR c++/27397
1094         * parser.c (cp_parser_template_parameter_list): Add
1095         invalid template parameters to the parameter list as
1096         error_mark_node.
1098 2006-09-02  Jakub Jelinek  <jakub@redhat.com>
1100         PR c++/28878
1101         * except.c (build_throw): Only set current_function_returns_abnormally
1102         if cfun is not NULL.
1104         PR c++/26917
1105         * repo.c (repo_file): Remove.
1106         (open_repo_file, reopen_repo_file_for_write): Return fopened
1107         FILE * instead of setting global repo_file variable.
1108         (init_repo): Adjust caller.
1109         (finish_repo): Likewise.  Return instead of goto out before
1110         reopen_repo_file_for_write has been called.
1112 2006-09-01  Nathan Sidwell  <nathan@codesourcery.com>
1114         PR c++/28705
1115         * semantics.c (finish_call_expr): Add assert.
1116         * name-lookup.c (lookup_arg_dependent): Check we found an overload
1117         or an object.
1119         PR c++/23287
1120         * parser.c (cp_parser_id_expression): Add member_p
1121         argument. Update all callers.
1122         (cp_parser_unqualified_id): Likewise.  Lookup a destructor name in
1123         the object's scope, if valid.
1124         (cp_parser_global_scope_opt): Add object_scope_valid_p.  Update
1125         callers.
1126         (cp_parser_postfix_dot_deref_expression): Set object_scope.
1127         * pt.c (tsubst_copy_and_build): Lookup dependent dtor name here.
1129 2006-08-30  Jason Merrill  <jason@redhat.com>
1131         PR c++/26670
1132         * class.c (check_field_decls): Don't unset TYPE_PACKED until all
1133         the fields have been processed.
1135 2006-08-29  Andrew Pinski  <pinskia@physics.uc.edu>
1137         PR C++/28349
1138         * call.c (build_x_va_arg): Remove the reference type
1139         from the type before creating the pointer type.
1141 2006-08-29  J"orn Rennecke  <joern.rennecke@st.com>
1143         PR c++/28139
1144         * except.c (expand_start_catch_block): Use correct types for bitwise
1145         copy.
1147 2006-08-28  Jason Merrill  <jason@redhat.com>
1149         PR c++/26670
1150         * class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
1151         fields can't be packed.
1153         PR c++/26577
1154         * cvt.c (convert_to_void): Don't automatically load from volatiles
1155         of TREE_ADDRESSABLE type.
1157 2006-08-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1159         PR c++/28860
1160         * cp-tree.h (maybe_process_partial_specialization): Return
1161         tree instead of void.
1162         * parser.c (cp_parser_class_head): Use return value of
1163         maybe_process_partial_specialization.
1164         * pt.c (maybe_process_partial_specialization): Return error_mark_node
1165         for broken specializations, TYPE otherwise.  Check for template
1166         template parameters.
1168 2006-08-27  Mark Mitchell  <mark@codesourcery.com>
1170         PR c++/28058
1171         * pt.c (register_specialization): Return error_mark_node for
1172         specialization-after-instantiation.
1173         * decl2.c (mark_used): Mark the main function used when one of its
1174         clones is used.
1176 2006-08-27  Lee Millward  <lee.millward@codesourcery.com>
1178         PR c++/26573
1179         * class.c (check_field_decls): Don't issue error about
1180         local classes containing static data members.
1182 2006-08-26  Joseph S. Myers  <joseph@codesourcery.com>
1184         PR c++/24009
1185         * parser.c (struct cp_token): Add input_file_stack_index.
1186         (eof_token): Update.
1187         (cp_lexer_get_preprocessor_token): Save input_file_stack_tick.
1188         (cp_lexer_set_source_position_from_token): Restore input file
1189         stack.
1191 2006-08-26  Lee Millward  <lee.millward@codesourcery.com>
1193         PR c++/28736
1194         PR c++/28737
1195         PR c++/28738
1196         * pt.c (process_template_parm): Store invalid template
1197         parameters as a TREE_LIST with a TREE_VALUE of error_mark_node.
1198         (push_inline_template_parms_recursive): Check for template
1199         parameters having a TREE_VALUE of error_mark_node rather than
1200         check the parameter itself.
1201         (mangle_class_name_for_template): Likewise.
1202         (comp_template_parms): When comparing the individual template
1203         parameters, return 1 if either is error_mark_node.
1204         (current_template_args): Robustify.
1205         (redeclare_class_template): Likewise.
1207 2006-08-26  Mark Mitchell  <mark@codesourcery.com>
1209         PR c++/28588
1210         * class.c (resolve_address_of_overloaded_function): Add
1211         access_path parameter.  Perform access checks.
1212         (instantiate_type): Adjust call to
1213         resolve_address_of_overloaded_function.  Remove unnecessary code.
1214         * tree.c (is_overloaded_fn): Document.  Return 2 when there are
1215         acutally multiple functions.
1216         (really_overloaded_fn): Use is_overloaded_fn.
1217         * mangle.c (write_expression): Handle BASELINKs.
1218         * cp-tree.h (really_overloaded_fn): Return bool.
1219         (baselink_for_fns): Declare.
1220         * search.c (lookup_member): Check access for single static
1221         functions here.
1222         * pt.c (convert_nontype_argument_function): Handle BASELINKs.
1223         (tsubst_copy_and_build): Generate BASELINKs for template-ids.
1224         * semantics.c (finish_call_expr): Use baselink_for_fns.
1225         (baselink_for_fns): New function.
1226         (finish_id_expression): Use it.
1227         * parser.c (cp_parser_template_argument): Don't strip BASELINKs.
1229         PR c++/28595
1230         * pt.c (tsubst): Issue errors about attempts to create VLAs at
1231         template-instantiation time.
1233 2006-08-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1235         PR c++/28853
1236         * typeck2.c (cxx_incomplete_type_diagnostic): Handle template
1237         template parameters.  Improve error message for template type
1238         parameters.
1240         PR c++/28852
1241         * cp-tree.h (grok_op_properties): Return bool instead of void.
1242         * decl.c (grokfndecl): Discard invalid operator declarations.
1243         (copy_fn_p): Revert change for PR 27547.
1244         (grok_op_properties): Return error status (true on success).
1245         * pt.c (tsubst_decl): Discard invalid operator declarations.
1247 2006-08-25  Mark Mitchell  <mark@codesourcery.com>
1249         PR c++/28056
1250         * decl.c (grokdeclarator): Disallow declarations with qualified
1251         names in local scopes.
1253 2006-08-25  Nathan Sidwell  <nathan@codesourcery.com>
1255         PR c++/27787
1256         * decl.c (make_typename_type): Only try and resolve it when
1257         context is not dependent.  Refactor.
1258         * decl2.c (check_classfn): Push to class scope before looking for
1259         the function.
1261 2006-08-24  Danny Smith   <dannysmith@users.sourceforge.net>
1263         PR driver/28528
1264         * g++spec.c (lang_specific_driver): Always check if we need to
1265         swallow a space-separated  arg to '-x'.
1266         * lang-specs.h: Don't create ouput files for '-xc++-header'
1267         if -fsyntax-only.
1269 2006-08-23  Jason Merrill  <jason@redhat.com>
1271         PR c++/27714
1272         * pt.c (push_template_decl_real): A friend template with class
1273         scope isn't primary.
1275 2006-08-23  Benjamin Smedberg <benjamin@smedbergs.us>
1277         PR c++/28687
1278         * rtti.c (build_dynamic_cast, build_dynamic_cast_1):
1279         Move -fno-rtti check to be more specific.
1281 2006-08-22  Jason Merrill  <jason@redhat.com>
1283         PR c++/23372
1284         * call.c (build_over_call): Don't make a copy here if build_call
1285         will make one too.
1287 2006-08-22  Andrew Pinski  <pinskia@physics.uc.edu>
1289         PR C++/28450
1290         * cp/init.c (build_zero_init): Handle VECTOR_TYPE and
1291         COMPLEX_TYPEs.
1293 2006-08-22  Simon Martin  <simartin@users.sourceforge.net>
1295         PR c++/28420
1296         * parser.c (cp_parser_postfix_expression): Make sure that the
1297         saved value for parser->type_definition_forbidden_message is
1298         restored before returning to avoid an invalid free().
1300 2006-08-22  Jason Merrill  <jason@redhat.com>
1302         PR c++/28659
1303         * typeck.c (merge_types): If either of the types have the right
1304         attributes, return that one.
1306         * tree.c (cp_build_type_attribute_variant): Make sure we aren't
1307         doing this to class types.
1308         * typeck.c (original_type): Deal with type quals properly.
1310 2006-08-21  Jason Merrill  <jason@redhat.com>
1312         PR c++/27115
1313         * semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
1314         just leave the expression as it is.
1315         (finish_stmt_expr): If the statement-expression has class type,
1316         wrap it in a TARGET_EXPR.
1317         * cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
1318         CLEANUP_POINT_EXPR.
1319         * except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.
1321 2006-08-21  Lee Millward  <lee.millward@codesourcery.com>
1323         PR c++/26269
1324         * decl.c (duplicate_decls): Return early if either
1325         newdecl or olddecl is error_mark_node.
1327          PR c++/28505
1328         * decl.c (grokdeclarator): Return early after
1329         issuing diagnostic about an incomplete type.
1331         PR c++/28741
1332         * tree.c (decl_anon_ns_mem_p): Robustify.
1333         * decl2.c (determine_visibility): Likewise.
1335 2006-08-20  Mark Mitchell  <mark@codesourcery.com>
1337         PR c++/28341
1338         * tree.c (cast_valid_in_integral_constant_expression_p): New
1339         function.
1340         * cp-tree.h (tsubst_copy_and_build): Adjust prototype.
1341         * pt.c (tsubst_expr): Add integral_constant_expression_p
1342         parameter.
1343         (fold_non_dependent_expr): Adjust callers of
1344         tsubst_{expr,copy_and_build}.
1345         (tsubst_friend_function): Likewise.
1346         (tsubst_template_arg): Likewise.
1347         (tsubst_default_argument): Likewise.
1348         (tsubst_decl): Likewise.
1349         (tsubst): Likewise.
1350         (tsubst_omp_clasuses): Likewise.
1351         (regenerate_decl_fromp_template): Likewise.
1352         (instantiate_decl): Likewise.
1353         (tsubst_initializer_list): Likewise.
1354         (tsubst_enum): Likewise.
1355         (tsubst_expr): Use RECUR throughout.
1356         (tsubst_copy_and_build): Change definition of RECUR.  Do not allow
1357         invalid casts in integral constant expressions.
1358         * parser.c (cp_parser_postfix_expression): Use
1359         cast_valid_in_integral_constant_expression_p.
1360         (cp_parser_cast_expression): Likewise.
1361         (cp_parser_functional_cast): Likewise.
1363         PR c++/28346
1364         * pt.c (tsubst_qualified_id): Do not strip references from
1365         OFFSET_REFs.
1367 2006-08-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1369         PR c++/28606
1370         * parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
1371         Fix formatting.
1372         (cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
1373         for valid type-names.
1374         (cp_parser_unqualified_id): Fix error handling for destructors.
1376         PR c++/28710
1377         * decl.c (xref_tag): Improve error message.  Return early on error.
1379         PR c++/28711
1380         * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Robustify.
1382 2006-08-17  Paolo Bonzini  <bonzini@gnu.org>
1384         PR c++/28573
1385         * semantics.c (finish_offsetof): Add new argument to fold_offsetof.
1387 2006-08-16  Andrew Pinski  <pinskia@physics.uc.edu>
1389         PR c++/28302
1390         * typeck.c (build_unary_op <case BIT_NOT_EXPR:>): Don't call
1391         perform_integral_promotions for non integral type.
1393 2006-08-16  Jason Merrill  <jason@redhat.com>
1395         PR c++/28385
1396         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
1397         if arg is a function.
1399 2006-08-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1401         PR c++/28593
1402         * init.c (build_new): Return early on invalid placement.
1404 2006-08-15  Lee Millward  <lee.millward@codesourcery.com>
1406         PR c++/28594
1407         * pt.c (process_template_parm): Robustify.
1409 2006-08-14  Steve Ellcey  <sje@cup.hp.com>
1411         PR c++/28288
1412         PR c++/14556
1413         * operators.def: Remove <?, ?>, <?=, and >?= operators.
1414         * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
1415         (cp_parser_warn_min_max): Remove.
1417 2006-08-11  Jason Merrill  <jason@redhat.com>
1419         PR c++/28559
1420         * parser.c (cp_parser_elaborated_type_specifier): Also ignore
1421         attributes applied to a TYPENAME_TYPE.
1423 2006-08-09  Lee Millward  <lee.millward@codesourcery.com>
1425         PR c++/28637
1426         * pt.c (coerce_template_parms): Copy across the
1427         invalid template arguments to the new template inner arguments.
1428         (retrieve_specialization): Robustify.
1430         PR c++/28638
1431         * pt.c (coerce_template_template_parms): Robustify.
1433         PR c++/28639
1434         * error.c (dump_template_parms): Robustify.
1436         PR c++/28640
1437         * pt.c (redeclare_class_template): Robustify.
1439         PR c++/28641
1440         * pt.c (type_unification_real): Robustify.
1442 2006-08-03  Lee Millward  <lee.millward@codesourcery.com>
1444         PR c++/28347
1445         * decl.c (start_decl): Return error_mark_node if a
1446         diagnostic was issed for an invalid typedef initialization.
1448 2006-08-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1450         PR c++/27508
1451         * parser.c (cp_parser_unqualified_id): Check for invalid scopes
1452         when parsing destructor names.
1454         PR c++/28274
1455         * decl.c (duplicate_decls): Call check_default_args here.
1456         (start_preparsed_function): Do not call check_default_args.
1457         * name-lookup.c (pushdecl_maybe_friend): Only call
1458         check_default_args if duplicate_decls got bypassed.
1460 2006-08-02  Richard Guenther  <rguenther@suse.de>
1462         PR c++/28479
1463         Revert
1464         2006-07-05  Richard Guenther  <rguenther@suse.de>
1465         Andrew Pinski  <pinskia@gcc.gnu.org>
1467         PR c++/27084
1468         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
1469         top level qualifiers for pointer type comparisons.
1471 2006-08-02  Mark Mitchell  <mark@codesourcery.com>
1473         PR c++/28557
1474         * pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.
1476 2006-07-31  Mark Mitchell  <mark@codesourcery.com>
1478         PR c++/28523
1479         * tree.c (stabilize_expr): Tweak documentation.  Add assertion.
1480         (stabilize_call): Tweak documentation.
1481         (stabilize_init): Only call stabilize_call for calls.
1483 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
1485         PR c++/28432
1486         * decl2.c (check_classfn): Remove early return.
1487         * search.c (lookup_member): Return NULL with bad type.
1489 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
1491         PR c++/28256
1492         * decl.c (check_initializer): Check for 1 initializer on scalar types.
1494 2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
1496         PR debug/23336
1497         * pt.c (tsubst_copy_and_build): Mark used enum types.
1498         * semantics.c (finish_id_expression): Likewise.
1500 2006-07-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1502         PR c++/6634
1503         * decl.c (grokdeclarator): Check whether "long" or "short" was
1504         specified for non-integral types.
1506 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1508         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
1510 2006-07-28  Lee Millward  <lee.millward@codesourcery.com>
1512         PR c++/27668
1513         PR c++/27962
1514         * pt.c (process_template_parm) Store invalid template
1515         parameters as error_mark_node in the paramater list.
1516         (push_inline_template_parms_recursive): Handle invalid
1517         template parameters.
1518         (comp_template_parms): Likewise.
1519         (check_default_tmpl_arg): Likewise.
1520         (coerce_template_template_parms): Likewise.
1521         (mangle_class_name_for_template): Likewise.
1522         (tsubst_template_parms): Likewise.
1523         * error.c (dump_template_argument_list): Likewise.
1525 2006-07-28  Kazu Hirata  <kazu@codesourcery.com>
1527         * cp-tree.h: Fix a comment typo.
1529 2006-07-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1531         PR c++/27572
1532         * decl.c (grokdeclarator): Return error_mark_node after invalid
1533         typedef.
1535 2006-07-23  Daniel Jacobowitz  <dan@codesourcery.com>
1537         PR c++/28460
1538         * decl.c (grokvardecl): Use FROB_CONTEXT.
1539         * pt.c (register_specialization): Likewise.
1541 2006-07-23  Mark Mitchell  <mark@codesourcery.com>
1543         PR c++/28025
1544         * cp-tree.h (LOOKUP_HIDDEN): New macro.  Reformat comments.
1545         * name-lookup.c (unqualified_namespace_lookup): There is no way to
1546         have a hidden name in non-namespace scopes.
1547         * pt.c (tsubst_friend_class): Look for hidden names.
1548         * decl.c (lookup_and_check_tag): Fix typo in comment.
1550         * semantics.c (finish_compound_literal): Fix typo in comment.
1552 2006-07-21  Jason Merrill  <jason@redhat.com>
1554         * decl2.c (determine_visibility): Don't propagate visibility from
1555         type to decl.
1556         (constrain_class_visibility): Don't warn in system headers.
1557         Don't warn about pointer fields.
1559 2006-07-20  Mike Stump  <mrs@apple.com>
1561         * decl2.c (determine_visibility_from_class): Don't use hidden
1562         visibility for explicit instantiations.
1564 2006-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1566         PR c++/28250
1567         * pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
1568         valid decls.  Cleanup.
1570         PR c++/28363
1571         * semantics.c (check_template_template_default_arg): Simplify
1572         error handling.
1574 2006-07-20  Jason Merrill  <jason@redhat.com>
1576         PR c++/28407
1577         * decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
1578         const variables with implicit internal linkage.
1579         * tree.c (decl_linkage): Only return lk_external if it's set.
1581         PR c++/28409
1582         * decl2.c (constrain_visibility): Ignore the anonymous namespace
1583         for extern "C" decls.
1584         (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.
1586         * decl2.c (constrain_visibility): Remove specified and reason
1587         parameters.  Don't touch decls that already have explicit visibility.
1588         (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from
1589         template.
1590         (determine_visibility_from_class): Reverse sense of
1591         DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
1592         (constrain_class_visibility): Only complain about member visibility
1593         if the member type is another class.  Don't change visibility of the
1594         current class.
1596 2006-07-19  Mark Mitchell  <mark@codesourcery.com>
1598         PR c++/28338
1599         * decl.c (layout_var_decl): Don't call push_local_name here.
1600         (initialize_artificial_var): Assert artificiality.
1601         (cp_finish_decl): Call push_local_name here.
1603 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
1605         PR c++/28337
1606         * typeck.c (build_binary_op): Short-circuit pointer arithmetic in
1607         templates.
1609 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
1611         PR c++/28048
1612         * semantics.c (check_accessibility_of_qualified_id): Robustify.
1614         PR c++/28235
1615         * pt.c (tsubst_decl): Handling substitutions into a static data
1616         member from within the scope of the tempalte itself.
1618 2006-07-18  Lee Millward  <lee.millward@gmail.com>
1620         PR c++/28258
1621         * method.c (locate_copy): Check for non_reference
1622         returning error_mark_node.
1624         PR c++/28260
1625         * decl.c (duplicate_decls): Return error_mark_node
1626         on ambiguous declaration.
1628 2006-07-18  Steve Ellcey  <sje@cup.hp.com>
1630         PR c++/27495
1631         * search.c (adjust_result_of_qualified_name_lookup): Change
1632         assert to part of if statement.
1634 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
1636         PR c++/28291
1637         * decl.c (reshape_init_class): Return error_mark_node on error.
1639 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
1641         PR c++/28304
1642         * decl2.c (check_classfn): Return NULL_TREE on error.
1644 2006-07-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1646         PR c++/28250
1647         * name-lookup.c (pushdecl_maybe_friend): Return early on
1648         error_mark_node.
1649         * except.c (expand_start_catch_block): Use error_mark_node instead
1650         of NULL_TREE for invalid decls.
1651         * parser.c (cp_parser_exception_declaration): Return error_mark_node
1652         on invalid catch parameter. Simplify.
1654 2006-07-16  Jakub Jelinek  <jakub@redhat.com>
1656         PR c++/28370
1657         * decl2.c (note_vague_linkage_var): Removed.
1658         (finish_static_data_member_decl): Add decl to pending_statics vector
1659         directly.  Do it even for non-public decls.
1661 2006-07-15  Lee Millward  <lee.millward@gmail.com>
1663         PR c++/28292
1664         * decl2.c (acceptable_java_type): Robustify. Use
1665         proper Boolean return type instead of return 1.
1666         (check_java_method): Don't issue error about
1667         type not being an acceptable Java parameter if
1668         it's error_mark_node.
1670         PR c++/28269
1671         * parser.c (cp_parser_elaborated_type_specifier):
1672         Return early if an invalid type was detected.
1674 2006-07-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1676         PR c++/28249
1677         * parser.c (cp_parser_check_decl_spec): New function.
1678         (cp_parser_decl_specifier_seq): Factor out check for repeated
1679         decl-specifiers into cp_parser_check_decl_spec. Use it.
1680         (cp_parser_type_specifier_seq): Use it.
1682         PR c++/28294
1683         * semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
1684         only.
1686         PR c++/28387
1687         * decl2.c (cplus_decl_attributes): Check for invalid decls.
1689 2006-07-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1691         PR c++/28343
1692         * decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
1693         * decl2.c (grokfield): Likewise.
1695 2006-07-12  Geoffrey Keating  <geoffk@apple.com>
1697         * decl2.c (determine_visibility): Don't change visibility of
1698         function locals because of -fvisibility-inlines-hidden.
1700 2006-07-12  Jason Merrill  <jason@redhat.com>
1702         PR c++/28217
1703         * semantics.c (note_decl_for_pch): Don't premangle templates.
1705 2006-07-12  Martin Michlmayr  <tbm@cyrius.com>
1707         * typeck.c (string_conv_p): Remove spurious quotation mark in
1708         warning.
1710 2006-07-07  Lee Millward  <lee.millward@gmail.com>
1711             Andrew Pinski  <pinskia@gmail.com>
1713         PR c++/27820
1714         * decl.c (define_label): Return error_mark_node on error.
1715         * semantics.c (finish_label_stmt): Don't call
1716         add_stmt for invalid labels.
1718 2006-07-06  Jason Merrill  <jason@redhat.com>
1720         PR c++/28279
1721         * decl2.c (finish_static_data_member_decl): Don't assert
1722         TREE_PUBLIC.
1724 2006-07-05  Jason Merrill  <jason@redhat.com>
1726         PR c++/13983
1727         PR c++/17519
1728         * class.c (check_field_decls): Check TYPE_PACKED after
1729         stripping array types.
1730         (finish_struct_bits): Don't copy TYPE_SIZE here.
1732         PR c++/18681
1733         * friend.c (is_friend): Fix DR 45 implementation.
1735 2006-07-05  Richard Guenther  <rguenther@suse.de>
1736         Andrew Pinski  <pinskia@gcc.gnu.org>
1738         PR c++/27084
1739         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
1740         top level qualifiers for pointer type comparisons.
1742 2006-07-01  Jason Merrill  <jason@redhat.com>
1744         PR c++/28215
1745         * method.c (make_thunk): Unset DECL_USE_TEMPLATE and
1746         DECL_TEMPLATE_INFO.
1748 2006-06-30  Jason Merrill  <jason@redhat.com>
1750         PR c++/26577
1751         * call.c (build_new_method_call): Force evaluation of the
1752         instance pointer, not the object.
1754 2006-06-30  Kazu Hirata  <kazu@codesourcery.com>
1756         * decl2.c: Fix a comment typo.
1758 2006-06-30  Jason Merrill  <jason@redhat.com>
1760         PR c++/18698
1761         * decl2.c (grokfield): Only try to treat the decl as an access
1762         declaration if the scope is a class.
1764 2006-06-29  Jason Merrill  <jason@redhat.com>
1766         PR c++/26905
1767         PR c++/26612
1768         PR c++/27000
1769         PR c++/26984
1770         PR c++/19134
1771         * decl2.c (determine_visibility): Overhaul.
1772         (determine_visibility_from_class): Likewise.
1773         (min_vis_r, type_visibility, constrain_visibility): New fns.
1774         (constrain_visibility_for_template): Likewise.
1775         (constrain_class_visibility): Likewise.
1776         * decl.c (cp_finish_decl): Call determine_visibility for function
1777         decls, too.
1778         * name-lookup.c (pushtag): Call determine_visibility.
1779         * decl.c (duplicate_decls): Don't copy visibility from template to
1780         specialization.
1781         * pt.c (check_explicit_specialization): Likewise.
1782         (lookup_template_class, tsubst_decl): Call determine_visibility.
1783         * class.c (finish_struct_1): Call constrain_class_visibility.
1785         PR c++/26905
1786         PR c++/21675
1787         PR c++/17470
1788         * parser.c (cp_parser_explicit_instantiation): Pass the attributes
1789         to grokdeclarator.
1790         (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
1791         (cp_parser_enum_specifier): Likewise.
1792         (cp_parser_elaborated_type_specifier): Apply attributes if this
1793         declares only the class.
1794         (cp_parser_class_specifier): Apply leading attributes immediately.
1795         * semantics.c (begin_class_definition): Add attributes parameter,
1796         apply them to the type.
1798         PR c++/21581
1799         PR c++/25915
1800         * tree.c (decl_anon_ns_mem_p): New function.
1801         * cp-tree.h: Declare it.
1802         * decl2.c (determine_visibility): Make anonymous namespace
1803         members static.
1804         (min_vis_r, constrain_visibility): Likewise.
1805         * rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
1806         pseudo-types.
1807         * decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
1808         global_namespace.
1809         * name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
1810         on anonymous namespaces.
1812 2006-06-28  Jason Merrill  <jason@redhat.com>
1814         PR c++/27424
1815         * pt.c (convert_template_argument): Pass all template arguments
1816         on to coerce_template_template_parms.
1818 2006-06-25  Lee Millward  <lee.millward@gmail.com>
1819             Mark Mitchell <mark@codesuorcery.com>
1821         PR c++/28054
1822         * decl2.c (grokbitfied): Remove check for grokdeclarator
1823         returning NULL_TREE, instead check for error_mark_node
1824         to indicate failure.
1825         * decl.c (grokdeclarator): Adjust block comment.
1827 2006-06-25  Lee Millward  <lee.millward@gmail.com>
1829         PR c++/28051
1830         * mangle.c (mangle_conv_op_name_for_type): Check for
1831         invalid types.
1832         * name-lookup.c (push_class_level_binding): Robustify.
1833         (do_class_using_decl): Return early if name is error_mark_node.
1835 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
1837         PR c++/28114
1838         * name-lookup.c (pushtag): Return if we have error_mark_node.
1840 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
1842         PR c++/27019
1843         * typeck2.c (process_init_constructor_array): Set ce->value on errors.
1845 2006-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1847         PR c++/28112
1848         * parser.c (cp_parser_attribute_list): Skip attributes with invalid
1849         arguments.  Fix comment.
1851         PR c++/11468
1852         * init.c (build_new_1): Handle error_mark_nodes returned by
1853         build_java_class_ref.
1854         (build_java_class_ref): Do not abort compilation, but return
1855         error_mark_node.  Improve error message.  Fix indentation.
1857 2006-06-23  Danny Smith   <dannysmith@users.sourceforge.net>
1859         PR target/27789
1860         * decl.c (start_decl): Check that dllimports are not initialized.
1862 2006-06-22  Lee Millward  <lee.millward@gmail.com>
1864         PR c++/27805
1865         * typeck2.c (build_m_component_ref): Use error_operand_p.
1867         PR c++/27821
1868         * decl.c (grokdeclarator): Return error_mark_node on
1869         invalid uses of the scope resolution operator.
1871 2006-06-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1873         PR c++/28111
1874         * pt.c (determine_specialization): Check for invalid decls.
1876         PR c++/28110
1877         * pt.c (unify) <case TEMPLATE_PARM_INDEX>: Check for invalid
1878         parameters.
1880         PR c++/28109
1881         * rtti.c (get_tinfo_decl_dynamic): Robustify.
1883 2006-06-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1885         PR c++/28052
1886         * init.c (push_base_cleanups): Skip members with invalid types.
1887         * typeck.c (build_class_member_access_expr): Robustify.
1889 2006-06-19  Mark Mitchell  <mark@codesourcery.com>
1891         * pt.c (instantiate_template): Fix typo in comment.
1893 2006-06-19  Richard Guenther  <rguenther@suse.de>
1895         * parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near
1896         power-of-two token vector size.
1898 2006-06-16  Mark Mitchell  <mark@codesourcery.com>
1900         PR c++/28016
1901         * decl.c (cp_finsh_decl): Do not emit uninstantiated static data
1902         members.
1904         PR c++/27979
1905         * call.c (standard_conversion): Strip cv-qualifiers from bitfield
1906         types.
1908         PR c++/27884
1909         * decl.c (have_extern_spec): Remove.
1910         (start_decl): Do not check have_extern_spec.
1911         (start_function): Likewise.
1912         * cp-tree.h (have_extern_spec): Remove.
1913         * parser.c (cp_parser_linkage_specification): Don't set
1914         have_extern_spec.
1915         (cp_parser_init_declarator): Likewise.
1916         (cp_parser_parameter_declaration): Do not treat parameters as
1917         within the scope of an unbraced linkage specification.
1919 2006-06-15  Mark Mitchell  <mark@codesourcery.com>
1921         PR c++/27689
1922         * cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New
1923         macro.
1924         * pt.c (unify): Use it.
1926         PR c++/27666
1927         * call.c (build_conditional_expr): Robustify.
1929         PR c++/27640
1930         * pt.c (instantiate_template): Set processing_template_decl to
1931         zero while performing substitutions.
1933 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
1935         PR c++/27665
1936         * parser.c (cp_parser_unqualified_id): Use constructor_name_p to
1937         identify destructors.
1938         (cp_parser_nested_name_specifier_opt): Remove invalid
1939         optimization.
1940         (cp_parser_template_id): Refine heuristic for determining whether
1941         we are entering a scope.
1943         PR c++/27648
1944         * parser.c (cp_parser_declarator): Robustify.
1946         PR c++/26559
1947         * pt.c (tsubst_expr): Use finish_omp_atomic.
1948         (value_dependent_expression_p): All CALL_EXPRs are dependent.
1949         * semantics.c (finish_omp_atomic): Rework to use standard
1950         paradigms for handling non-dependent expressions.
1952 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1954         * typeck.c (build_modify_expr): Tidy diagnostic message.
1956 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
1958         PR c++/28018
1959         * typeck.c (build_modify_expr): Disallow array assignment.
1961 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1963         * cp-tree.def: Fix typo.
1965 2006-06-13  Mark Mitchell  <mark@codesourcery.com>
1967         PR c++/27227
1968         * decl.c (decls_match): Allow an extern "C" variable declarations
1969         from different namespaces to match.
1970         (duplicate_decls): Disallow redeclaring a variable with a
1971         different linkage specification.
1973 2006-06-13  Jakub Jelinek  <jakub@redhat.com>
1975         PR middle-end/27793
1976         * cp-tree.h (cxx_int_tree_map): New struct.
1977         (struct language_function): Add extern_decl_map field.
1978         * name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
1979         to cp_function_chain->extern_decl_map hash table instead of
1980         copying over DECL_UID.
1981         * cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
1982         functions.
1983         (cp_genericize_r): Remap DECL_EXTERN local decls using
1984         cp_function_chain->extern_decl_map hash table.
1985         * decl.c (finish_function): Clear extern_decl_map.
1987 2006-06-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1989         PR c++/27601
1990         * semantics.c (finish_offsetof): Handle pseudo-destructors.
1992         PR c++/27933
1993         * name-lookup.c (lookup_qualified_name): Always return error_mark_node
1994         if lookup fails.
1996         PR c++/27951
1997         * decl2.c (finish_anon_union): Return early if build_anon_union_vars
1998         fails.
2000 2006-06-12  Roger Sayle  <roger@eyesopen.com>
2002         PR c++/21210
2003         * typeck2.c (build_functional_cast): Use cp_convert to construct
2004         non-aggregate initializers instead of the user-level build_c_cast.
2006 2006-06-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2008         PR c++/27601
2009         * cp-tree.h (finish_offsetof): Add prototype.
2010         * semantics.c (finish_offsetof): New function.
2011         * parser.c (cp_parser_builtin_offsetof): Call it instead of
2012         fold_offsetof.
2013         * pt.c (tsubst_copy_and_build): Likewise.
2015 2006-06-06  Mark Mitchell  <mark@codesourcery.com>
2017         PR c++/27177
2018         * call.c (standard_conversion): Require that the derived type be
2019         complete when performing a derived-to-base conversion.
2021 2006-06-04  Mark Mitchell  <mark@codesourcery.com>
2023         PR c++/27819
2024         * decl.c (cp_finish_decl): Process initializers for static data
2025         members with non-dependent initializers, even in templates.
2027         PR c++/27722
2028         * decl.c (maybe_deduce_size_from_array_init): If the declaration
2029         is erroneous, give it an erroneous type.
2030         (layout_var_decl): If the type is erroneous, give up.
2031         (check_initializer): Likewise.
2033         PR c++/27807
2034         * cp-tree.h (TYPE_OBJ_P): New macro.
2035         (TYPE_PTROB_P): Use it.
2036         (TYPE_REF_OBJ_P): Likewise.
2037         * semantics.c (finish_compound_literal): Do not permit compound
2038         literals of non-object types.
2040         PR c++/27806
2041         * typeck.c (original_type): Robustify.
2043 2006-06-05  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2045         PR c++/27804
2046         * init.c (constant_value_1): Return decl instead of error_mark_node
2047         for invalid initializers.
2049 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
2051         PR c++/27592
2052         * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion
2053         on operand of the COND_EXPR for the null pointer check.
2055 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
2057         PR c++/26740
2058         * typeck.c (build_unary_op): Mark the function as being used.
2060 2006-06-01  Alexandre Oliva  <aoliva@redhat.com>
2062         PR c++/26660
2063         * parser.c (cp_parser_initial_pragma): Read one more token for
2064         caller after reading PCH file in.
2066 2006-05-31  Mark Mitchell  <mark@codesourcery.com>
2068         PR c++/27801
2069         * call.c (perform_implicit_conversion): Do not actually perform
2070         conversions in templates.
2072         PR c++/26496
2073         * call.c (resolve_args): Check for invalid uses of bound
2074         non-static member functions.
2075         * init.c (build_offset_ref): Return error_mark_node for errors.
2077         PR c++/27385
2078         * decl.c (reshape_init): Robustify.
2079         (reshape_init_array_1): Likewise.
2081 2006-05-30  Mark Mitchell  <mark@codesourcery.com>
2083         PR c++/27808
2084         * parser.c (cp_parser_decl_specifier_seq): Issue errors about
2085         "friend" specifiers that do not appear in class scopes.
2087         PR c++/27803
2088         * class.c (check_bitfield_decl): Ensure that all bitfields have
2089         integral type.
2091 2006-05-29  Kazu Hirata  <kazu@codesourcery.com>
2093         * pt.c (convert_nontype_argument): Fix a typo in an error
2094         message.
2096 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
2098         * decl.c, decl2.c, parser.c: Fix comment typos.  Follow
2099         spelling conventions.
2101 2006-05-24  Mark Mitchell  <mark@codesourcery.com>
2103         PR c++/20103
2104         * decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
2105         error_mark_node to indicate an initialization is OK.
2106         (start_decl): Likewise.  Adjust call to start_decl_1.
2107         (start_decl_1): Add initialized parameter.  Simplify.
2108         * except.c (initialize_handler_parm): Adjust call to
2109         setart_decl_1.
2110         (expand_start_catch_block): Let cp_finish_decl initialize catch
2111         parameters.
2112         * cp-tree.h (start_decl_1): Adjust prototype.
2113         * pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
2114         (instantiate_decl): Let cp_finish_decl handle initialization.
2115         * semantics.c (finish_compound_literal): Create a temporary
2116         variable for the literal.
2117         * typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
2118         cases.
2119         * decl2.c (finish_static_data_member_decl): Don't set
2120         DECL_INITIAL.
2121         (grokfield): Do not try to initialize functions.
2123 2006-05-23  Mark Mitchell  <mark@codesourcery.com>
2125         PR c++/20173
2126         * pt.c (determine_specialization): Disallow partial
2127         specializations of templates.
2129 2006-05-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2131         PR c++/27716
2132         * typeck.c (build_modify_expr): Test arguments for error_operand_p.
2134         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.
2136 2006-05-21  Mark Mitchell  <mark@codesourcery.com>
2138         PR c++/27210
2139         * cp-tree.h (cp_save_expr): New function.
2140         * init.c (build_new): Correct logic for zero-element array
2141         warning.  Use cp_save_expr.
2142         * tree.c (cp_save_expr): New function.
2144 2006-05-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2146         PR c++/27398
2147         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
2148         or void_type_node.
2150 2006-05-19  Mike Stump  <mrs@apple.com>
2152         * typeck.c (default_conversion): Remove static.
2154 2006-05-19  Mark Mitchell  <mark@codesourcery.com>
2156         PR c++/26433
2157         * cp-tree.h (begin_function_try_block): Change prototype.
2158         (finish_function_handler_sequence): Likewise.
2159         * parser.c (cp_parser_function_try_block): Adjust calls.
2160         * pt.c (tsubst_expr): Adjust calls.
2161         * semantics.c (begin_function_try_block): Create an artificial
2162         outer scope.
2163         (finish_function_handler_sequence): Close it.
2165 2006-05-18  Mark Mitchell  <mark@codesourcery.com>
2167         PR c++/27471
2168         PR c++/27506
2169         * typeck.c (decay_conversion): Convert bitfields to their declared
2170         types here.  Improve documentation.  Avoid use of cp_convert.
2171         (default_conversion): Make it static.  Perform integral promotions
2172         before lvalue-to-rvalue, function-to-pointer, and array-to-pointer
2173         conversions.
2174         * init.c (build_init): Remove.
2175         (expand_default_init): Do not call rvalue.
2176         * call.c (null_ptr_cst_p): Robustify.
2177         (build_conditional_expr): Tidy.
2178         * except.c (build_throw): Do not perform lvalue-to-rvalue
2179         conversion on operand before initializing temporary.
2180         * tree.c (convert.h): Include it.
2181         (convert_bitfield_to_declared_type): Use convert_to_integer, not
2182         cp_convert.
2183         (rvalue): Don't convert bitfields to their declared type here.
2184         * cp-tree.h (build_init): Remove.
2185         (default_conversion): Likewise.
2186         * typeck2.c (build_m_component_ref): Do not perform
2187         lvalue-to-rvalue, function-to-pointer, or array-to-pointer
2188         conversions here.  Correct error message.
2190 2006-05-17  Mark Mitchell  <mark@codesourcery.com>
2192         PR c++/26122
2193         * decl2.c (check_member_template): Remove checks for virtual
2194         functions.
2195         * parser.c (cp_parser_function_specifier_opt): Complain about
2196         virtual templates.
2197         (cp_parser_pure_specifier): Likewise.
2199         PR c++/26068
2200         * parser.c (cp_parser_set_storage_class): Check for
2201         invalid uses of storage classes on unbraced linkage
2202         specifications.
2203         (cp_parser_decl_specifier_seq): Pass keywords, not storage classes,
2204         to cp_parser_set_storage_class.
2206 2006-05-17  Jakub Jelinek  <jakub@redhat.com>
2208         PR c++/27491
2209         * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR
2210         on CONSTRUCTORs.
2212         PR middle-end/27415
2213         * parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
2214         on combined parallel workshare constructs.
2215         * pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag.
2217 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
2219         PR driver/26885
2220         * Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS).
2222 2006-05-15  Mark Mitchell  <mark@codesourcery.com>
2224         PR c++/27339
2225         * cp-tree.h (perform_access_checks): New function.
2226         * semantics.c (perform_access_checks): New function.
2227         (perform_deferred_access_checks): Use it.
2228         * parser.c (cp_parser_simple_declaration): Adjust call to
2229         cp_parser_init_declarator.
2230         (cp_parser_type_parameter): Do not defer checks in default
2231         arguments.
2232         (cp_parser_explicit_specialization): Adjust call to
2233         cp_parser_single_declaration.
2234         (cp_parser_init_declarator): Perform template-parameter access
2235         checks.
2236         (cp_parser_parameter_declaration): Do not defer checks for
2237         template parameter default arguments.
2238         (cp_parser_template_declaration_after_export): Gather access
2239         checks for template parameters, and pass them to
2240         cp_parser_single_declaration.
2241         (cp_parser_template_parameter_access_checks): New function.
2242         (cp_parser_single_declaration): Add checks parameter.
2244         PR c++/27505
2245         * call.c (convert_like_real): Convert bitfields to their declared
2246         types when forming an rvalue.
2247         * tree.c (convert_bitfield_to_declared_type): New function.
2248         (rvalue): Use it.
2249         * cp-tree.h (convert_bitfield_to_declare_type): Declare it.
2251 2006-05-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2253         PR c++/27582
2254         * pt.c (any_dependent_template_arguments_p): Return early on invalid
2255         argument list.
2257         PR c++/27581
2258         * search.c (adjust_result_of_qualified_name_lookup): Skip on
2259         invalid context_class.
2261         PR c++/27315
2262         * pt.c (do_decl_instantiation): Return early on invalid decl.
2264         PR c++/27559
2265         * pt.c (push_template_decl_real): Return error_mark_node instead
2266         of broken decl.
2268         PR c++/27496
2269         * pt.c (tsubst_friend_class): Return early on invalid friend
2270         declarations.
2272 2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>
2274         * Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H).
2275         (cp/decl2.o): Likewise.
2276         (cp/typeck.o): Likewise.
2277         (cp/cvt.o): Likewise.
2278         (cp/parser.o): Likewise.
2279         (cp/call.o): Replace target.h with $(TARGET_H).
2281 2006-05-14  Alexandre Oliva  <aoliva@redhat.com>
2283         * pt.c (build_non_dependent_expr): Leave ADDR_EXPR of
2284         COMPONENT_REF alone.
2286 2006-05-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2288         PR c++/27547
2289         * decl.c (copy_fn_p): Return early on non-member functions.
2291 2006-05-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2293         PR c++/27447
2294         * decl2.c (build_memfn_type): Skip invalid functions and class types.
2296 2006-05-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2298         PR c++/27427
2299         * pt.c (convert_nontype_argument): Return early on invalid arguments.
2301         * pt.c (process_template_parm): Remove superfluous temporary.
2303         PR c++/27430
2304         * pt.c (process_template_parm): Handle erroneous non-type parameters.
2306         PR c++/27423
2307         * typeck.c (convert_for_initialization): Skip erroneous types.
2309         PR c++/27422
2310         * typeck.c (convert_arguments): Return early on args with
2311         invalid types.
2313 2006-05-03  Aldy Hernandez  <aldyh@redhat.com>
2315         PR/21391
2316         * typeck.c (build_static_cast_1): Save casted types in used types
2317         hash table.
2318         (build_reinterpret_cast_1): Same.
2319         * rtti.c (build_dynamic_cast_1): Same.
2321 2006-05-04  Jakub Jelinek  <jakub@redhat.com>
2323         PR c++/27359
2324         * parser.c (cp_parser_omp_for_loop): Only call
2325         cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
2326         called.
2328 2006-05-02  Mark Mitchell  <mark@codesourcery.com>
2330         PR c++/27102
2331         * decl.c (grokdeclarator): Robustify checks for defining members
2332         of incomplete types.
2334         PR c++/27309
2335         * class.c (add_method): Call grok_special_member_properties.
2336         * decl.c (grokdeclarator): Don't call it here.
2337         (copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
2338         assignment operator.  Set TYPE_HAS_CONSTURCTOR if DECL is a
2339         constructor.
2340         (start_method): Don't call grok_special_member_properties.
2341         * method.c (implicitly_declare_fn): Likewise.
2342         * pt.c (instantiate_class_template): Likewise.
2343         * decl2.c (grokfield): Likewise.
2345 2006-05-02  Jakub Jelinek  <jakub@redhat.com>
2347         PR middle-end/27337
2348         * cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
2349         * cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
2350         * cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.
2352 2006-04-30  Mark Mitchell  <mark@codesourcery.com>
2354         PR c++/27094
2355         * pt.c (tsubst_default_argument): Increment function_depth around
2356         call to tsubst_expr.
2357         * parser.c (cp_parser_parameter_declaration): Likewise.
2358         * decl2.c (mark_used): Tidy.
2360 2006-04-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2362         PR c++/27278
2363         * decl.c (grok_op_properties): Skip operators with invalid args
2364         when checking for class-type or enum-type args.
2366 2006-04-29  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2368         PR c++/27279
2369         * decl.c (copy_fn_p): Skip functions with invalid first arg.
2371 2006-04-27  Mark Mitchell  <mark@codesourcery.com>
2373         PR c++/27292
2374         * tree.c (rvalue): Convert bitfields to their declared types.
2376         PR c++/27102
2377         * typeck2.c (cxx_incomplete_type_diagnostic): Handle
2378         TYPENAME_TYPE.
2380 2006-04-24  Mark Mitchell  <mark@codesourcery.com>
2382         PR c++/27292
2383         * typeck.c (decay_conversion): Don't adjust bitfield types.
2384         (perform_integral_promotions): Treat bitfield enums as enums, not
2385         as short integer types.
2386         * tree.c (rvalue): Convert bitfields to their correct types.
2388 2006-04-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2390         PR c++/19963
2391         * class.c (layout_class_type): Skip fields with invalid types.
2393 2006-04-23  Mark Mitchell  <mark@codesourcery.com>
2395         PR c++/26912
2396         * cp-tree.h (build_this_parm): Declare.
2397         (grok_method_quals): Remove.
2398         (build_memfn_type): Declare.
2399         (build_artificial_parm): Declare.
2400         (do_friend): Remove quals parameter.
2401         * decl.c (build_this_parm): New function.
2402         (grokfndecl): Use it.  Do not pass quals to grokclassfn.
2403         (grokdeclarator): Rename quals to memfn_quals.  Avoid allocating
2404         unnecessary TYPE_DECLs.  Correct qualification of member function
2405         types.  Tidy.
2406         * method.c (implicitly_declare_fn): Use build_this_parm.
2407         * friend.c (do_friend): Remove quals parameter.
2408         * decl2.c (grok_method_quals): Remove.
2409         (build_memfn_type): New function.
2410         (build_artificial_parm): Give it external linkage.
2411         (grokclassfn): Remove quals parameter.  Do not build "this"
2412         PARM_DECL here.
2414         PR c++/26534
2415         * cp-tree.h (is_bitfield_expr_with_lowered_type): New function.
2416         * typeck.c (is_bitfield_expr_with_lowered_type): New function.
2417         (decay_conversion): Convert bitfield expressions to the correct
2418         type.
2419         (build_modify_expr): Remove spurious conversions.
2420         * class.c (layout_class_type): Modify the type of bitfields to
2421         indicate a limited range.
2422         * call.c (standard_conversion): Adjust the type of bitfield
2423         expressions used in an rvalue context.
2424         (build_conditional_expr): Likewise.
2426 2006-04-22  Kazu Hirata  <kazu@codesourcery.com>
2428         * decl.c: Fix comment typos.
2430 2006-04-21  Eric Christopher  <echristo@apple.com>
2432         * decl.c: Fix typo in function name.
2434 2006-04-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2436         PR c++/26558
2437         * parser.c (cp_parser_class_name): Check for invalid typenames.
2438         Rearrange code.
2440         PR c++/26739
2441         * pt.c (tsubst_friend_function): Return early if
2442         pushdecl_namespace_level fails.
2444         PR c++/26036
2445         * typeck.c (convert_arguments): Return error_mark_node instead of
2446         error_mark_list.
2447         * cp-tree.h (error_mark_list): Remove declaration.
2448         * decl.c (error_mark_list): Remove definition.
2449         (cxx_init_decl_processing): Do not initialize error_mark_list.
2451         PR c++/10385
2452         * rtti.c (build_dynamic_cast_1): Check for invalid conversions
2453         before calling convert_to_reference.
2454         * cvt.c (convert_to_reference): Assert that reftype is a
2455         REFERENCE_TYPE.
2457 2006-04-19  Mark Mitchell  <mark@codesourcery.com>
2459         PR c++/27102
2460         * class.c (currently_open_class): Tidy.
2461         * decl.c (grokdeclarator): If we encounter an erroneous
2462         declarator, assume that we have already issued an error message
2463         and return.  Return error_mark_node instead of NULL_TREE in more
2464         places.  Issue errors about function definitions that do not have
2465         a function declarator.  Check for complete types for all function
2466         definitions.
2467         * cp-tree.h (cp_error_declarator): Remove.
2468         (currently_open_class): Change return type.
2469         * parser.c (cp_parser_id_expression): Add optional_p parameter.
2470         (cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
2471         (cp_parser_id_expression): Likewise.
2472         (cp_parser_unqualified_id): If the name is optional, return
2473         NULL_TREE.
2474         (cp_parser_postfix_dot_deref_expression): Adjust calls.
2475         (cp_parser_type_parameter): Likewise.
2476         (cp_parser_unqualified_id): Likewise.
2477         (cp_parser_direct_declarator): Likewise.
2478         (cp_parser_declarator_id): Add optional_p parameter.
2479         (cp_parser_function_definition_from_specifiers_and_declarator):
2480         Assume that start_function indicates failure only if it has issued
2481         an error.
2482         (cp_parser_omp_var_list_no_open): Adjust calls.
2484 2006-04-17  Janis Johnson  <janis187@us.ibm.com>
2486         PR c++/26114, c++/26115
2487         * typeck.c (cxx_mark_addressable): Restore check for extra_warnings.
2488         * class.c (check_field_decls): Ditto.
2490 2006-04-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2492         * init.c (build_offset_ref): Remove superfluous temporary.
2494 2006-04-16  Mark Mitchell  <mark@codesourcery.com>
2496         PR c++/26365
2497         * typeck.c (finish_class_member_access_expr): Robustify
2499 2006-04-15  Kazu Hirata  <kazu@codesourcery.com>
2501         * Make-lang.in (cp/pt.o): Depend on vecprim.h.
2502         * pt.c: Include vecprim.h.
2503         (inline_parm_levels): Change the type to VEC(int,heap) *.
2504         (inline_parm_levels_used): Remove.
2505         (maybe_begin_member_template_processing,
2506         maybe_end_member_template_processing): Use VEC instead of
2507         VARRAY.
2509         * cp/call.c: Fix comment typos.
2511 2006-04-12  Mark Mitchell  <mark@codesourcery.com>
2513         * parser.c (cp_parser_init_declarator): Initialize local variables
2514         aggressively.
2516 2006-04-12  Roger Sayle  <roger@eyesopen.com>
2518         * parser.c (cp_parser_init_declarator): Initialise
2519         is_parenthesized_init to false to avoid compiler warning.
2521 2006-04-11  Mark Mitchell  <mark@codesourcery.com>
2523         * cp-tree.h (build_operator_new_call): Adjust prototype.
2524         (build_new_method_call): Likewise.
2525         (build_op_delete_call): Likewise.
2526         * init.c (build_raw_new_expr): New function.
2527         (build_new_1): Pass information as parameters, rather than
2528         bundling it into a NEW_EXPR.
2529         (build_new): Adjust accordingly.
2530         (build_vec_delete_1): Adjust for changes to build_op_delete_call.
2531         (build_delete): Likewise.
2532         * decl.c (finish_destructor_body): Likewise.
2533         * call.c (build_operator_new_call): Return the allocation function
2534         used.
2535         (build_op_delete_call): Take allocation function as parameter.
2536         (build_special_member_call): Adjust call to build_new_method_call.
2537         (build_new_method_call): Return function called.
2538         * pt.c (tsubst_copy_and_build): Adjust call to
2539         build_new_method_call.
2540         * semantics.c (finish_call_expr): Likewise.
2541         * parser.c (cp_parser_postfix_expression): Likewise.
2542         * typeck2.c (cxx_incomplete_type_diagnostic): Refer to
2543         "incomplete", not "undefined", types.
2545         PR c++/26295
2546         * decl.c (grokdeclarator): Remove namespace-handling code for
2547         pointers-to-members.
2548         * parser.c (cp_parser_ptr_operator): Check for qualified names
2549         using namespaces.
2551         PR c++/26122
2552         * parser.c (cp_parser_init_declarator): Adjust logic for deciding
2553         whether or not to look for a pure-specifier.
2554         (cp_parser_member_declaration): Likewise.
2556 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
2558         * decl2.c, pt.c, semantics.c: Fix comment typos.
2560 2006-04-06  Roger Sayle  <roger@eyesopen.com>
2562         * call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check.
2564 2006-04-05  Jason Merrill  <jason@redhat.com>
2566         * name-lookup.c (push_namespace_with_attribs): Temporarily disable
2567         default hidden visibility for anonymous namespace.
2569 2006-03-29  Roger Sayle  <roger@eyesopen.com>
2571         PR c++/22494
2572         * init.c (build_vec_delete_1): Convert BASE pointer's type to
2573         the base pointer type to avoid a type mismatch in the EQ_EXPR.
2575 2006-03-24  Carlos O'Donell  <carlos@codesourcery.com>
2577         * search.c (maybe_suppress_debug_info): If
2578         flag_emit_class_debug_always then don't suppress.
2580 2006-03-22  Jason Merrill  <jason@redhat.com>
2582         * name-lookup.c (push_namespace_with_attribs): Only apply hidden
2583         visibility to anonymous namespaces if HAVE_GAS_HIDDEN.
2585 2006-03-21  Jakub Jelinek  <jakub@redhat.com>
2587         PR c++/26691
2588         * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments.
2590 2006-03-21  Jason Merrill  <jason@redhat.com>
2592         PR c++/21581
2593         * parser.c (cp_parser_declaration): Support attributes on
2594         anonymous namespaces.
2595         * name-lookup.c (push_namespace_with_attribs): Anonymous
2596         namespaces default to hidden visibility.
2598 2006-03-20  Jason Merrill  <jason@redhat.com>
2600         PR c++/21764, c++/19238
2601         * decl.c (cp_finish_decl): Call determine_visibility later.
2602         (start_preparsed_function): Likewise.
2603         * cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
2604         (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
2605         * name-lookup.h (struct cp_binding_level): Add has_visibility
2606         bitfield.
2607         * name-lookup.c: Include c-pragma.h.
2608         (push_namespace_with_attribs): Split out from push_namespace.
2609         Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
2610         (leave_scope): Pop visibility if appropriate.
2611         * decl2.c (determine_visibility_from_class): Split out from...
2612         (determine_visibility): ...here.  Handle function scope and
2613         nested classes.
2614         (import_export_decl): Move visibility handling to
2615         determine_visibility_from_class.
2616         * parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
2617         attributes on namespace declarations.
2619 2006-03-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2621         PR c++/6634
2622         * decl.c (grokdeclarator): Do not accept long long double.
2623         Reorganize checks for invalid (combinations of) type modifiers.
2624         Quote modifiers in messages.
2626 2006-03-09  Jason Merrill  <jason@redhat.com>
2628         PR c++/16387, c++/16389
2629         * typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions.
2630         (cxx_sizeof_or_alignof_expr): Split out from here.
2632 2006-03-09  Diego Novillo  <dnovillo@redhat.com>
2634         Merge from gomp-20050608-branch
2636         2006-02-02  Diego Novillo  <dnovillo@redhat.com>
2638                 * decl.c (pop_labels_1): Use appropriate pointer casting.
2639                 (poplevel_named_label_1): Likewise.
2640                 (named_label_entry_hash): Likewise.
2641                 (named_label_entry_eq): Likewise.
2642                 (check_goto): Likewise.
2643                 (define_label): Likewise.
2645         2006-01-26  Diego Novillo  <dnovillo@redhat.com>
2647                 * cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead
2648                 of TREE_BLOCK.
2649                 * pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND
2650                 instead of TREE_CODE/TREE_OPERAND.
2651                 * semantics.c: Likewise.
2652                 * parser.c: Likewise.
2654         2005-11-10  Diego Novillo  <dnovillo@redhat.com>
2656                 * parser.c (cp_parser_omp_threadprivate): Emit diagnostic if
2657                 target does not support TLS.
2659         2005-11-09  Jakub Jelinek  <jakub@redhat.com>
2661                 * decl.c (redeclaration_error_message): Don't error about
2662                 DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P
2663                 (olddecl).
2665         2005-11-08  Jakub Jelinek  <jakub@redhat.com>
2667                 PR c++/24735
2668                 * semantics.c (finish_omp_barrier, finish_omp_flush): New
2669                   functions.
2670                 * parser.c (cp_parser_omp_barrier): Call finish_omp_barrier.
2671                 (cp_parser_omp_flush): Call finish_omp_flush.
2672                 * cp-tree.h (finish_omp_barrier, finish_omp_flush): New
2673                   prototypes.
2675                 PR c++/24734
2676                 * pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED.
2678         2005-11-03  Jakub Jelinek  <jakub@redhat.com>
2680                 * semantics.c (finish_omp_threadprivate): Error on class-scope
2681                 variables.
2683         2005-11-02  Jakub Jelinek  <jakub@redhat.com>
2685                 * parser.c (cp_parser_omp_all_clauses): If some clause
2686                 type is not allowed, don't remove just one of the
2687                 clauses, but all clauses added in that loop round.
2689                 * semantics.c (finish_omp_clauses): Fix function
2690                 comment. Don't handle non-const or mutable specially,
2691                 as const and not mutable is predetermined shared and
2692                 that leads to double error. Don't ICE if copyin var is
2693                 PARM_DECL.
2695                 PR c++/24613
2696                 * parser.c (cp_parser_pragma): Diagnose
2697                 PRAGMA_OMP_SECTION outside of PRAGMA_OMP_SECTIONS
2698                 construct.
2700                 * semantics.c (finish_omp_threadprivate): Error if V
2701                   is automatic variable or has incomplete type.
2703         2005-11-01  Diego Novillo  <dnovillo@redhat.com>
2705                 * parser.c (cp_parser_omp_all_clauses): Use
2706                 OMP_CLAUSE_CHAIN instead of TREE_CHAIN.
2708         2005-11-01  Diego Novillo  <dnovillo@redhat.com>
2710                 * parser.c (cp_parser_omp_all_clauses): When emitting an
2711                 error message, remove the invalid clause from the list.
2713         2005-10-31  Diego Novillo  <dnovillo@redhat.com>
2715                 * parser.c (cp_parser_omp_parallel): Do not allow 'nowait' in
2716                 combined parallel+workshare directives.
2718         2005-10-31  Richard Henderson  <rth@redhat.com>
2720                 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DTOR):
2721                 Use cxx_omp_clause_dtor.
2722                 * cp-tree.h (CP_OMP_CLAUSE_INFO): New.
2723                 (cxx_omp_clause_dtor): New.
2724                 * cp-gimplify.c (cxx_omp_clause_apply_fn): New.
2725                 (cxx_omp_clause_default_ctor): Use it.
2726                 (cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op):
2727                 Likewise.
2728                 (cxx_omp_clause_dtor): New.
2729                 * semantics.c (finish_omp_clauses): Rewrite cdtor
2730                 checking to fill in CP_OMP_CLAUSE_INFO.  Don't
2731                 specialcase LASTPRIVATE for removal.
2732                 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
2733                 cxx_omp_clause_assign_op): Move to cp-gimplify.c.
2735         2005-10-28  Jakub Jelinek  <jakub@redhat.com>
2737                 * semantics.c (finish_omp_threadprivate): If
2738                   DECL_RTL_SET_P, call make_decl_rtl again so that
2739                   encode_section_info can update SYMBOL_REF's flags.
2741         2005-10-26  Jakub Jelinek  <jakub@redhat.com>
2743                 * semantics.c (finish_omp_for): Don't segfault if COND
2744                 or INCR is NULL.  If not calling c_finish_omp_for
2745                 right away and one of COND and INCR is NULL, issue
2746                 error and don't expand anything.
2748                 PR c++/24512
2749                 * cp-tree.h (finish_omp_for): Add PRE_BODY argument.
2750                 * semantics.c (finish_omp_for): Likewise.  Set
2751                 OMP_FOR_PRE_BODY to PRE_BODY if deferring, add it
2752                 into the current statement list if not processing
2753                 template decl or pass it to c_finish_omp_for.
2755                 * parser.c (cp_parser_omp_for_loop): Expand optional DECL_EXPRs
2756                 into PRE_BODY statement list.  Pass it to finish_omp_for.
2757                 * pt.c (tsubst_expr) <case OMP_FOR>: tsubst_expr also
2758                 OMP_FOR_PRE_BODY into PRE_BODY stmt list, pass it to
2759                 finish_omp_for.  Put all the statements into sk_omp
2760                 scope.
2762         2005-10-25  Jakub Jelinek  <jakub@redhat.com>
2764                 PR c++/24516
2765                 * parser.c (struct cp_parser): Rename in_iteration_statement
2766                 field to in_statement.
2767                 (IN_SWITCH_STMT, IN_ITERATION_STMT): Define.
2768                 (IN_OMP_BLOCK, IN_OMP_FOR): Change values.
2769                 (cp_parser_new, cp_parser_begin_omp_structured_block,
2770                 cp_parser_end_omp_structured_block,
2771                 cp_parser_omp_for_loop): Adjust for
2772                 in_iteration_statement renaming.
2773                 (cp_parser_selection_statement): Save
2774                 parser->in_iteration, or it temporarily with
2775                 IN_SWITCH_STMT for the
2776                 cp_parser_implicitly_scoped_statement call.
2777                 (cp_parser_iteration_statement): Adjust for
2778                 in_iteration_statement renaming.  Use
2779                 IN_ITERATION_STMT rather than true.
2780                 (cp_parser_jump_statement): Adjust for
2781                 in_iteration_statement renaming and new values.  Don't
2782                 error on break in a switch statement within OMP_FOR or
2783                 OpenMP structured block.
2785                 PR c++/24513
2786                 * parser.c (cp_parser_cache_group): Don't stop if next
2787                 token is CPP_PRAGMA_EOL and end is CPP_PRAGMA_EOL as
2788                 well.  If current token is CPP_PRAGMA, consume
2789                 everything until CPP_PRAGMA_EOL inclusive.
2791         2005-10-24  Jakub Jelinek  <jakub@redhat.com>
2793                 PR c++/24502
2794                 * semantics.c (finish_omp_for): Handle MODOP_EXPR in
2795                 addition to MODIFY_EXPR.
2797         2005-10-23  Richard Henderson  <rth@redhat.com>
2799                 * cp-gimplify.c (struct cp_gimplify_ctx): Remove.
2800                 (bc_label): New.
2801                 (begin_bc_block, finish_bc_block): Use it.
2802                 (push_context, pop_context): Remove.
2803                 (cp_genericize): Don't use them.  Assert bc_label is null.
2804                 * semantics.c (finish_omp_clauses): Create a fake data
2805                 element of TYPE for probing ctors.
2807         2005-10-23  Richard Henderson  <rth@redhat.com>
2809                 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): New.
2810                 (LANG_HOOKS_OMP_CLAUSE_COPY_CTOR): New.
2811                 (LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP): New.
2812                 (LANG_HOOKS_OMP_CLAUSE_DTOR): New.
2813                 * semantics.c (finish_omp_clauses): Look through
2814                 arrays when looking up special member calls.  Also
2815                 remove FIRSTPRIVATE when LASTPRIVATE fails.
2816                 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor): New.
2817                 (cxx_omp_clause_assign_op): New.
2818                 * cp-tree.h: Declare them.
2820         2005-10-21  Richard Henderson  <rth@redhat.com>
2822                 * decl.c (check_previous_goto_1): Return false if error.
2823                 (check_switch_goto): Likewise.
2824                 (finish_case_label): Don't emit the case label on error.
2825                 * parser.c (struct cp_parser): Revert
2826                 in_switch_statement_p changes.
2827                 (cp_parser_labeled_statement,
2828                 cp_parser_selection_statement): Likewise.
2829                 (cp_parser_begin_omp_structured_block): Don't save...
2830                 (cp_parser_end_omp_structured_block): or restore
2831                 in_switch_statement_p.
2833         2005-10-21  Richard Henderson  <rth@redhat.com>
2835                 * semantics.c (finish_omp_threadprivate): Set
2836                 decl_flags.u2sel when necessary.
2838         2005-10-21  Richard Henderson  <rth@redhat.com>
2840                 * decl.c (poplevel_named_label_1): Restore creation of the
2841                 bad_decls list.
2842                 (decl_jump_unsafe): Check for error_mark_node types.
2843                 (check_goto): Don't check cdtor_label.  Don't use identify_goto.
2844                 * semantics.c (finish_return_stmt): Do check_omp_return before
2845                 converting to cdtor_label goto.
2847         2005-10-21  Richard Henderson  <rth@redhat.com>
2849                 PR c++/24451
2850                 * decl.c (check_omp_return): Return false on error.
2851                 * cp-tree.h (check_omp_return): Update decl.
2852                 * semantics.c (finish_return_stmt): Avoid adding
2853                 return on error.
2855         2005-10-21  Richard Henderson  <rth@redhat.com>
2857                 * cp-tree.h (struct language_function): Remove
2858                 x_named_label_uses.
2859                 Change x_named_labels to a hashtable.
2860                 (check_omp_return): Declare.
2861                 * decl.c (struct named_label_use_entry): Rename from
2862                 named_label_use_list.  Remove label_decl.
2863                 (struct named_label_entry): Rename from
2864                 named_label_list.  Remove old_value and next.  Change
2865                 in_try_scope and in_catch_scope to bool. Add
2866                 in_omp_scope.
2867                 (pop_labels_1): New.
2868                 (pop_labels): Use it.
2869                 (pop_local_label, poplevel_named_label_1): New.
2870                 (poplevel): Use them.
2871                 (named_label_entry_hash, named_label_entry_eq): New.
2872                 (make_label_decl): Create named_labels.  Move label
2873                 creation bits from lookup_label.
2874                 (declare_local_label): Tidy.
2875                 (identify_goto): Split out from ...
2876                 (check_previous_goto_1): Add exited_omp argument.
2877                 Handle omp scopes.
2879                 (use_label): Merge into...
2880                 (check_goto): ... here.  Handle omp scopes.
2881                 (check_omp_return): New.
2882                 (check_previous_gotos): Merge into...
2883                 (define_label): ... here.
2884                 (save_function_data): Remove x_named_label_uses reference.
2885                 (finish_function): Likewise.
2886                 * name-lookup.h (sk_omp): New.
2887                 * name-lookup.c (begin_scope): Handle it.
2888                 * parser.c (cp_parser_omp_for): Don't create extra
2889                 compound stmt.
2891                 (cp_parser_omp_sections): Likewise.
2892                 * semantics.c (finish_return_stmt): Call check_omp_return.
2893                 (begin_omp_structured_block): Use sk_omp.
2894                 (finish_omp_structured_block): Use do_poplevel.  Don't build a
2895                 MUST_NOT_THROW expression here.
2896                 (begin_omp_parallel, finish_omp_parallel): Don't create extra
2897                 compound statements.
2899         2005-10-21  Diego Novillo  <dnovillo@redhat.com>
2901                 PR 24455
2902                 * cp/cp-tree.h (struct lang_decl_flags): Add field
2903                 threadprivate_p.
2904                 (CP_DECL_IS_THREADPRIVATE): Define.
2905                 * cp/semantics.c (finish_omp_threadprivate): Set.  Do
2906                 not error out if CP_DECL_IS_THREADPRIVATE is set
2907                 already.
2908                 * cp/decl.c (duplicate_decls): Merge
2909                 CP_DECL_THREADPRIVATE_P.
2911         2005-10-20  Richard Henderson  <rth@redhat.com>
2913                 * cp-gimplify.c (cp_gimplify_omp_for): New.
2914                 (cp_gimplify_expr): Call it.
2915                 * cp-tree.h (OMP_FOR_GIMPLIFYING_P): New.
2916                 * parser.c (struct cp_parser): Rename
2917                 in_iteration_statement_p to in_iteration_statement and
2918                 change to unsigned char.  Similarly with
2919                 in_switch_statement.  Update all users.
2920                 (IN_OMP_BLOCK, IN_OMP_FOR): New.
2921                 (cp_parser_labeled_statement): Diagnose case labels
2922                 binding closer to an openmp block nested than the
2923                 switch.
2924                 (cp_parser_jump_statement): Diagnose break and
2925                 continue labels binding closer to an openmp block than
2926                 an iteration or switch.
2927                 (cp_parser_omp_for_loop): Mark in_iteration_statement
2928                 for an omp for.
2929                 (cp_parser_begin_omp_structured_block): New.
2930                 (cp_parser_end_omp_structured_block): New.
2931                 (cp_parser_omp_structured_block): Use them.
2932                 (cp_parser_omp_for, cp_parser_omp_sections_scope): Likewise.
2933                 (cp_parser_omp_parallel): Likewise.
2935         2005-10-20  Richard Henderson  <rth@redhat.com>
2937                 * semantics.c (begin_omp_structured_block): New.
2938                 (finish_omp_structured_block): New.
2939                 (begin_omp_parallel, finish_omp_parallel): Use them.
2940                 * parser.c (cp_parser_omp_structured_block): Likewise.
2941                 (cp_parser_omp_for): Likewise.
2942                 (cp_parser_omp_sections_scope): Likewise.
2943                 * cp-tree.h: Declare them.
2945         2005-10-20  Richard Henderson  <rth@redhat.com>
2947                 * parser.c (cp_parser_omp_master): Return the statement.
2948                 (cp_parser_omp_ordered): Likewise.
2949                 (cp_parser_omp_construct): Set the locus for them.
2951         2005-10-19  Richard Henderson  <rth@redhat.com>
2953                 * semantics.c (finish_omp_atomic): Revert to
2954                 uses_template_parms.
2956         2005-10-19  Richard Henderson  <rth@redhat.com>
2958                 * semantics.c (finish_omp_clauses): Avoid
2959                 DECL_THREAD_LOCAL_P on a PARM_DECL.  Remove some
2960                 stub asserts guaranteed to fail.
2962         2005-10-19  Richard Henderson  <rth@redhat.com>
2964                 * cp-tree.h (OMP_ATOMIC_DEPENDENT_P, OMP_ATOMIC_CODE): New.
2965                 (finish_omp_clauses, finish_omp_for, finish_omp_atomic): New.
2966                 * parser.c (cp_parser_omp_clause_copyin): Remove.
2967                 (cp_parser_omp_all_clauses): Use cp_parser_omp_var_list instead.
2968                 Call finish_omp_clauses.
2969                 (cp_parser_omp_clause_if): Don't do error checking here.
2970                 (cp_parser_omp_clause_num_threads): Likewise.
2971                 (cp_parser_omp_clause_schedule): Likewise.
2972                 (cp_parser_omp_atomic): Use finish_omp_atomic.
2973                 (cp_parser_omp_for_loop): Don't discard DECL_EXPR.
2974                 Don't decompose assignment statment here.  Use
2975                 finish_omp_for.
2977                 * pt.c (tsubst_omp_clauses): New.
2978                 (tsubst_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
2979                 OMP_SINGLE, OMP_SECTION, OMP_CRITICAL, OMP_ATOMIC.
2980                 * semantics.c (finish_omp_clauses): New.
2981                 (begin_omp_parallel, finish_omp_parallel): Know Less about the
2982                 internals of the stmt_list stack.
2983                 (finish_omp_for, finish_omp_atomic): New.
2985         2005-10-18  Jakub Jelinek  <jakub@redhat.com>
2987                 * semantics.c (cxx_omp_predetermined_sharing): New function.
2988                 * cp-tree.h (cxx_omp_predetermined_sharing): New prototype.
2989                 * cp-objcp-common.h
2990                 (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
2992         2005-10-18  Richard Henderson  <rth@redhat.com>
2994                 * parser.c (cp_parser_omp_single): Use make_node and accessors
2995                 instead of build.
2997         2005-10-17  Richard Henderson  <rth@redhat.com>
2999                 * parser.c (cp_parser_omp_for_loop): Handle declarations.
3001         2005-10-12  Richard Henderson  <rth@redhat.com>
3003                 * Make-lang.in (CXX_C_OBJS): Add c-omp.o.
3004                 * cp-tree.h (begin_omp_parallel, finish_omp_parallel): Declare.
3005                 (finish_omp_threadprivate): Declare.
3006                 * parser.c (struct cp_lexer): Add in_pragma.
3007                 (cp_lexer_consume_token): Don't consume a PRAGMA_EOL
3008                 when in_pragma.
3009                 (cp_parser_skip_to_closing_parenthesis): Stop at PRAGMA_EOL.
3010                 (cp_parser_skip_to_end_of_statement): Likewise.
3011                 (cp_parser_skip_to_end_of_block_or_statement): Likewise.
3012                 (cp_parser_skip_to_closing_brace): Likewise.
3013                 (cp_parser_skip_to_pragma_eol): Reset in_pragma.
3014                 (cp_parser_require_pragma_eol): New.
3015                 (cp_parser_statement): Add in_compound argument;
3016                 update all callers.
3017                 Restart if a non-statement pragma seen outside a
3018                 compound.
3019                 (cp_parser_statement_seq_opt): Stop at PRAGMA_EOL.
3020                 (cp_parser_declaration_seq_opt): Likewise.
3021                 (cp_parser_member_specification_opt): Likewise.
3022                 (cp_parser_function_definition_after_decl): Likewise.
3023                 (cp_parser_skip_until_found): Likewise.
3024                 (cp_parser_cache_group): Likewise.
3025                 (enum pragma_omp_clause, cp_parser_omp_clause_name,
3026                 check_no_duplicate_clause,
3027                 cp_parser_omp_var_list_no_open,
3028                 cp_parser_omp_var_list, cp_parser_omp_clause_copyin,
3029                 cp_parser_omp_clause_default, cp_parser_omp_clause_if,
3030                 cp_parser_omp_clause_nowait,
3031                 cp_parser_omp_clause_num_threads,
3032                 cp_parser_omp_clause_ordered,
3033                 cp_parser_omp_clause_reduction,
3034                 cp_parser_omp_clause_schedule,
3035                 cp_parser_omp_all_clauses,
3036                 cp_parser_omp_structured_block, cp_parser_omp_atomic,
3037                 cp_parser_omp_barrier, cp_parser_omp_critical,
3038                 cp_parser_omp_flush, cp_parser_omp_for_loop,
3039                 cp_parser_omp_for, cp_parser_omp_master,
3040                 cp_parser_omp_ordered, cp_parser_omp_sections_scope,
3041                 cp_parser_omp_sections, cp_parser_omp_parallel,
3042                 cp_parser_omp_single, cp_parser_omp_threadprivate,
3043                 cp_parser_omp_construct): New.
3044                 (cp_parser_pragma): Handle OpenMP pragmas.
3045                 * semantics.c (finish_omp_threadprivate): New.
3046                 (begin_omp_parallel, finish_omp_parallel): New.
3048         2005-10-11  Richard Henderson  <rth@redhat.com>
3050                 * parser.c (struct cp_token): Add pragma_kind.
3051                 (eof_token): Initialize it.
3052                 (cp_lexer_handle_pragma): Remove.
3053                 (cp_parser_initial_pragma): New.
3054                 (cp_lexer_new_main): Use it.
3055                 (cp_lexer_get_preprocessor_token): Initialize pragma_kind.
3056                 (cp_lexer_print_token): Don't handle CPP_PRAGMA.
3057                 (cp_parser_skip_to_pragma_eol): New.
3058                 (cp_parser_error): Use it.
3059                 (pragma_lex): New.
3061         2005-10-09  Richard Henderson  <rth@redhat.com>
3063                 * lex.c (parse_strconst_pragma): Update for c_lex name change.
3064                 (handle_pragma_java_exceptions): Likewise.
3065                 * parser.c (cp_lexer_new_main): Likewise.
3067         2005-10-06  Richard Henderson  <rth@redhat.com>
3069                 * parser.c (cp_lexer_new_main): Comment out defer_pragmas.
3070                 (cp_lexer_handle_pragma): Comment out
3071                 cpp_handle_deferred_pragma.
3073         2005-10-01  Richard Henderson  <rth@redhat.com>
3075                 * name-lookup.c (lookup_name): Remove prefer_type argument.
3076                 (lookup_name_prefer_type): New function.
3077                 * name-lookup.h (lookup_name_prefer_type): Declare it.
3078                 * decl.c (lookup_and_check_tag): Use it.
3079                 * pt.c (tsubst_friend_class): Likewise. Update for
3080                 lookup_name change.
3081                 (lookup_template_class, tsubst_copy_and_build): Likewise.
3083 2006-03-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3085         PR c++/15759
3086         * tree.c (bot_manip): Don't call mark_used.
3088 2006-03-02  Mike Stump  <mrs@apple.com>
3090         * decl2.c (import_export_decl): Remove redundant call to
3091         targetm.cxx.key_method_may_be_inline ().
3093 2006-03-02  Richard Sandiford  <richard@codesourcery.com>
3095         * decl.c (start_decl): Use have_global_bss_p when deciding
3096         whether to make the decl common.
3098 2006-03-01  Mike Stump  <mrs@apple.com>
3100         PR darwin/25908
3101         * decl2.c (import_export_decl): Fix ABI breakage on darwin.
3103 2006-02-24  Geoffrey Keating  <geoffk@apple.com>
3105         * except.c (expand_start_catch_block): Handle
3106         flag_use_cxa_get_exception_ptr.
3108 2006-02-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3110         PR c++/26291
3111         * decl.c (grok_op_properties): Check for ellipsis in arguments of
3112         operators.
3114 2006-02-20  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
3116         * Make-lang.in (C++): Remove.
3117         (.PHONY): Remove C++.
3119 2006-02-18  Mark Mitchell  <mark@codesourcery.com>
3121         PR c++/26266
3122         * cp-tree.h (cp_finish_decl): Adjust declaration.
3123         (grokbitfield): Likewise.
3124         (finish_static_data_member_decl): Likewise.
3125         * init.c (constant_value_1): Ensure processing_template_decl when
3126         folding non-dependent initializers for static data members of
3127         dependent types.  Return error_mark_node for erroneous
3128         initailizers.
3129         * class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl.
3130         * decl.c (cp_make_fname_decl): Adjust call to cp_finish_decl.
3131         (cp_finish_decl): Add init_const_expr_p parameter.  Set
3132         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
3133         (finish_decl): Adjust call to cp_finish_decl.
3134         (compute_array_index_type): Robustify.
3135         (start_method): Use finish_decl, not cp_finish_decl.
3136         * rtti.c (emit_tinfo_decl): Likewise.
3137         * except.c (initialize_handler_parm): Adjust call to
3138         cp_finish_decl.
3139         (expand_start_catch_block): Likewise.
3140         * cvt.c (build_up_reference): Adjust call to cp_finish_decl.
3141         * pt.c (instantiate_class_template): Adjust call to
3142         finish_static_data_member_decl.
3143         (tsubst_expr): Use finish_decl, not cp_finish_decl.
3144         (instantiate_decl): Adjust call to cp_finish_decl.
3145         * name-lookup.c (pushdecl_top_level_1): Use finish_decl, not
3146         cp_finish_decl.
3147         * decl2.c (finish_static_data_member_decl): Add init_const_expr_p
3148         parameter.
3149         (grokfield): Likewise.
3150         * parser.c (cp_parser_condition): Check for constant initializers.
3151         (cp_parser_init_declarator): Adjust calls to grokfield and
3152         cp_finish_decl.  Don't set
3153         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
3154         (cp_parser_member_declaration): Likewise.
3155         (cp_parser_objc_class_ivars): Likewise.
3157 2006-02-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3159         * call.c (standard_conversion): Return NULL instead of 0.
3160         (build_user_type_conversion_1): Likewise.
3161         (tourney): Likewise.
3162         * decl.c (redeclaration_error_message): Likewise.
3163         * error.c (language_to_string): Likewise.
3165 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3167         * cp-tree.h (warn_hidden): Remove prototype.
3168         * class.c (warn_hidden): Make static.
3170         * cp-tree.h (build_type_conversion): Remove prototype.
3171         * cvt.c (build_type_conversion): Add prototype, make static.
3173         * cp-tree.h (push_tinst_level): Remove prototype.
3174         (pop_tinst_level): Likewise.
3175         * pt.c (push_tinst_level): Add prototype, make static.
3176         (pop_tinst_level): Likewise.
3178 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3180         * decl.c (grokdeclarator): Return NULL_TREE instead of 0.
3181         * typeck.c (unary_complex_lvalue): Likewise.
3183 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3185         * lex.c (parse_strconst_pragma): Return error_mark_node instead of
3186         "(tree)-1" to indicate failure.  Simplify.
3187         (handle_pragma_interface): Test for error_mark_node instead of
3188         "(tree)-1".
3189         (handle_pragma_implementation): Likewise.
3191 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3193         PR c++/26151
3194         * parser.c (cp_parser_decl_specifier_seq): Check for duplicate
3195         decl-specifiers.  Remove extra check for duplicate 'friend'.
3196         * decl.c (grokdeclarator): Remove check for duplicate
3197         decl-specifiers.  Set longlong together with long_p.
3199 2006-02-12  Jason Merrill  <jason@redhat.com>
3201         PR c++/24996
3202         * except.c (build_throw): Add a CLEANUP_POINT_EXPR inside the
3203         TRY_CATCH_EXPR or MUST_NOT_THROW_EXPR.
3205 2006-02-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3207         * class.c (debug_class): Remove extern.
3208         (debug_thunks): Likewise.
3210 2006-02-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3212         * typeck.c (string_conv_p): Don't test for flag_const_strings.
3214 2006-02-08  Jason Merrill  <jason@redhat.com>
3216         PR c++/25979
3217         * cp-gimplify.c (cp_gimplify_expr): Don't call
3218         cp_gimplify_init_expr for MODIFY_EXPRs.
3219         * typeck2.c (split_nonconstant_init_1): Use INIT_EXPR.
3221 2006-02-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3223         PR c++/26071
3224         * decl.c (grokdeclarator): Set dname also for destructor.
3226         PR c++/26070
3227         * decl.c (grokdeclarator): Clear storage_class together with staticp.
3229 2006-02-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3231         * cp-tree.h (tf_warning_or_error): Renamed from tf_warn_or_error.
3232         (cp_build_qualified_type): Propogate renaming.
3233         * call.c (convert_like_real): Likewise.
3234         * cvt.c (cp_convert_to_pointer, convert_to_reference): Likewise.
3235         * decl.c (make_typename_type, grokdeclarator): Likewise.
3236         * pt.c (tsubst_friend_function, instantiate_class_template,
3237         tsubst_default_argument, instantiate_decl,
3238         tsubst_initializer_list, tsubst_enum): Likewise.
3239         * semantics.c (finish_template_type): Likewise.
3240         * typeck.c (build_ptrmemfunc, convert_for_assignment): Likewise.
3242 2006-02-07  Dirk Mueller  <dmueller@suse.com>
3244         * typeck.c (build_binary_op): Annotate div-by-zero
3245         warnings to make -Wno-div-by-zero have an effect.
3247 2006-02-07  Mark Mitchell  <mark@codesourcery.com>
3249         PR c++/9737
3250         * pt.c (coerce_template_template_parms): Do not templates with
3251         excess default arguments to match template template parameters
3252         with fewer parameters.
3253         (coerce_template_parms): Add use_default_args parameter; use
3254         default arguments only when true.
3255         (lookup_template_class): Adjust call to coerce_template_parms.
3256         (fn_type_unification): Likewise.
3257         (unify): Likewise.
3258         (get_bindings): Likewise.
3259         (dependent_type_p): Add assertions.
3261 2006-02-06  Roger Sayle  <roger@eyesopen.com>
3263         * decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE.
3264         * rtti.c (typeinfo_in_lib_p): Likewise.
3265         * cp-tree.h (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P): Likewise.
3266         * name-lookup.c (arg_assoc_type): Likewise.
3268 2006-02-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3270         * cp-tree.h (tf_warn_or_error): New substituion flag.
3271         (cp_build_qualified_type): Use it.
3272         * call.c (convert_like_real): Likewise.
3273         * cvt.c (cp_convert_to_pointer): Likewise.
3274         (convert_to_reference): Likewise.
3275         * decl.c (make_typename_type): Likewise.
3276         (grokdeclarator): Likewise.
3277         * pt.c (tsubst_friend_function): Likewise.
3278         (tsubst_friend_class): Likewise.
3279         (instantiate_class_template): Likewise.
3280         (tsubst_default_argument): Likewise.
3281         (instantiate_decl): Likewise.
3282         (tsubst_initializer_list): Likewise.
3283         (tsubst_enum): Likewise.
3284         * semantics.c (finish_template_type): Likewise.
3285         * typeck.c (build_ptrmemfunc): Likewise.
3286         (convert_for_assignment): Likewise.
3288 2006-02-03  Lee Millward  <lee.millward@gmail.com>
3290         * typeck.c (string_conv_p): Pass appropiate
3291         OPT_Wxxxx values when calling warning().
3292         (build_array_ref, cxx_mark_addressable): Likewise.
3293         (check_return_expr): Likewise.
3295         * init.c (perform_member_init): Likewise.
3296         (sort_mem_initializers, emit_mem_initializers): Likewise.
3298         * class.c (check_field_decls): Likewise.
3299         (warn_about_ambiguous_bases): Likewise.
3301         * decl.c (pop_label, poplevel): Likewise.
3302         (duplicate_decls, grok_op_properties): Likewise.
3303         (start_preparsed_function, finish_function): Likewise.
3305         * name-lookup.c (pushdecl_maybe_friend): Likewise.
3306         (pushdecl_maybe_friend): Likewise.
3308         * parser.c (cp_parser_warn_min_max): Likewise.
3309         (cp_parser_cast_expression): Likewise.
3311         * method.c (lazily_declare_fn): Likewise.
3312         * cvt.c (convert_to_void): Likewise.
3313         * mangle.c (finish_mangling): Likewise.
3314         * cp-gimplify.c (gimplify_expr_stmt): Likewise.
3316 2006-02-03  Mark Mitchell  <mark@codesourcery.com>
3318         * name-lookup.c (do_class_using_decl): Use IDENTIFIER_TYPENAME_P,
3319         not IDENTIFIER_OPNAME_P.
3321 2006-01-31  Mark Mitchell  <mark@codesourcery.com>
3323         PR c++/25342
3324         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Revise
3325         documentation.
3326         * pt.c (determine_specialization): Use INNERMOST_TEMPLATE_PARMS,
3327         not TREE_VALUE.
3328         (instantiate_class_template): Simplify.
3329         (verify_class_unification): Remove.
3330         (unify): Document parameters.  Use INNERMOST_TEMPLATE_ARGS to
3331         permit multiple levels of template arguments.
3332         (more_specialized_class): Simplify.
3333         (get_class_bindings): Pass full arguments to unify.  Fold
3334         verify_class_unification into this function.  Return full
3335         arguments.
3336         (most_specialized_class): Adjust for changes to
3337         get_class_bindings.  Issue errors here for ambiguity.  Return the
3338         fully deduced arguments for the most specialized class, in
3339         addition to the partial specialization.
3341 2006-01-31  Ben Elliston  <bje@au.ibm.com>
3343         * mangle.c: Comment fix.
3345 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3347         * Make-lang.in (cp-warn): Include CXX_COMPAT_WARN.
3348         * repo.c (extract_string, afgets): Use cast when converting from
3349         void *.
3351 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3353         * call.c (alloc_conversion): Use cast when converting from void *.
3354         (alloc_conversions): Likewise.
3355         (add_candidate): Likewise.
3356         (print_z_candidates): Likewise.
3357         (add_warning): Likewise.
3358         * pt.c (retrieve_local_specialization): Likewise.
3359         (process_partial_specialization): Likewise.
3360         (mangle_class_name_for_template): Likewise.
3361         (tsubst_template_args): Likewise.
3362         * typeck2.c (pat_calc_hash): Likewise.
3363         (pat_compare): Likewise.
3364         (abstract_virtuals_error): Likewise.
3365         * class.c (method_name_cmp): Likewise.
3366         (resort_method_name_cmp): Likewise.
3367         (get_vfield_name): Likewise.
3368         * decl2.c (generate_ctor_and_dtor_functions_for_priority): Likewise.
3369         * lex.c (init_reswords): Likewise.
3370         * rtti.c (create_pseudo_type_info): Likewise.
3371         * search.c (dfs_lookup_base): Likewise.
3372         (dfs_dcast_hint_pre): Likewise.
3373         (dfs_dcast_hint_post): Likewise.
3374         * tree.c (hash_tree_cons): Likewise.
3375         * repo.c (extract_string): Likewise.
3376         (afgets): Likewise.
3377         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Likewise.
3378         * g++spec.c (lang_specific_driver): Likewise.
3380 2006-01-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3382         * call.c (joust): Pass option code to warning.  Use inform for
3383         explanation.
3384         * class.c (check_bases): Likewise.
3385         (maybe_warn_about_overly_private_class): Likewise.
3386         (check_field_decls): Likewise.
3387         (layout_empty_base): Likewise.
3388         (layout_virtual_bases): Likewise.
3389         (layout_class_type): Likewise.
3391 2006-01-28  Mark Mitchell  <mark@codesourcery.com>
3393         PR c++/25999
3394         * decl.c (start_preparsed_function): Call maybe_apply_pragma_weak
3395         here, not ...
3396         (start_function): ... here.
3398 2006-01-28  Mark Mitchell  <mark@codesourcery.com>
3400         PR c++/25855
3401         * class.c (resolve_address_of_overloaded_function): Adjust use of
3402         return value from most_specialized_instantiation.
3403         * pt.c (determine_specialization): Avoid multiple calls to
3404         get_bindings.
3405         (most_specialized_instantiation): When a tie occurs, set the
3406         current presumed champion to the next template.  Return the
3407         TREE_LIST node containing the template, rather than the template
3408         itself.
3409         (most_specialized): Remove.
3410         * name-lookup.c (push_overloaded_decl): When duplicate_decls
3411         indicates a failed redeclaration, report that to callers.
3413 2006-01-26  Jason Merrill  <jason@redhat.com>
3415         PR c++/16021
3416         * name-lookup.c (parse_using_directive): Require strong using to
3417         name a nested namespace.
3419 2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3421         Revert:
3422         * cp-tree.h (do_poplevel): Remove prototype.
3423         * semantics.c (do_poplevel): Add prototype.  Make static.
3425         Revert:
3426         * cp-tree.h (default_conversion): Remove prototype.
3427         * typeck.c (default_conversion): Make static.
3429 2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3431         * cp-tree.h (get_primary_binfo): Remove prototype.
3432         (push_using_decl): Likewise.
3433         (current_template_args): Likewise.
3434         (more_specialized_class): Likewise.
3435         (mark_class_instantiated): Likewise.
3436         (default_conversion): Likewise.
3437         (pfn_from_ptrmemfunc): Likewise.
3438         * class.c (get_primary_binfo): Add prototype, make static, simplify.
3439         * name-lookup.c (push_using_decl): Make static.
3440         * pt.c (current_template_args): Likewise.
3441         (more_specialized_class): Likewise.
3442         (mark_class_instantiated): Likewise.
3443         * typeck.c (default_conversion): Make static.
3444         (pfn_from_ptrmemfunc): Add prototype, make static.
3446 2006-01-24  Dirk Mueller  <dmueller@suse.de>
3448         * typeck.c (build_binary_op): Use OPT_Wfloat_equal in warning().
3450 2006-01-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3452         PR c++/25552
3453         * parser.c (cp_parser_unqualified_id): Check that destructor name
3454         and scope match.
3455         * call.c (check_dtor_name): Do not expect a BIT_NOT_EXPR.
3456         Adjust comment.  Return early if possible.
3457         Use same_type_p to compare types.
3458         * typeck.c (lookup_destructor): Adjust call to check_dtor_name.
3460 2006-01-24  Mark Mitchell  <mark@codesourcery.com>
3462         * semantics.c: Remove outdated comment.
3464 2006-01-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3466         * cp-tree.h (do_poplevel): Remove prototype.
3467         * semantics.c (do_poplevel): Add prototype.  Make static.
3469         * cp-tree.h (original_type): Remove prototype.
3470         * typeck.c (original_type): Make static.
3472         * cp-tree.h (declare_global_var): Remove prototype.
3473         * decl.c (declare_global_var): Make static.
3475         * cp-tree.h (implicitly_declare_fn): Remove prototype.
3476         * method.c (implicitly_declare_fn): Make static.
3478         * cp-tree.h (fold_decl_constant_value): Remove prototype.
3479         * pt.c (fold_decl_constant_value): Make static.
3481         * cp-tree.h (build_x_delete): Remove prototype.
3482         * init.c (build_vec_delete_1): Call build_op_delete_call directly
3483         and not via build_x_delete.
3484         (build_x_delete): Remove.
3486         * cp-tree.h (get_vtt_name): Remove prototype.
3487         * class.c (get_vtt_name): Remove.
3488         (build_vtt): Call mangle_vtt_for_type instead of get_vtt_name.
3490 2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3492         * rtti.c (build_dynamic_cast): Fix comment.
3494 2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3496         PR c++/10891
3497         * rtti.c (build_dynamic_cast): Reject dynamic_cast use if
3498         -fno-rtti.
3500 2006-01-21  Mark Mitchell  <mark@codesourcery.com>
3502         PR c++/25895
3503         * class.c (build_base_path): Generate a NOP_EXPR instead of a
3504         COMPONENT_REF if the base and derived classes are at the same
3505         address.
3507         PR c++/25856
3508         * decl.c (begin_destructor_body): Robustify.
3510         PR c++/25858
3511         * parser.c (cp_parser_direct_declarator): Robustify.
3513 2006-01-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3515         * parser.c (cp_lexer_next_token_is_keyword): Simplify.
3517         * parser.c (clear_decl_specs): Remove prototype.
3519         * parser.c (cp_parser_expression_fn): Remove.
3521         * call.c (add_builtin_candidates): Remove superfluous return.
3522         * name-lookup.c (do_toplevel_using_decl): Likewise.
3523         * parser.c (cp_parser_type_specifier_seq): Likewise.
3524         (cp_parser_save_default_args): Likewise.
3526 2006-01-20  Dirk Mueller  <dmueller@suse.com>
3528         PR c++/5520
3529         * semantics.c (finish_if_stmt): Call empty_body_warning.
3530         * parser.c (cp_parser_implicitly_scoped_statement):
3531         Mark empty statement with an empty stmt.
3533 2006-01-19  Mark Mitchell  <mark@codesourcery.com>
3535         PR c++/22136
3536         * name-lookup.c (do_class_using_decl): Don't try to look up base
3537         classes in templates with dependent base types.
3539 2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3541         PR c++/25854
3542         * pt.c (maybe_process_partial_specialization): Return early on
3543         error_mark_node.
3545 2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3547         PR c++/16829
3548         * decl.c (start_preparsed_function): Check default arguments
3549         unconditionally.
3550         * name-lookup.c (pushdecl_maybe_friend): Check default arguments
3551         of all functions and function templates.
3552         * parser.c (cp_parser_late_parsing_default_args): Check default
3553         arguments.
3554         * decl2.c (check_default_args): Set missing default arguments to
3555         error_mark_node.
3557 2006-01-18  Mark Mitchell  <mark@codesourcery.com>
3559         PR c++/25836
3560         * cp-tree.h (push_class_stack): New function.
3561         (pop_class_stack): Likewise.
3562         * class.c (class_stack_node): Add hidden field.
3563         (pushclass): Clear it.
3564         (push_class_stack): New function.
3565         (pop_class_stack): Likewise.
3566         (currently_open_class): Ignore hidden classes.
3567         (currently_open_derived_class): Likewise.
3568         * name-lookup.c (push_to_top_level): Call push_class_stack.
3569         (pop_from_top_level): Call pop_class_stack.
3571 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
3573         * tree.c (find_tree_t, find_tree): Remove.
3574         * cp-tree.h: Remove the prototype for find_tree.
3576 2006-01-18  Jakub Jelinek  <jakub@redhat.com>
3578         * search.c (lookup_conversions_r): Fix a pasto.
3580 2006-01-17  Eric Christopher  <echristo@apple.com>
3582         * call.c (convert_like_real): When issuing conversion
3583         warnings, depend on OPT_Wconversion.
3584         * cvt.c (build_expr_type_conversion): Ditto.
3586 2006-01-17  Kazu Hirata  <kazu@codesourcery.com>
3588         * name-lookup.c (lookup_namespace_name): Remove.
3589         * name-lookup.h: Remove the prototype for
3590         lookup_namespace_name.
3592 2006-01-17  Jakub Jelinek  <jakub@redhat.com>
3594         PR c/25682
3595         * decl.c (compute_array_index_type): After issuing not an integral
3596         constant-expression error, set size to 1 to avoid ICEs later on.
3598 2006-01-16  Ian Lance Taylor  <ian@airs.com>
3600         * parser.c: Include "cgraph.h".
3601         (cp_parser_asm_definition): Call cgraph_add_asm_node rather than
3602         assemble_asm.
3604 2006-01-16  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
3606         * g++spec.c (lang_specific_spec_functions): Remove.
3608 2006-01-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3610         * decl.c (check_initializer): Fix thinko.
3612 2006-01-14  Mark Mitchell  <mark@codesourcery.com>
3614         PR c++/25663
3615         * parser.c (cp_parser_direct_declarator): Use cp_parser_error
3616         instead of error.
3618 2006-01-13  Jason Merrill  <jason@redhat.com>
3620         * pt.c (check_explicit_specialization): Use CP_DECL_CONTEXT even more.
3622         * name-lookup.c (set_decl_namespace): Use CP_DECL_CONTEXT.
3623         * pt.c (check_explicit_specialization): Likewise.
3625 2006-01-12  Jason Merrill  <jason@redhat.com>
3627         PR libstdc++/24660
3628         * pt.c (check_explicit_specialization): Handle namespace
3629         association.
3630         * name-lookup.c (set_decl_namespace): Likewise.
3632 2006-01-12  Nathan Sidwell  <nathan@codesourcery.com>
3634         PR c++/24824
3635         * class.c (handle_using_decl): Pass correct scope to
3636         cp_emit_debug_info_for_using.
3638 2006-01-11  Nathan Sidwell  <nathan@codesourcery.com>
3640         PR c++/25386
3641         * tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
3642         packedness.
3644 2006-01-06  Gabriel Dos Reis  <gdr@integrablesolutions.net>
3646         * parser.c (cp_parser_primary_expression): Document the grammar
3647         for the built-in offsetof, a GNU extension.
3649 2006-01-04  Zdenek Dvorak <dvorakz@suse.cz>
3651         PR c++/25632
3652         * init.c (constant_value_1): Unshare use of DECL_INITIAL.  Fix a typo
3653         in condition.
3655 2006-01-04  Chris Lattner  <sabre@gnu.org>
3657         * typeck2.c: update copyright to 2006
3658         (split_nonconstant_init_1):  Set TREE_CONSTANT to true.
3660 2006-01-04  Mark Mitchell  <mark@codesourcery.com>
3662         PR c++/24782
3663         * parser.c (cp_parser_nested_name_specifier_opt): Preserve access
3664         checks, even when parsing tentatively.
3666 2006-01-04  Richard Henderson  <rth@redhat.com>
3668         Merge from gomp branch.
3669         * lex.c (handle_pragma_java_exceptions): Fix whitespace.
3670         * parser.c (struct cp_token): Add pragma_kind.
3671         (eof_token): Update to match.
3672         (struct cp_lexer): Add in_pragma; rearrange next for better packing.
3673         (cp_parser_initial_pragma): New.
3674         (cp_lexer_new_main): Use it.  Don't bother clearing
3675         c_lex_return_raw_strings.
3676         (cp_lexer_get_preprocessor_token): Always initialize keyword
3677         and pragma_kind fields.  Handle CPP_PRAGMA.
3678         (cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when
3679         in_pragma is set.
3680         (cp_lexer_handle_pragma): Remove.  Update callers to cp_parser_pragma.
3681         (cp_lexer_print_token) <CPP_PRAGMA>: Don't print as a string.
3682         (cp_parser_skip_to_pragma_eol): New.
3683         (cp_parser_error): Use it.
3684         (cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL;
3685         rearrange with switch statement.
3686         (cp_parser_skip_to_end_of_statement): Likewise.
3687         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
3688         (cp_parser_skip_to_closing_brace): Likewise.
3689         (cp_parser_skip_until_found): Likewise.
3690         (cp_parser_statement): Add in_compound argument; update callers.
3691         Use it to decide how to handle pragma parsing.
3692         (cp_parser_labeled_statement): Add in_compound argument; pass
3693         it on to cp_parser_statement.
3694         (cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL.
3695         (cp_parser_declaration_seq_opt): Likewise.
3696         (cp_parser_parameter_declaration): Likewise.
3697         (cp_parser_member_specification_opt): Likewise.
3698         (cp_parser_function_definition_after_decl): Likewise.
3699         (cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs.
3700         (cp_parser_pragma): New.
3701         (pragma_lex): New.
3703 2006-01-04  Dirk Mueller <dmueller@suse.com>
3705         * decl.c (finish_constructor_body): create simple
3706         compound stmt instead of a if(1) { } construct.
3708 2006-01-03  Mark Mitchell  <mark@codesourcery.com>
3710         PR c++/25492
3711         * name-lookup.c (push_class_level_binding): When a derived class
3712         provides a type binding, eliminate any type binding from a base
3713         class.
3715         PR c++/25625
3716         * repo.c (repo_emit_p): Always instantiate static data members
3717         initialized by constant expressions, so that there values are
3718         available.
3720 2006-01-02  Mark Mitchell  <mark@codesourcery.com>
3722         PR c++/25635
3723         * class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a
3724         conversion operator.
3725         * decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here.
3727         PR c++/25638
3728         * class.c (add_method): Never associate more than one destructor
3729         with a single class.
3731         PR c++/25637
3732         * cp-tree.h (do_friend): Adjust prototype.
3733         * decl.c (grokfndecl): Make funcdef_flag a bool, not an int.
3734         (grokdeclarator): Likewise.  Refine check for invalid
3735         declarations/definitions of member functions outside of their own
3736         class.
3737         * friend.c (do_friend): Make funcdef_flag a bool, not an int.
3739         PR c++/25633
3740         * parser.c (cp_parser_mem_initializer_list): Check result of
3741         cp_parser_mem_initializer against error_mark_node, not NULL_TREE.
3742         (cp_parser_mem_initializer): Return error_mark_node for failure.
3744         PR c++/25634
3745         * parser.c (cp_parser_template_parameter_list): Call
3746         begin_template_parm_list and end_template_parm_list here.
3747         (cp_parser_type_parameter): Not here.
3748         (cp_parser_template_declaration_after_export): Or here.
3749         (cp_parser_elaborated_type_specifier): Call
3750         cp_parser_check_template_parameters.
3752         * tree.c (build_target_expr_with_type): Use force_target_expr.
3754         * decl2.c (mark_used): Fix typo in comment.
3756 2006-01-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3758         * parser.c (cp_parser_using_declaration): Skip name-lookup on
3759         invalid scope.
3761 2005-12-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3763         * cxx-pretty-print.c (pp_cxx_constant): New.  Print
3764         string-literal in parens if input program says so.
3765         (pp_cxx_primary_expression): Hand off constant printing to
3766         pp_cxx_constant.
3767         (pp_cxx_pretty_printer_init): Set pp->c_base.constant.
3768         (pp_cxx_expression): Use pp_cxx_constant for literals.
3769         * error.c (dump_expr): Use pp_constant for literals.
3771 2005-12-29  Nathan Sidwell  <nathan@codesourcery.com>
3773         * method.c (make_thunk): Don't set comdat_linkage here.
3774         (use_thunk): Make thunk one only here, if thunk target is
3775         DECL_ONE_ONLY.
3777 2005-12-26  Mark Mitchell  <mark@codesourcery.com>
3779         PR c++/25439
3780         * decl.c (grokdeclarator): Remove dead code.
3781         * ptree.c (cxx_print_xnode): Handle BASELINK.
3782         * parser.c (make_id_declarator): Add sfk parameter.
3783         (cp_parser_direct_declarator): Do not pass TYPE_DECLs to
3784         make_id_declarator.
3785         (cp_parser_declarator_id): Simplify BASELINKs here.
3786         (cp_parser_member_declaration): Adjust calls to
3787         make_id_declarator.
3789 2005-12-26  Mark Mitchell  <mark@codesourcery.com>
3791         PR c++/23171, c++/23172, c++/25417.
3792         * typeck.c (build_unary_op): Create temporary variables for
3793         compound literals whose addresses are taken.
3794         * init.c (expand_aggr_init_1): Use COMPOUND_LITERAL_P.
3795         * decl.c (reshape_init_vector): Likewise.
3796         (reshape_init): Give it external linkage.
3797         (check_initializer): Use COMPOUND_LITERAL_P.
3798         (initialize_artificial_var): Allow the initializer to be a
3799         CONSTRUCTOR.
3800         * call.c (make_temporary_var_for_ref_to_temp): Use
3801         create_temporary_var.
3802         * cp-tree.h (COMPOUND_LITERAL_P): New macro.
3803         (rehape_init): Declare.
3804         * typeck2.c (digest_init): Use COMPOUND_LITERAL_P.
3805         * semantics.c (finish_compound_literal): Use reshape_init.
3807 2005-12-23  Mark Mitchell  <mark@codesourcery.com>
3809         PR c++/24671
3810         * pt.c (instantiate_template): Handle SFINAE.
3812 2005-12-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3814         * decl.c (grokdeclarator): Improve diagnostic for friend
3815         declarations of class members.
3817 2005-12-22  Mark Mitchell  <mark@codesourcery.com>
3819         PR c++/25369
3820         * tree.c (really_overloaded_fn): Tweak comment.
3821         * pt.c (tsubst_call_declarator_parms): Remove.
3822         (tsubst_copy): Call mark_used on the member referenced by an
3823         OFFSET_REF.
3824         * semantics.c (finish_qualified_id_expr): Simplify.
3825         * decl2.c (mark_used): Accept BASELINKs.
3827         PR c++/25364
3828         * typeck.c (build_unary_op): Pass DECLs not names to
3829         build_offset_refs.
3830         * init.c (build_offset_ref): Do not do name lookup.  Do not call
3831         mark_used.
3832         * call.c (build_call): Simplify and tidy.
3833         * semantics.c (finish_qualified_id_expr): Call mark_used.
3835 2005-12-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3837         PR c++/23333
3838         * parser.c (cp_parser_pure_specifier): Check for PURE_ZERO to
3839         identify a single '0'.
3841 2005-12-20  Mark Mitchell  <mark@codesourcery.com>
3843         PR c++/21228
3844         * decl.c (use_eh_spec_block): New function.
3845         (store_parm_decls): Use it.
3846         (finish_function): Likewise.
3848 2005-12-19  Mark Mitchell  <mark@codesourcery.com>
3850         PR c++/24278
3851         * init.c (expand_member_init): Print messages about baseclasses
3852         using %T rather than %D.
3854         PR c++/24915
3855         * class.c (add_method): Do not treat templates as identical unless
3856         their return types are the same.
3858 2005-12-12  Mark Mitchell  <mark@codesourcery.com>
3860         PR c++/25300
3861         * tree.c (build_qualified_name): Return error_mark_node for
3862         erroneous input.
3864 2005-12-10  Mark Mitchell  <mark@codesourcery.com>
3866         PR c++/25337
3867         * pt.c (tsubst_copy_and_build): Permit dependent types for the
3868         object in a class member access expression.
3870 2005-12-10  Terry Laurenzo  <tlaurenzo@gmail.com>
3872         PR java/9861
3873         * mangle.c (write_bare_function_type): Mangle return type for
3874         methods of Java classes
3876 2005-12-08  Th�dore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
3878         * call.c (build_conditional_expr): Print types in error messages.
3880 2005-12-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3882         * expr.c (cxx_expand_expr): Call gcc_unreachable instead of abort.
3884 2005-12-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3886         * cp-gimplify.c (gimplify_cp_loop): Use fold_build3.
3888 2005-12-07  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
3890         * Make-lang.in (c++.all.build, c++.install-normal): Remove.
3892 2005-12-07  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
3894         * Make-lang.in: Remove all dependencies on s-gtype.
3896 2005-12-06  Aldy Hernandez  <aldyh@redhat.com>
3898         PR C++/24138
3899         * decl.c (reshape_init_array_1): Handle max_index of -1.
3901 2005-12-06  Roger Sayle  <roger@eyesopen.com>
3903         * typeck.c (build_binary_op): Issue warning if either operand of a
3904         comparison operator is a string literal, except for testing equality
3905         or inequality against NULL.
3907 2005-12-06  Roger Sayle  <roger@eyesopen.com>
3909         PR c++/25263
3910         * decl.c (compute_array_index_type): Check that itype is an
3911         INTEGER_CST node before testing/clearing TREE_OVERFLOW.
3913 2005-12-05  Daniel Berlin  <dberlin@dberlin.org>
3915         * ptree.c (cxx_print_decl): Update to check for decl_common
3916         structure.
3918 2005-12-02  Mark Mitchell  <mark@codesourcery.com>
3920         PR c++/24173
3921         * decl.c (duplicate_decls): Don't rely on DECL_TEMPLATE_INFO after
3922         clobbering newdecl.
3924 2005-12-02  Richard Guenther  <rguenther@suse.de>
3926         * semantics.c (simplify_aggr_init_expr): Use buildN instead
3927         of build.
3929 2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3931         * parser.c (cp_lexer_new_main): Usr GGC_RESIZEVEC instead of
3932         ggc_realloc.
3933         (cp_parser_template_argument_list): Use XRESIZEVEC instead of
3934         xrealloc.
3935         * class.c (pushclass): Likewise.
3937 2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3939         * decl2.c (get_priority_info): Use XNEW, not xmalloc.
3940         * decl.c (push_switch): Likewise.
3941         * lex.c (handle_pragma_implementation): Likewise.
3942         * cp-objcp-common.c (decl_shadowed_for_var_insert): Use GGC_NEW,
3943         not ggc_alloc.
3944         (cxx_initialize_diagnostics): Use XNEW, not xmalloc.
3945         * class.c (init_class_processing): Use XNEWVEC, not xmalloc.
3946         * g++spec.c (lang_specific_driver): Likewise.
3947         * mangle.c (save_partially_mangled_name): Likewise.
3948         * parser.c (cp_lexer_new_main): Use GGC_NEWVEC, not ggc_alloc.
3949         (cp_parser_template_argument_list): Use XNEWVEC, nto xmalloc.
3950         (cp_parser_sizeof_operand): Likewise.
3951         * repo.c (open_repo_file, open_repo_file): Likewise.
3953 2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3955         * parser.c (cp_parser_make_typename_type): Call make_typename_type
3956         with tf_none instead of magic value 0.
3957         (cp_parser_explicit_instantiation): Call do_type_instantiation
3958         with tf_error instead of magic value 1.
3959         (cp_parser_elaborated_type_specifier): Call make_typename_type
3960         with tf_error instead of magic value 1.
3961         (cp_parser_class_name): Likewise.
3962         (cp_parser_lookup_name): Likewise.
3964 2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3966         * parser.c (cp_parser_declaration): Set token2.type to CPP_EOF,
3967         not RID_MAX.
3969 2005-11-30  Jason Merrill  <jason@redhat.com>
3971         PR c++/21123
3972         * cp-gimplify.c (cp_genericize_r): Don't dereference invisible reference
3973         parms in a thunk.
3975 2005-11-30  Ben Elliston  <bje@au.ibm.com>
3977         * typeck.c (build_x_unary_op): Correct spelling in error message.
3979 2005-11-28  Nathan Sidwell  <nathan@codesourcery.com>
3981         PR c++/21166
3982         * class.c (check_field_decls): Only set DECL_PACKED on a field
3983         when its natural alignment is > BITS_PER_UNIT.
3985 2005-11-27  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3987         PR c++/24979
3988         * cp-tree.h (DECL_MAIN_P): Remove duplicate definition.
3990 2005-11-26  Richard Henderson  <rth@redhat.com>
3992         * lex.c: Update for pragma_lex rename.
3993         * parser.c: Likewise.
3995 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3997         PR c++/9278
3998         * decl.c (grokparms): Do not allow typedef-names in a '(void)'
3999         parmlist.
4001 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4003         * typeck2.c (process_init_constructor_union): Remove check for
4004         unnamed union members.
4006 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4008         * name-lookup.c (lookup_name_real): Merge two if's.
4010 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4012         * pt.c (instantiate_class_template): Clean-up.
4014 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4016         * pt.c (template_class_depth_real): Remove. Move functionality to ...
4017         (template_class_depth): ... here, replacing count_specializations
4018         with 0.  Adjust comment.
4020 2005-11-24  Richard Guenther  <rguenther@suse.de>
4021         Dirk Mueller <dmueller@suse.de>
4023         PR c++/14024
4024         * typeck.c (build_reinterpret_cast_1): Use
4025         strict_aliasing_warning.
4027 2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4029         PR c++/24235
4030         * pt.c (check_instantiated_args): Reword diagnostic message about
4031         template argument involving local types.
4033 2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4035         PR c++/21667
4036         * typeck.c (build_array_ref): Avoid code duplicate.  Use common
4037         C/C++ diagnostic function warn_array_subscript_with_type_char.
4039 2005-11-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4041         PR c++/22238
4042         * error.c (resolve_virtual_fun_from_obj_type_ref): New.
4043         (dump_expr): Use it in <case CALL_EXPR>.
4045 2005-11-21  Richard Henderson  <rth@redhat.com>
4047         * cp-objcp-common.h, name-lookup.c, name-lookup.h: Revert 11-18 patch.
4049         * name-lookup.c (lookup_name): Remove prefer_type argument.
4050         (lookup_name_prefer_type): New.
4051         * decl.c (lookup_and_check_tag): Use them.
4052         * pt.c (tsubst_friend_class): Likewise.
4053         (lookup_template_class): Likewise.
4054         (tsubst_copy_and_build): Likewise.
4055         * name-lookup.h (lookup_name_prefer_type): New.
4056         (lookup_name): Remove declaration.
4058 2005-11-18  Mark Mitchell  <mark@codesourcery.com>
4060         PR c++/8355
4061         * decl.c (grokfndecl): Set up DECL_TEMPLATE_INFO before calling
4062         set_decl_namespace.
4063         * name-lookup.c (set_decl_namespace):
4065 2005-11-18  Mike Stump  <mrs@apple.com>
4067         * cp-objcp-common.h (LANG_HOOKS_LOOKUP_NAME): Add.
4068         * name-lookup.c (lookup_name_two): Remove.
4069         (lookup_name_one): Add.
4070         * name-lookup.h (lookup_name_two): Remove.
4071         (lookup_name_one): Add.
4073 2005-11-15  Jason Merrill  <jason@redhat.com>
4075         PR c++/24580
4076         * method.c (locate_copy): Also use skip_artificial_parms here.
4077         (synthesize_exception_spec): Use CLASS_TYPE_P rather than checking
4078         for RECORD_TYPE.
4079         (locate_ctor): Abort if we fail to find a default constructor.
4081 2005-11-15  Mike Stump  <mrs@apple.com>
4083         * name-lookup.c (lookup_name_two): Add.
4084         * name-lookup.h: Likewise.
4086 2005-11-15  Mark Mitchell  <mark@codesourcery.com>
4088         PR c++/24667
4089         * typeck.c (check_for_casting_away_constness): Use the diag_fn.
4090         (build_const_cast_1): Call it, for C-style casts.
4092 2005-11-14  Mark Mitchell  <mark@codesourcery.com>
4094         PR c++/24687
4095         * pt.c (check_explicit_specialization): Don't check for C linkage.
4096         (push_template_decl_real): Likewise.
4097         * parser.c (cp_parser_explicit_specialization): Check here.
4098         (cp_parser_template_declaration_after_export): And here.
4100         * parser.c (cp_lexer_get_preprocessor_token): Initialize keyword
4101         field.
4103 2005-11-14  Jason Merrill  <jason@redhat.com>
4105         PR c++/24580
4106         * method.c (locate_ctor): Skip all artificial parms, not just
4107         'this'.
4109 2005-11-14  Mark Mitchell  <mark@codesourcery.com>
4111         * parser.c (eof_token): Add initializer for ambiguous_p.
4113 2005-11-13  Mark Mitchell  <mark@codesourcery.com>
4115         PR c++/24817
4116         * decl.c (check_redeclaration_exception_specification): New
4117         function.
4118         (duplicate_decls): Use it.
4119         * error.c (fndecl_to_string): Print the template parameter list.
4121         PR c++/20293
4122         * cxx-pretty-print.c (pp_cxx_statement): Print qualifying scopes
4123         for namespaces.
4124         (pp_cxx_original_namespace_definition): Likewise.
4125         * name-lookup.c (ambiguous_decl): Don't issue error messages;
4126         instead return lists of ambiguous candidates.
4127         (select_decl): Handle ambiguous namespace lookups.
4128         * parser.c (cp_token): Add ambiguous_p.
4129         (cp_lexer_get_preprocessor_token): Set it.
4130         (cp_parser_diagnose_invalid_type_name): Avoid duplicate messages
4131         when a qualified name uses an invalid scope.
4132         (cp_parser_primary_expression): Print ambiguous candidates.
4133         (cp_parser_type_parameter): Adjust comment to reflect new
4134         parameter name for cp_parser_lookup_name.
4135         (cp_parser_template_argument): Likewise.
4136         (cp_parser_elaborated_type_specifier): Likewise.
4137         (cp_parser_namespace_name): Likewise.
4138         (cp_parser_class_name): Print ambiguous candidates.
4139         (cp_parser_lookup_name): Rename ambiguous_p parameter to
4140         ambiguous_decls.  Use it to return a list of ambiguous candiates
4141         when a lookup is ambiguous.
4142         (cp_parser_lookup_name_simple): Adjust comment to reflect new
4143         parameter name for cp_parser_lookup_name.
4145 2005-11-12  Jakub Jelinek  <jakub@redhat.com>
4147         PR c++/24780
4148         * typeck.c (complete_type): Set TYPE_NEEDS_CONSTRUCTING
4149         and TYPE_HAS_NONTRIVIAL_DESTRUCTOR flags for all variants
4150         of array type.
4152         PR c++/24761
4153         * pt.c (tsubst_copy_asm_operands): New function.
4154         (tsubst_expr) <case ASM_EXPR>: Use it.
4156 2005-11-08  Jakub Jelinek  <jakub@redhat.com>
4158         PR c++/19450
4159         * decl.c (redeclaration_error_message): Issue diagnostics about
4160         olddecl and newdecl disagreement on __thread property.
4161         (grokdeclarator): Set DECL_TLS_MODEL on class static variables.
4163 2005-11-08  Jason Merrill  <jason@redhat.com>
4165         PR c++/21123
4166         * method.c (use_thunk): Use build_cplus_new instead of
4167         force_target_expr.
4169 2005-11-06  Jason Merrill  <jason@redhat.com>
4170             James A. Morrison <phython@gcc.gnu.org>
4172         PR c++/17256
4173         * decl2.c (cp_finish_file): Fix conditions for undefined warning.
4174         Set TREE_NO_WARNING instead of TREE_PUBLIC.
4175         * pt.c (instantiate_pending_templates): Set DECL_INITIAL to avoid
4176         a warning on a function we didn't instantiate because of excessive
4177         recursion.
4179 2005-11-06  Mark Mitchell  <mark@codesourcery.com>
4181         * class.c (record_subobject_offsets): Don't record offsets past
4182         biggest empty class for non-empty base classes.
4183         (layout_class_type): Use TYPE_SIZE_UNIT, not TYPE_SIZE, when
4184         keeping track of the size of emptyclasses.
4186         PR c++/21308
4187         * class.c (sizeof_biggest_empty_class): New variable.
4188         (record_subobject_offsets): Don't record offsets past biggest
4189         empty class for data members.  Replace vbases_p parameter with
4190         is_data_member parameter.
4191         (build_base_field): Adjust call.
4192         (layout_class_type): Likewise.  Maintain
4193         sizeof_biggest_empty_class.
4195 2005-11-05  Kazu Hirata  <kazu@codesourcery.com>
4197         * decl2.c, init.c, typeck.c: Fix comment typos.
4199 2005-11-04  Richard Guenther  <rguenther@suse.de>
4201         PR c++/22487
4202         * init.c (build_vec_init): Build comparison of matching
4203         types.
4205 2005-11-03  Josh Conner  <jconner@apple.com>
4207         PR c++/19989
4208         pt.c (tsubst): Accept zero-length array if tf_error is set
4209         in complain flags.  Change error message for negative-
4210         length array.
4212 2005-11-04  Joseph S. Myers  <joseph@codesourcery.com>
4214         * cp-tree.h (cp_cpp_error), error.c (cp_cpp_error): Take va_list*
4215         parameter.
4217 2005-11-03  Joseph S. Myers  <joseph@codesourcery.com>
4219         PR c++/17964
4220         * error.c (cp_cpp_error): New function.
4221         * cp-tree.h (cp_cpp_error): Declare.
4222         * parser.c (cp_lexer_new_main): Set CPP option client_diagnostic
4223         and error callback after lexing.
4225 2005-11-03  Mark Mitchell  <mark@codesourcery.com>
4227         PR c++/21627
4228         * pt.c (register_specialization): Update inline flags on clones.y
4230 2005-11-03  Andrew Pinski  <pinskia@physics.uc.edu>
4232         PR c++/24582
4233         * decl.c (declare_local_label): Return 0 for variables
4234         with error_mark_node as their types.
4236 2005-11-02  Mark Mitchell  <mark@codesourcery.com>
4238         PR c++/22434
4239         * call.c (build_conditional_expr): Do bad conversions, if there's
4240         no other choice.
4242         PR c++/24560
4243         * parser.c (cp_parser_postfix_dot_deref_expression): Improve error
4244         message for use of overloaded functions on LHS of "." operator.
4246         PR c++/19253
4247         * parser.c (cp_parser_postfix_expression): Use
4248         cp_parser_elaborated_type_specifier to handle typename-types in
4249         functional casts.
4250         (cp_parser_enclosed_argument_list): Skip ahead to the end of the
4251         template argument list if the closing ">" is not found.
4253         PR c++/24569
4254         * pt.c (instantiate_decl): Use cp_finish_decl, not
4255         finish_static_data_member_decl.
4257 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
4259         * decl.c (grokfndecl): Remove the setting
4260         of the return type of the function type
4261         of main after erroring about must returning
4262         int.
4264 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
4266         PR C++/23229
4267         * decl.c (grokfndecl): Create a new function type
4268         after erroring out about main not returning int.
4270 2005-10-28  Josh Conner  <jconner@apple.com>
4272         PR c++/22153
4273         * parser.c (cp_parser_member_declaration): Detect and handle
4274         a template specialization.
4276 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
4278         PR C++/23426
4279         * decl.c (start_decl): Check that the decl is an
4280         error_mark_node before getting the type.
4281         Remove the check for the decl's type being an
4282         error_mark_node.
4284 2005-10-21  Mark Mitchell  <mark@codesourcery.com>
4286         PR c++/24260
4287         * parser.c (cp_parser_init_declarator): Pass attributes to
4288         grokfield.
4290 2005-10-20  Mark Mitchell  <mark@codesourcery.com>
4292         PR c++/22618
4293         * search.c (accessible_p): Check access in the outermost set of
4294         template parameters.
4296 2005-10-20  Richard Guenther  <rguenther@suse.de>
4298         * decl.c (grokdeclarator): Fix ambiguous pedwarn message.
4300 2005-10-18  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4302         PR c++/22293
4303         * decl.c (grokdeclarator): Reject unqualified destructors in
4304         friend declarations.
4306 2005-10-18  Mark Mitchell  <mark@codesourcery.com>
4308         PR c++/23293
4309         * pt.c (convert_template_argument): Use canonical type variants in
4310         template specializations.
4312 2005-10-18  Nathan Sidwell  <nathan@codesourcery.com>
4314         PR c++/21383
4315         * name-lookup.c (arg_assoc): Template args can be null in a
4316         template-id-expr.
4318         PR c++/22604
4319         * class.c (update_vtable_entry_for_fn): Don't process invalid
4320         covariant overriders.
4322         PR c++/23118
4323         * cp-tree.h (add_method): Add return value.
4324         * class.c (add_method): Return success indicator.
4325         * semantics.c (finish_member_declaration): Don't add an invalid
4326         method to the method list.
4328 2005-10-17  Mark Mitchell  <mark@codesourcery.com>
4330         PR c++/21908
4331         * call.c (build_new_method_call): Do not show VTT parameters to
4332         the user.
4334 2005-10-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4336         PR c++/23440
4337         * parser.c (cp_parser_statement): If the parser reached CPP_EOF,
4338         only complain about missing statement.
4340 2005-10-17  Nathan Sidwell  <nathan@codesourcery.com>
4342         PR c++/24386
4343         * cp-tree.h (BASELINK_QUALIFIED_P): New.
4344         * pt.c (tsubst_copy_and_build): <CALL_EXPR case>: Use it.
4345         * typeck.c (finish_class_member_access_expr): Set it.
4347         PR c++/21353
4348         * decl.c (check_default_argument): Don't check
4349         processing_template_decl or uses_template_parms here.
4350         (grokparms): Only call check_default_argument when not processing
4351         a template decl.
4352         * parser.c (cp_parser_late_parsing_default_arg): Call
4353         check_default_argument when not processing a template decl.
4355 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
4357         PR c++/24389
4358         * decl2.c (mark_used): Use uses_template_parms instead of
4359         dependent_type_p.
4360         * init.c (constant_value_1): Handle uninstantiated templates
4361         specially.
4362         * pt.c (instantiate_decl): Add sanity check.
4364 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
4366         PR c++/22173
4367         * typeck.c (check_template_keyword): Fix thinko.
4369 2005-10-16  Andrew Pinski  <pinskia@physics.uc.edu>
4371         PR c++/23959
4372         * decl.c (pop_switch): Only call c_do_switch_warnings
4373         when not processing templates.
4375 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
4377         PR c++/22173
4378         * cp-tree.h (QUALIFIED_NAME_IS_TEMPLATE): New macro.
4379         (check_template_keyword): New function.
4380         (finish_id_expression): Change prototoype.
4381         (finish_qualified_id_expr): Change prototype.
4382         (build_qualified_name): New function.
4383         (finish_class_member_access_expr): Change prototype.
4384         * init.c (build_offset_ref): Use build_qualified_name.
4385         * mangle.c (write_expression): Likewise.
4386         * parser.c (cp_parser_primary_expression): Remove qualifying_class
4387         parameter.  Add address_p and template_arg_p.  Use
4388         build_qualified_name.
4389         (cp_parser_id_expression): Default *template_p to
4390         template_keyword_p.  Check for invalid uses of the template
4391         keyword.
4392         (cp_parser_postfix_expression): Eliminate special handling for
4393         qualified names.  Adjust call to cp_parser_primary_expression.
4394         (cp_parser_postfix_dot_deref_expression): Adjust call to
4395         cp_parser_id_expression and finish_class_member_access_expr.
4396         (cp_parser_template_argument_list): Add comment.
4397         (cp_parser_template_argument): Adjust use of
4398         cp_parser_primary_expression.  Remove call to
4399         finish_qualified_id_expr.
4400         (cp_parser_lookup_name): Use build_qualified_name.
4401         * pt.c (tsubst): Use build_qualified_name.
4402         (tsubst_qualified_id): Likewise.  Adjust call to
4403         finish_qualified_id_expr.
4404         (tsubst_copy): Use build_qualified_name.
4405         (tsubst_copy_and_build): Adjusts call to finish_id_expression and
4406         finish_class_member_access_expr.
4407         * semantics.c (finish_non_static_data_member): Use
4408         build_qualified_name.
4409         (finish_qualified_id_expr): Add template_p and template_arg_p
4410         parameters.
4411         (finish_id_expression): Remove qualifiying_class parameter.  Add
4412         template_p, done, address_p, and template_arg_p.  Use
4413         build_qualified_name.  Adjust calls to
4414         finish_class_member_acess_expr.
4415         * tree.c (build_qualified_name): New function.
4416         * typeck.c (check_template_keyword): New function.
4417         (finish_class_member_access_expr): Add template_p argument.  Check
4418         for invalid uses of the template keyword.
4420 2005-10-15  Mark Mitchell  <mark@codesourcery.com>
4422         PR c++/21347
4423         * class.c (maybe_warn_about_overly_private_class): Lazy
4424         constructors are public.
4426 2005-10-14  Mark Mitchell  <mark@codesourcery.com>
4428         PR c++/19565
4429         * call.c (convert_like_real): Rely on convert_and_check to issue
4430         warnings about overflow and conversion to unsigned.
4431         * decl.c (finish_enum): Use the location of the enumerators, not
4432         the closing brace of the enumeration, when reporting warnings
4433         about conversions.
4434         (build_enumerator): Use error_mark_node for erroneous values.
4435         * typeck2.c (digest_init): Remove reference to "signature pointer"
4436         from comment.
4438 2005-10-14  Nathan Sidwell  <nathan@codesourcery.com>
4440         PR c++/17796
4441         * optimize.c (update_cloned_parm): Add FIRST parameter. Use it.
4442         (maybe_clone_body): Track the first clone.
4444 2005-10-13  Nathan Sidwell  <nathan@codesourcery.com>
4446         PR c++/23984
4447         * class.c (build_base_path): The vtable is always the first thing
4448         in the vtt.
4450 2005-10-13  Mark Mitchell  <mark@codesourcery.com>
4452         PR c++/20721
4453         * cp-tree.h (DECL_NONTRIVIALLY_INITIALIZED_P): New macro.
4454         * decl.c (duplicate_decls): Merge it into new declarations.
4455         (decl_jump_unsafe): Use it, rather than DECL_INITIAL.
4456         (cp_finish_decl): Set it, when appropriate.
4458         PR c++/22180
4459         * call.c (build_new_method_call): Correct pretty-printing of
4460         destructor names.
4461         * pt.c (tsubst_qualified_id): Recognize invalid uses of "~T" as an
4462         identifier.
4464         PR c++/23694
4465         * decl.c (start_method): Return error_mark_node for errors.
4467         PR c++/23307
4468         * pt.c (push_template_decl_real): Complain about attempts to
4469         declare template variables.
4471         PR c++/22352
4472         * pt.c (tsubst_template_parms): Set processing_template_decl while
4473         processing the parameters.
4474         (tsubst_decl): Set processing_template_decl when substituting into
4475         a TEMPLATE_DECL.
4477         PR c++/22405
4478         * pt.c (most_specialized_instantiation): Robustify.
4480         PR c++/22464
4481         * semantics.c (finish_id_expression): Issue errors about uses of
4482         local variables in containing functions even in templates.
4484 2005-10-12  Danny Smith  <dannysmith@users.sourceforge.net>
4486         PR target/21801
4487         PR target/23589
4488         * class.c (finish_struct_1): Call
4489         targetm.cxx.adjust_class_at_definition.
4492 2005-10-12  Nathan Sidwell  <nathan@codesourcery.com>
4494         PR c++/21592
4495         * pt.c (build_non_dependent_expr): Don't wrap a COMPONENT_REF
4496         with already looked up member functions.  Assert we're not
4497         returning a NON_DEPENDENT_EXPR with unknown type.
4498         * typeck.c (finish_class_member_access_expr):  We can get
4499         non-template-id-expr baselinks.  If the lookup finds a baselink,
4500         remember it even inside templates.
4502         PR c++/23797
4503         * parser.c (cp_parser_functional_cast): Cope when TYPE is not a
4504         TYPE_DECL.  Use dependent_type_p to check type.
4505         * pt.c (uses_template_parms_p): Use dependent_type_p for a
4506         TYPE_DECL.
4507         (type_dependent_expression_p): Assert we've not been given a
4508         TYPE_DECL.
4510         PR c++/21117
4511         * decl.c (check_function_type): Correctly overwrite incomplete
4512         return type with void type.
4513         * typeck.c (check_return_expr): If the function's return type is
4514         void, don't try and convert a return expr.
4516 2005-10-12  David Edelsohn  <edelsohn@gnu.org>
4518         PR c++/23730
4519         * call.c (build_object_call): If BINFO is NULL, bypass
4520         lookup_fnfields and set fns to NULL_TREE.
4522 2005-10-12  Paolo Bonzini  <bonzini@gnu.org>
4524         PR c++/24052
4525         * error.c (dump_expr): Pass LABEL_DECL to dump_decl.  Print
4526         an ADDR_EXPR of a LABEL_DECL as &&.
4528 2005-10-12  Nathan Sidwell  <nathan@codesourcery.com>
4530         PR c++/19964
4531         * class.c (walk_subobject_offsets): Don't walk error_mark_node.
4533 2005-10-11  Ian Lance Taylor  <ian@airs.com>
4535         PR c++/8057
4536         * cvt.c (convert_to_void): Don't warn about unused values when
4537         processing a template declaration.
4539 2005-10-11  Mark Mitchell  <mark@codesourcery.com>
4541         PR c++/21089
4542         * call.c (convert_like_real): Use decl_constant_value, not
4543         integral_constant_value.
4544         * init.c (constant_value_1): New function.
4545         (integral_constant_value): Use it.
4546         (decl_constant_value): Likewise.
4547         * typeck.c (decay_conversion): Use decl_constant_value, not
4548         integral_constant_value.
4550         PR c++/21369
4551         * parser.c (cp_parser_elaborated_type_specifier): Don't treat
4552         class types as templates if the type is not appearing as part of a
4553         type definition or declaration.
4555 2005-10-10  Mark Mitchell  <mark@codesourcery.com>
4557         PR c++/24277
4558         * pt.c (instantiate_decl): Call finish_static_data_member_decl for
4559         static data members.
4561 2005-10-10  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
4562             Mark Mitchell  <mark@codesourcery.com>
4564         PR c++/23437
4565         * parser.c (cp_parser_template_argument_list): Do not treat
4566         contents of argument list as part of a constant expression.
4568 2005-10-10  Mark Mitchell  <mark@codesourcery.com>
4570         PR c++/24139
4571         * decl.c (grokdeclarator): Do not require template parameter lists
4572         for explicitly specialized class.
4573         * error.c (dump_aggr_type): Do not dump template arguments for
4574         non-primary specializations.
4575         (dump_function_name): Likewise.
4577         PR c++/24275
4578         * pt.c (instantiate_decl): Instantiate the initializer of
4579         a static data member in the namespace containing the class
4580         containing the static data member.
4582 2005-10-08  James A. Morrison  <phython@gcc.gnu.org>
4584         PR c++/22172
4585         * parser.c (cp_parser_postfix_expression) <RID_TYPENAME>: Treat nontype
4586         scopes as nondependent.
4588 2005-10-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4590         * call.c (resolve_args): Remove redundant test.
4592 2005-10-05  Paolo Bonzini  <bonzini@gnu.org>
4594         PR tree-optimization/21419
4595         PR tree-optimization/24146
4596         PR tree-optimization/24151
4598         * semantics.c (finish_asm_stmt): Call readonly_error if outputs are
4599         read-only.  Set ASM_VOLATILE_P for asms without outputs.
4601 2005-10-05  Nathan Sidwell  <nathan@codesourcery.com>
4603         PR c++/23513
4604         * call.c (joust): Adjust length count to more_specialized_fn.
4605         * pt.c (more_specialized_fn): Cope with non-static member vs
4606         non-member.
4608 2005-10-04  Andrew Pinski  <pinskia@physics.uc.edu>
4610         PR middle-end/23125
4611         * decl.c (make_rtl_for_nonlocal_decl): Use set_user_assembler_name
4612         instead of change_decl_assembler_name.
4614 2005-10-03  Alexandre Oliva  <aoliva@redhat.com>
4616         * error.c (dump_type) <UNKNOWN_TYPE>: Print reworded message.
4618 2005-10-03  Mark Mitchell  <mark@codesourcery.com>
4620         PR c++/17775
4621         * repo.c: Include flags.h.
4622         (finish_repo): Add -frandom-seed to the arguments.
4624 2005-10-02  Mark Mitchell  <mark@codesourcery.com>
4626         PR c++/22621
4627         * parser.c (cp_parser_template_argument): Don't turn "T::f" into
4628         "(*this).T::f".
4629         * pt.c (convert_nontype_argument): Remove ??? comment.
4631         PR c++/23840
4632         * tree.c (lvalue_p_1): A VA_ARG_EXPR with class type is an lvalue,
4633         when class rvalues are lvalues.
4635 2005-09-28  Mark Mitchell  <mark@codesourcery.com>
4637         PR c++/16782
4638         * decl.c (grokdeclarator): Always pedwarn about overqualified
4639         member names.
4641 2005-09-27  Mark Mitchell  <mark@codesourcery.com>
4643         PR c++/22147
4644         * name-lookup.c (maybe_process_template_type_declaration): Don't
4645         treat forward declarations of classes as templates just because
4646         we're processing_template_decl.
4647         * pt.c (tsubst_decl): Clear DECL_TEMPLATE_INFO for friend
4648         functions.
4650 2005-09-26  Jason Merrill  <jason@redhat.com>
4652         PR c++/13764
4653         * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): New macro.
4654         * name-lookup.c (pushdecl_maybe_friend): Check it.
4655         * decl.c (begin_function_body): Do nothing if it's false.
4656         (finish_function_body): Ditto.
4657         (outer_curly_brace_block): New fn.
4658         (finish_function): Use it.
4660 2005-09-26  Richard Guenther  <rguenther@suse.de>
4662         PR middle-end/15855
4663         * decl2.c (do_static_destruction): Remove.
4664         (finish_static_initialization_or_destruction): Likewise.
4665         (DECL_EFFECTIVE_INIT_PRIORITY): New macro.
4666         (NEEDS_GUARD_P): Likewise.
4667         (do_static_initialization): Rename to
4668         do_static_initialization_or_destruction.  Process all
4669         initializers/destructors and handle common conditionalizing.
4670         (start_static_initialization_or_destruction): Rename to
4671         one_static_initialization_or_destruction.  Handle only
4672         decl-specific conditionalizing.
4673         (cp_finish_file): Call do_static_initialization_or_destruction.
4675 2005-09-22  Jakub Jelinek  <jakub@redhat.com>
4677         PR c++/21983
4678         * class.c (find_final_overrider): Move diagnostic about no unique final
4679         overrider to...
4680         (update_vtable_entry_for_fn): ... here.
4682 2005-09-21  Mark Mitchell  <mark@codesourcery.com>
4684         PR c++/23993
4685         * init.c (integral_constant_value): Use DECL_INTEGRAL_CONSTANT_VAR_P.
4687 2005-09-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4689         PR c++/23965
4690         * call.c (resolve_args): Return error_mark_node on arguments
4691         whose TREE_TYPE is error_mark_node.
4693 2005-09-20  Jakub Jelinek  <jakub@redhat.com>
4695         PR c++/23947
4696         * rtti.c (get_pseudo_ti_init): Recompute ti pointer after
4697         get_tinfo_ptr calls.
4699 2005-09-16  Mark Mitchell  <mark@codesourcery.com>
4701         PR c++/23914
4702         * parser.c (cp_parser_enclosed_template_argument_list): Make sure
4703         skip_evaluation is false when processing template arguments.
4705         PR c++/21514
4706         * pt.c (check_instantiated_args): Treat uses of anonymous types as
4707         causing type-deduction failure.
4709 2005-09-15  Jason Merrill  <jason@redhat.com>
4711         PR c++/23357
4712         * cp-tree.def (SIZEOF_EXPR, ALIGNOF_EXPR): Change code class to
4713         tcc_expression.
4715 2005-09-15  Mark Mitchell  <mark@codesourcery.com>
4717         PR c++/23896
4718         * pt.c (tsubst_aggr_type): Make sure skip_evaluation is false when
4719         processing template arguments.
4721         * pt.c (check_explicit_instantiation_namespace): Fix typo.
4723         PR c++/13140
4724         * decl.c (check_class_member_definition_namespace): New function.
4725         (grokfndecl): Use it.
4726         (grokvardecl): Likewise.
4727         (grokdecl): Improve documentation.
4728         * pt.c (check_explicit_instantiation_namespace): New function.
4729         (register_specialization): Call check_specialization_namespace
4730         when replacing an implicitly instantiated function.
4731         (check_explicit_specialization): Ensure that DECL_CONTEXT is set
4732         correctly for namespace-scope specializations.
4733         (do_decl_instantiation): Use
4734         check_explicit_instantiation_namespace.
4735         (do_type_instantiation): Likewise.
4737 2005-09-15  Nathan Sidwell  <nathan@codesourcery.com>
4739         PR c++/23725
4740         * error.c (dump_decl): <USING_DECL case> Use USING_DECL_SCOPE.
4742 2005-09-13  Bastian Blank <waldi@debian.org>
4744         PR c++/16171
4745         * mangle.c (find_substitution): Do not use special substitutions
4746         for identifiers not in std::.
4748 2005-09-13  Mark Mitchell  <mark@codesourcery.com>
4750         PR c++/23839
4751         * typeck.c (cxx_mark_addressable): Only check DECL_HARD_REGISTER
4752         for VAR_DECLs.
4754 2005-09-13  Mark Mitchell  <mark@codesourcery.com>
4756         PR c++/23842
4757         * pt.c (tsubst_default_argument): Do treat default argument
4758         expressions as occurring in the context of the function called.
4760 2005-09-12  Mark Mitchell  <mark@codesourcery.com>
4762         PR c++/23841
4763         * parser.c (cp_parser_primary_expression): Recognize the closing
4764         ">" of a template-argument-list after a floating-point literal as
4765         the end of a cast expression.
4767 2005-09-12  Mark Mitchell  <mark@codesourcery.com>
4769         PR c++/23789
4770         * cvt.c (perform_qualification_conversions): Don't create
4771         unnecessary NOP_EXPRs.
4772         * pt.c (tsubst_template_arg): Use fold_non_dependent_expr.
4774 2005-09-12  Ian Lance Taylor  <ian@airs.com>
4776         PR g++/7874
4777         * cp-tree.h (struct lang_decl_flags): Add hidden_friend_p
4778         bitfield.  Make dummy bitfield one bit smaller.
4779         (DECL_HIDDEN_FRIEND_P): Define.
4780         (pushdecl_maybe_friend): Declare.
4781         (pushdecl_top_level_maybe_friend): Declare.
4782         * decl.c (duplicate_decls): Add newdecl_is_friend parameter.
4783         Change prototype and all callers.  Add assertion that a
4784         DECL_ARTIFICIAL FUNCTION_DECL is not DECL_HIDDEN_FRIEND_P.  Set
4785         DECL_ANTICIPATED and DECL_HIDDEN_FRIEND_P in duplicated decl if
4786         appropriate.
4787         * name-lookup.c (supplement_binding): Don't ignore a
4788         DECL_HIDDEN_FRIEND_P.
4789         (pushdecl_maybe_friend): Break out contents of pushdecl.  Add
4790         is_friend parameter.  Set DECL_ANTICIPATED and
4791         DECL_HIDDEN_FRIEND_P for a friend function.
4792         (pushdecl): Just call pushdecl_maybe_friend.
4793         (pushdecl_with_scope): Add is_friend parameter.  Change prototype
4794         and all callers.
4795         (pushdecl_namespace_level): Likewise.
4796         (push_overloaded_decl): Likewise.  Check DECL_HIDDEN_FRIEND_P as
4797         well as DECL_ANTICIPATED when checking for a builtin.
4798         (do_nonmember_using_decl): Check DECL_HIDDEN_FRIEND_P as well as
4799         DECL_ANTICIPATED when checking for a builtin.
4800         (do_nonmember_using_decl): Likewise.
4801         (pushdecl_top_level_1): Add is_friend parameter.  Change all
4802         callers.
4803         (pushdecl_top_level_maybe_friend): New function.
4804         (remove_hidden_names): New function.
4805         (struct arg_lookup): Add args field.
4806         (friend_of_associated_class_p): New static function.
4807         (arg_assoc_namespace): Ignore hidden functions which are not
4808         friends of an associated class of some argument.
4809         (lookup_arg_dependent): Remove hidden functions from list passed
4810         in.  Initialize k.args.
4811         * name-lookup.h (remove_hidden_names): Declare.
4812         * friend.c (do_friend): Call pushdecl_maybe_friend instead of
4813         pushdecl.
4814         * call.c (add_function_candidate): Change DECL_ANTICIPATED test to
4815         an assertion, with a check for DECL_HIDDEN_FRIEND_P.
4816         (build_new_function_call): Add koenig_p parameter.  Change
4817         prototype and callers.
4818         * pt.c (register_specialization): Add is_friend parameter.  Change
4819         all callers.
4820         (push_template_decl_real): Change is_friend parameter to bool.
4821         Change prototype and all callers.
4822         (tsubst_friend_class): Call pushdecl_top_level_maybe_friend
4823         instead of pushdecl_top_level.
4825 2005-09-11  Richard Henderson  <rth@redhat.com>
4827         * decl2.c (build_anon_union_vars): Copy attributes from the base addr.
4828         * pt.c (tsubst_decl): Substitute in DECL_VALUE_EXPR.
4830 2005-09-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4832         * parser.c (cp_parser_translation_unit): Simplify.  The while-block
4833         was actually executed at most once.
4835 2005-09-09  Richard Henderson  <rth@redhat.com>
4837         PR debug/20998
4838         * cp-tree.def (ALIAS_DECL): Remove.
4839         * cp-lang.c (cp_init_ts): Remove support for it.
4840         * error.c (dump_decl): Likewise.
4841         * name-lookup.c (pushdecl): Likewise.
4842         * semantics.c (finish_id_expression): Likewise.
4843         * decl2.c (build_anon_union_vars): Use a VAR_DECL with
4844         DECL_VALUE_EXPR instead.
4846 2005-09-09  Mark Mitchell  <mark@codesourcery.com>
4848         PR c++/22252
4849         * decl.c (start_preparsed_function): Do not pay attention to
4850         #pragma interface for implicitly-defined methods.
4851         * decl2.c (cp_finish_file): Do not complain about uses of inline
4852         functions that have bodies, even if we decided not to emit the
4853         body in this translation unit.
4854         * semantics.c (note_decl_for_pch): Do not mess with linkage.
4855         (expand_or_defer_fn): Make inline, non-template functions COMDAT
4856         at this point.
4858 2005-09-08  Richard Henderson  <rth@redhat.com>
4860         PR debug/23190
4861         * decl.c (wrapup_globals_for_namespace): Call
4862         emit_debug_global_declarations.
4863         * decl2.c (cp_finish_file): Likewise.
4865 2005-09-08  Mark Mitchell  <mark@codesourcery.com>
4867         PR c++/23691
4868         * decl2.c (mark_used): Instantiate static data members initialized
4869         by constants, even in a template.
4871 2005-09-08  Andrew Pinski  <pinskia@physics.uc.edu>
4873         PR obj-c++/16816
4874         * parser.c (cp_parser_objc_selector_expression): Treat CPP_SCOPE as
4875         two CPP_COLON.
4877 2005-09-07  Richard Guenther  <rguenther@suse.de>
4879         * cp-gimplify.c (cp_gimplify_expr): Create empty CONSTRUCTOR
4880         for EMPTY_CLASS_EXPR.
4882 2005-09-06  Jakub Jelinek  <jakub@redhat.com>
4884         PR c/23075
4885         * typeck.c (check_return_expr): Add no_warning argument.  Set
4886         *no_warning to true if "return-statement with no value, in function
4887         returning" warning has been issued.
4888         * cp-tree.h (check_return_expr): Adjust prototype.
4889         * semantics.c (finish_return_stmt): Set TREE_NO_WARNING if
4890         check_return_expr set *no_warning to true.
4892 2005-09-06  Mark Mitchell  <mark@codesourcery.com>
4894         * cp-tree.h (rvalue): New function.
4895         * call.c (build_conditional_expr): Use it.
4896         * init.c (build_new_1): Likewise.
4897         * rtti.c (build_dynamic_cast_1): Likewise.
4898         * tree.c (rvalue): New function.
4899         * typeck.c (build_unary_op): Use it.
4900         (build_static_cast_1): Likewise.
4902         PR c++/9782
4903         * init.c (build_new_1): Make sure the entire array type is
4904         complete, not just its element types.
4906 2005-09-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4908         * decl.c (check_elaborated_type_specifier): Remove redundant check.
4910 2005-09-06  Jakub Jelinek  <jakub@redhat.com>
4912         PR c++/23056
4913         * typeck.c (ignore_overflows): New helper function.
4914         (build_static_cast_1): Use it.
4916 2005-09-06  Kazu Hirata  <kazu@codesourcery.com>
4918         * cp-tree.h, decl.c, decl2.c, semantics.c: Fix comment typos.
4919         Follow spelling conventions.
4921 2005-09-05  Mark Mitchell  <mark@codesourcery.com>
4923         PR c++/23667
4924         * pt.c (tsubst_decl): Clear DECL_TEMPLATE_INSTANTIATED when
4925         copying a VAR_DECL.
4927 2005-09-05  Mark Mitchell  <mark@codesourcery.com>
4929         PR c++/21440
4930         * semantics.c (finish_stmt_expr_expr): Add an explicit
4931         initialization to the last statement in the statement-expression.
4932         * (finish_stmt_expr): Adjust accordingly.
4934 2005-09-03  Mark Mitchell  <mark@codesourcery.com>
4936         PR c++/23699
4937         * decl2.c (mark_used): Always instantiate static data members
4938         initialized by constant expressions.
4939         * pt.c (instantiate_decl): Instantiate the initializers for static
4940         data members initialized by constant expressions.
4942         PR c++/21687
4943         * semantics.c (expand_or_defer_fn): Do not call ggc_collect when
4944         finishing processing for a template function in a local class.
4945         Revert:
4946         2005-09-02  Mark Mitchell  <mark@codesourcery.com>
4947         * parser.c (cp_parser_class_specifier): Push/pop GC contexts
4948         around functions in local classes.
4950 2005-09-02  Mark Mitchell  <mark@codesourcery.com>
4952         PR c++/21687
4953         * parser.c (cp_parser_class_specifier): Push/pop GC contexts
4954         around functions in local classes.
4956 2005-08-31  Andrew Pinski  <pinskia@physics.uc.edu>
4958         PR obj-c++/23640
4959         * decl2.c (cp_finish_file): If this is obj-c++ and we need a static
4960         init, call generate_ctor_or_dtor_function.
4962 2005-08-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4964         PR c++/13377
4965         * parser.c (cp_parser_lookup_name): Pass LOOKUP_COMPLAIN to
4966         lookup_name_real on final parse.
4968 2005-08-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4970         PR c++/23639
4971         * semantics.c (qualified_name_lookup_error): Do not complain again
4972         on invalid scope.
4974 2005-08-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
4976         PR c++/23586
4977         * parser.c (cp_parser_namespace_name): Move diagnostic for
4978         invalid namespace-name to here from ...
4979         * name-lookup.c (do_namespace_alias): ... here and ...
4980         (do_using_directive): ... here.  Remove dead code.
4982 2005-08-28  Mark Mitchell  <mark@codesourcery.com>
4984         PR c++/23099
4985         * cp-tree.h (saved_scope): Add skip_evaluation.
4986         * decl.c (start_decl): Use DECL_INITIALIZED_IN_CLASS_P, not
4987         DECL_INITIAL, to determine whether or not a static data member was
4988         initialized in the class-specifier.
4989         (cp_finish_decl): Add comment.
4990         * init.c (integral_constant_value): Subtitute into the
4991         initializers for static data members in templates.
4992         * name-lookup.c (push_to_top_level): Save skip_evaluation.
4993         (pop_from_top_level): Restore it.
4994         * pt.c (instantiate_class_template): Do not substitute into the
4995         intializers of static data members when instantiating a class.
4996         (regenerate_decl_from_template): Simplify.
4997         (instantiate_decl): Tidy.  Substitute into the initializer for a
4998         static data member even when the definition of the data member is
4999         not available.
5001 2005-08-26  Mark Mitchell  <mark@codesourcery.com>
5003         PR c++/19004
5004         * pt.c (uses_template_parms): Handle IDENTIFIER_NODE.
5005         (type_dependent_expression_p): Allow BASELINKs whose associated
5006         functions are simply a FUNCTION_DECL.
5008         PR c++/23491
5009         * cp-tree.h (build_vec_init): Adjust prototype.
5010         * init.c (perform_member_init): Adjust call to build_vec_init.
5011         (build_aggr_init): Likewise.
5012         (build_new_1): Do not call build_default_init for array types.
5013         (build_vec_init): Add explicit_default_init_p parameter.  Perform
5014         default initialization of vector elements when set.
5015         * typeck.c (build_modify_expr): Adjust call to build_vec_init.
5017 2005-08-25  Nathan Sidwell  <nathan@codesourcery.com>
5019         PR c++/20817
5020         * typeck.c (build_x_unary_op): Make sure OFFSET_REF is not for a
5021         ->*.
5023 2005-08-24  Nathan Sidwell  <nathan@codesourcery.com>
5025         PR c++/22454
5026         * parser.c (cp_lexer_peek_nth_token): Relax assert.
5028 2005-08-23  Nathan Sidwell  <nathan@codesourcery.com>
5030         PR c++/23044
5031         * pt.c (tsubst_qualified_id): A SCOPE_REF can still remain.
5033 2005-08-22  James E Wilson  <wilson@specifix.com>
5035         PR tree-optimization/23426
5036         * decl.c (grokdeclarator): Use TYPE_SIZE_UNIT not TYPE_SIZE for
5037         array size check.
5039 2005-08-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5041         PR c++/22233
5042         * pt.c (push_template_decl_real): Return error_mark_node if the
5043         number of template parameters does not match previous definition.
5045 2005-08-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5047         PR c++/23089
5048         * decl.c (require_complete_types_for_parms): Mark incomplete types
5049         as invalid.
5051 2005-08-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5053         * parser.c (cp_parser_nth_token_starts_template_argument_list_p):
5054         Fix typo in leading comment.
5056 2005-08-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5058         * name-lookup.c, ptree.c: Delete HOST_PTR_PRINTF.
5060 2005-08-15 Fariborz Jahanian <fjahanian@apple.com>
5062         * cp-tree.h (can_convert_arg, fn_type_unification): New argument.
5063         * call.c (add_template_candidate_real): Pass down 'flags' to
5064         fn_type_unification.
5065         (can_convert_arg): New 'flags' argument. Pass it to call to
5066         implicit_conversion instead of LOOKUP_NORMAL.
5067         (can_convert): Add LOOKUP_NORMAL to call to can_convert_arg.
5068         * class.c (resolve_address_of_overloaded_function): Ditto.
5069         (resolve_address_of_overloaded_function): Ditto.
5070         * decl.c (reshape_init, check_default_argument): Ditto.
5071         * typeck.c (build_ptrmemfunc): Ditto.
5072         * pt.c (type_unification_real): Add 'flags' argument.
5073         (fn_type_unification): Pass 'flags' to type_unification_real.
5074         (type_unification_real): Pass new 'flags' argument to call to
5075         can_convert_arg.
5077 2005-08-12  Giovanni Bajo  <giovannibajo@libero.it>
5078             Nathan Sidwell  <nathan@codesourcery.com>
5080         PR c++/21799
5081         PR c++/8271
5082         * pt.c (unify) <METHOD_TYPE>: Check this-pointer cv-qualifiers
5083         explicitly.
5085 2005-08-12  Nathan Sidwell  <nathan@codesourcery.com>
5087         PR c++/21799
5088         Revert my 2005-07-08 patch
5089         * pt.c (type_unification_real): Remove is_method_argument and
5090         assoicated checks.
5091         (fn_type_unification, unify): Adjust type_unification_real calls.
5093 2005-08-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5095         PR c++/23266
5096         * decl2.c (grokfield): Check that method is not static before
5097         marking it as pure.
5099 2005-08-11  Nathan Sidwell  <nathan@codesourcery.com>
5101         PR c++/23219
5102         * name-lookup.c (pushtag): Process the template type before
5103         altering the identifier lookup fields.  Remove unreachable code
5104         creating an empty stub decl.
5106 2005-08-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5108         PR c++/20646
5109         * decl.c (grokdeclarator): Reset storage_class after error.
5111 2005-08-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5113         PR c++/22508
5114         * init.c (build_new_1): Check for empty candidate list.
5116 2005-08-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5118         PR c++/23191
5119         * pt.c (tsubst) <case METHOD_TYPE>: Check for error_mark_node
5120         before calling build_exception_variant.
5122 2005-08-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5124         PR c++/19498
5125         * pt.c (tsubst_decl) <case TEMPLATE_DECL>: Return ERROR_MARK_NODE
5126         if substitution of template args did not succeed.
5128 2005-08-06  Michael Matz  <matz@suse.de>
5130         * method.c (use_thunk): Call init_insn_lengths.
5132 2005-08-05  James A. Morrison  <phython@gcc.gnu.org>
5134         PR c++/22514
5135         * name-lookup.c (cp_emit_debug_info_for_using): Do nothing if
5136         sorrycount or errorcount are nonzero.
5138 2005-08-05  Mark Mitchell  <mark@codesourcery.com>
5140         * name-lookup.c (pushtag): Remove accidental commit from:
5141         2004-12-21  Mark Mitchell  <mark@codesourcery.com>
5142         PR c++/19063
5143         * decl.c (grokdeclarator): Return error_mark_node, not
5144         void_type_node, to indicate errors.
5145         * parser.c (cp_parser_template_parameter_list): Robustify.
5146         (cp_parser_template_parameter): Likewise.
5148 2005-08-01  Kazu Hirata  <kazu@codesourcery.com>
5150         * class.c, decl.c, name-lookup.c, pt.c, typeck.c, typeck2.c:
5151         Fix comment typos.
5153 2005-07-29  Kazu Hirata  <kazu@codesourcery.com>
5155         * method.c: Fix a comment typo.
5157 2005-07-28  Mark Mitchell  <mark@codesourcery.com>
5159         PR c++/22545
5160         * call.c (add_builtin_candidate): Adjust for changes in
5161         representation of pointer-to-member types.
5163 2005-07-28  Mike Stump  <mrs@apple.com>
5165         * pt.c (check_explicit_specialization): Add visibility logic.
5166         (lookup_template_class): Likewise.
5167         (instantiate_class_template): Likewise.
5169 2005-07-27  Devang Patel  <dpatel@apple.com>
5171         * name-lookup.c (pushtag): Do no set DECL_IGNORED_P bit.
5173 2005-07-25  Ian Lance Taylor  <ian@airs.com>
5175         * ptree.c (cxx_print_identifier): Print a leading space if the
5176         indent level is 0.
5178 2005-07-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5180         * call.c (convert_for_arg_passing): Check function pointers when
5181         -Wmissing-format-attribute is activated.
5182         * typeck.c (convert_for_assignment): Likewise.
5184 2005-07-22  Manfred Hollstein  <mh@suse.com>
5186         * parser.c (cp_parser_declaration): Fix unitialised warnings.
5188 2005-07-21  Andrew Pinski  <pinskia@physics.uc.edu>
5190         * class.c (build_base_path): Fix typo.
5192 2005-07-21  Andrew Pinski  <pinskia@physics.uc.edu>
5194         PR C++/22358
5195         * class.c (build_base_path): Convert BINFO_OFFSET to the correct type.
5197 2005-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5199         * call.c: Fix comment typo(s).
5200         * cxx-pretty-print.h: Likewise.
5201         * name-lookup.c: Likewise.
5202         * parser.c: Likewise.
5204 2005-07-20  Douglas Gregor <doug.gregor@gmail.com>
5206         PR c++/2922
5207         * semantics.c (perform_koenig_lookup): For dependent calls, just
5208         return the set of functions we've found so far. Later, it will be
5209         augmented by those found through argument-dependent lookup.
5210         * name-lookup.c (lookup_arg_dependent): Implement DR 164 by removing
5211         the optimization that skips namespaces where the functions were
5212         originally found.
5214 2005-07-20  Giovanni Bajo  <giovannibajo@libero.it>
5216         Make CONSTRUCTOR use VEC to store initializers.
5217         * call.c (convert_default_arg): Update call to digest_init.
5218         * class.c (dump_class_hierarchy, dump_array): Update to cope with
5219         VEC in CONSTRUCTOR_ELTS.
5220         * cp-tree.h (EMPTY_CONSTRUCTOR_P): Likewise.
5221         (finish_compound_literal, digest_init): Update declaration.
5222         * decl.c (struct reshape_iter): New data type.
5223         (reshape_init_array): Rename to...
5224         (reshape_init_array_1): Update to cope with VEC in CONSTRUCTOR_ELTS.
5225         (reshape_init): Rewrite from scratch. Split parts into...
5226         (reshape_init_array, reshape_init_vector, reshape_init_class,
5227         reshape_init_r): New functions.
5228         (check_initializer): Update call to reshape_init. Remove obsolete
5229         code.
5230         (initialize_artificial_var, cp_complete_array_type): Update to cope
5231         with VEC in CONSTRUCTOR_ELTS.
5232         * decl2.c (grokfield): Update calls to digest_init.
5233         (mark_vtable_entries): Update to cope with VEC in CONSTRUCTOR_ELTS.
5234         * error.c (dump_expr_init_vec): New function.
5235         (dump_expr): Use dump_expr_init_vec.
5236         * init.c (build_zero_init, build_vec_init): Update to cope with VEC
5237         in CONSTRUCTOR_ELTS.
5238         (expand_default_init): Update call to digest_init.
5239         * parser.c  (cp_parser_postfix_expression): Use a VEC for the
5240         initializers.
5241         (cp_parser_initializer_list): Build a VEC of initializers.
5242         * pt.c (tsubst_copy, tsubst_copy_and_build): Update to cope with VEC
5243         in CONSTRUCTOR_ELTS.
5244         * rtti.c (tinfo_base_init, generic_initializer, ptr_initializer,
5245         ptm_initializer, class_initializer, get_pseudo_ti_init): Use
5246         build_constructor_from_list instead of build_constructor.
5247         * semantics.c (finish_compound_literal): Update call to digest_init.
5248         * tree.c (stabilize_init): Update to cope with VEC in
5249         CONSTRUCTOR_ELTS.
5250         * typeck.c (build_ptrmemfunc1): Likewise.
5251         * typeck2.c: (cxx_incomplete_type_error, split_nonconstant_init_1):
5252         Likewise.
5253         (store_init_value): Use build_constructor_from_list and update call
5254         to digest_init.
5255         (digest_init): Rewrite.
5256         (process_init_constructor): Rewrite from scratch. Split into...
5257         (process_init_constructor_array, picflag_from_initializer,
5258         process_init_constructor_record, process_init_constructor_union):
5259         New functions.
5260         (PICFLAG_ERRONEOUS, PICFLAG_NOT_ALL_CONSTANT, PICFLAG_NOT_ALL_SIMPLE):
5261         New macros.
5262         (build_functional_cast): Use build_constructor_from_list instead of
5263         build_constructor.
5265 2005-07-18  Mark Mitchell  <mark@codesourcery.com>
5267         PR c++/22263
5268         * cp-tree.h (instantiate_decl): Change prototype.
5269         * decl2.c (mark_used): Adjust accordingly.
5270         * pt.c (do_decl_instantiation): Likewise.
5271         (instantiate_class_member): Likewise.
5272         (instantiate_decl): Rename undefined_ok as expl_inst_class_mem_p.
5273         Clear DECL_INTERFACE_KNOWN for an explicitly instantiated template
5274         that has no definition available.
5275         (instantiate_pending_templates): Adjust call to instantiate_decl.
5277 2005-07-17  Mark Mitchell  <mark@codesourcery.com>
5279         PR c++/22139
5280         * cp-tree.h (DECL_TEMPLATE_INFO): Improve documentation.
5281         * decl.c (duplicate_decls): Re-register template specializations
5282         for functions that have DECL_TEMLPLATE_INFO, even if they do not
5283         have DECL_TEMPLATE_INSTANTIATION set.
5285 2005-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5287         * call.c (diagnostic_fn_t): New.
5288         (build_temp, convert_like_real): Use diagnostic_fn_t.
5290 2005-07-15  Mark Mitchell  <mark@codesourcery.com>
5292         PR c++/22204
5293         * repo.c (repo_emit_p): Robustify.
5295 2005-07-14  Daniel Berlin  <dberlin@dberlin.org>
5297         Fix PR c++/22452
5298         * tree.c (decl_linkage): Don't check DECL_COMDAT on CONST_DECL.
5300 2005-07-15  Mark Mitchell  <mark@codesourcery.com>
5302         PR c++/22132
5303         * call.c (implicit_conversion): Add c_cast_p parameter.
5304         (standard_conversion): Likewise.  Allow conversions between
5305         differently-qualified pointer types when performing a C-style
5306         cast.
5307         (add_function_candidate): Adjust callee.
5308         (build_builtin_candidate): Likewise.
5309         (build_user_type_conversion_1): Likewise.
5310         (conditional_conversion): Likewise.
5311         (can_convert_arg): Likewise.
5312         (can_convert_arg_bad): Likewise.
5313         (perform_implicit_conversion): Likewise.
5314         * cp-tree.h (comp_ptr_ttypes_const): Declare.
5315         * typeck.c (comp_ptr_ttypes_const): Give it external linkage.
5316         Return bool.
5318 2005-07-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5319             Nathan Sidwell  <nathan@codesourcery.com>
5321         PR c++/20172
5322         * pt.c (tsubst_template_parms): Check for invalid non-type
5323         parameters.
5325 2005-07-09  Andrew Pinski  <pinskia@physics.uc.edu>
5327         * cp-lang.c (shadowed_var_for_decl, decl_shadowed_for_var_lookup,
5328         decl_shadowed_for_var_insert): Move over to cp-objcp-common.c.
5329         (cp_init_ts): Call init_shadowed_var_for_decl.
5330         Remove include of gt-cp-cp-lang.h.
5331         * cp-objcp-common.c (shadowed_var_for_decl,
5332         decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Moved from
5333         cp-lang.c.
5334         (init_shadowed_var_for_decl): New function to initialize
5335         shadowed_var_for_decl.
5336         Include gt-cp-cp-objcp-common.h.
5337         * Make-lang.in (gt-cp-lang.h): Remove.
5338         (gt-cp-cp-objcp-common.h): Add.
5339         (cp/cp-lang.o): Remove dependancy on gt-cp-lang.h.
5340         (cp/cp-objcp-common.o): Add dependancy on gt-cp-cp-objcp-common.h.
5341         * config-lang.in (gtfiles): Remove cp-lang.c and Add cp-objcp-common.c.
5342         * cp-tree (init_shadowed_var_for_decl): Add prototype.
5344 2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
5346         * Make-lang.in: Add gt-cp-lang.h.
5347         (cp-lang.o): Ditto.
5348         * class.c (create_vtable_ptr): Stop setting DECL_ASSEMBLER_NAME on
5349         the field.
5350         * config-lang.in: Add cp-lang.c to gtfiles.
5351         * cp-lang.c: Include hashtab.h.
5352         (cp_init_ts): New function.
5353         (LANG_HOOK_INIT_TS): Use macro.
5354         (decl_shadowed_for_var_lookup): New function.
5355         (decl_shadowed_for_var_insert): Ditto.
5356         * cp-tree.h (THUNK_FUNCTION_CHECK): Use decl_common.
5357         (NON_THUNK_FUNCTION_CHECK): Ditto.
5358         (DECL_NAMESPACE_ASSOCIATIONS): Use decl_non_common.
5359         (DECL_INIT_PRIORITY): Ditto.
5360         (DECL_HAS_SHADOWED_FOR_VAR_P): Ditto.
5361         (DECL_SHADOWED_FOR_VAR): Use hashtable.
5362         (SET_DECL_SHADOWED_FOR_VAR): Ditto.
5363         * decl.c (duplicate_decls): Update for new/updated structures.
5364         (poplevel): Use SET_DECL_SHADOWED_FOR_VAR.
5365         * decl2.c (start_static_initialization_or_destruction): Deal with
5366         priority.
5367         * pt.c (tsubst_decl): Check TS_DECL_WRTL before doing
5368         SET_DECL_RTL.
5369         * tree.c (handle_init_priority_attribute): Handle priority.
5371 2005-07-08  Nathan Sidwell  <nathan@codesourcery.com>
5373         PR c++/21799
5374         * pt.c (type_unification_real): Add is_method argument.  Use it
5375         for this pointer unification.
5376         (fn_type_unification): Adjust type_unification_real call.
5377         (unify): Likewise.
5379 2005-07-07  Nathan Sidwell  <nathan@codesourcery.com>
5381         * pt.c (type_unification_real): Remove allow_incomplete argument.
5382         Remove unreachable code.
5383         (fn_type_unification): Adjust call to type_unification_real.
5384         (unify): Likewise.
5386 2005-07-05  Paolo Bonzini  <bonzini@gnu.org>
5388         * Makefile.in (class.o, decl2.o): Adjust dependencies.
5389         * class.c: Include tree-dump.h.
5390         * decl2.c: Include tree-dump.h.
5392 2005-07-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5394         * dump.c: Use dump_string_field.
5396 2005-07-03  Joseph S. Myers  <joseph@codesourcery.com>
5398         * cp-tree.h (GCC_DIAG_STYLE): #undef before defining.  Change
5399         minimum GCC version for format checking to 4.1.
5401 2005-07-02  Kazu Hirata  <kazu@codesourcery.com>
5403         * Make-lang.in (cc1plus-checksum.c): Use
5404         build/genchecksum$(build_exeext), not build/genchecksum$(exeext).
5406 2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>
5408         * name-lookup.c, parser.c: Use %q, %< and %> to quote in
5409         diagnostics.
5411 2005-07-02  Zack Weinberg  <zack@codesourcery.com>
5412             Joseph S. Myers  <joseph@codesourcery.com>
5414         * error.c (location_of): Add comment.
5415         (locate_error, cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
5416         * cp-tree.h (cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
5417         * call.c, class.c, decl.c, decl2.c, friend.c, init.c,
5418         name-lookup.c, parser.c, pt.c, search.c, semantics.c, typeck.c,
5419         typeck2.c: Use '+' flag instead of %J, cp_error_at, cp_warning_at
5420         or cp_pedwarn_at.  Mark up some diagnostic strings with N_.
5422 2005-06-30  Daniel Berlin  <dberlin@dberlin.org>
5424         * decl.c (require_complete_types_for_parms): Call relayout_decl
5425         instead of layout_decl.
5427 2005-06-30  Zack Weinberg  <zack@codesourcery.com>
5428             Jakub Jelinek  <jakub@redhat.com>
5430         * cp-lang.c: No need to include cxx-pretty-print.h.
5431         * error.c (cp_printer): Update signature.  No need to process
5432         flags.
5433         (print_instantiation_partial_context): Output last newline
5434         with pp_base_newline.
5435         * Make-lang.in: Update dependencies.
5437 2005-06-30  Steven Bosscher  <stevenb@suse.de>
5439         * decl.c (start_decl): Replace DECL_THREAD_LOCAL with
5440         DECL_THREAD_LOCAL_P.
5441         (cp_finish_decl): Likewise.
5442         (grokvardecl): Set the default DECL_TLS_MODEL here.
5444 2005-06-28  Joseph S. Myers  <joseph@codesourcery.com>
5446         * cvt.c (ocp_convert): Use invalid_conversion hook.
5447         * typeck.c (build_binary_op): Use invalid_binary_op hook.
5448         (build_unary_op): Use invalid_unary_op hook.
5450 2005-06-28  Paul Brook  <paul@codesourcery.com>
5452         * Make-lang.in (cp/except.o): Depend on $(TARGET_H)
5453         * except.c: Include target.h.
5454         (init_exception_processing): Initialize unwind_resume_libfunc.
5455         * doc/tm.texi: Document TARGET_ASM_TTYPE
5457 2005-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5459         * call.c (build_over_call): Pass in named argument list to
5460         `check_function_arguments'.
5461         * typeck.c (build_function_call): Likewise.
5463 2005-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5465         * cp-tree.h (lang_check_failed): Add noreturn attribute.
5467 2005-06-25  Kelley Cook  <kcook@gcc.gnu.org>
5469         * all files: Update FSF address in copyright headers.
5471 2005-06-23  Jason Merrill  <jason@redhat.com>
5473         PR c++/19317
5474         * semantics.c (simplify_aggr_init_expr): Use
5475         CALL_EXPR_RETURN_SLOT_OPT, not CALL_EXPR_HAS_RETURN_SLOT_ADDR.
5477 2005-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5479         * pt.c (register_specialization): Remove superfluous assertion.
5481 2005-06-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5483         * call.c (convert_like_real): Add format attribute.
5484         * typeck.c (check_for_casting_away_constness,
5485         build_static_cast_1): Likewise.
5486         * typeck2.c (readonly_error, cxx_incomplete_type_diagnostic):
5487         Likewise.
5489 2005-06-17  Geoffrey Keating  <geoffk@apple.com>
5491         PR c++/17413
5492         * pt.c (type_unification_real): Apply template type deduction even
5493         to procedure parameters that are not dependent on a template
5494         parameter.
5496 2005-06-16  Nathan Sidwell  <nathan@codesourcery.com>
5498         * rtti.c (get_tinfo_decl): Avoid caching tinfo_descs when it might
5499         change.
5500         (create_pseudo_type_info): First parameter is an int.
5502 2005-06-15  Nathan Sidwell  <nathan@codesourcery.com>
5504         PR c++/20678
5505         * error.c (dump_expr) <COMPONENT_REF case>: Check DECL_NAME is not
5506         null.
5508         * Make-lang.in: Reformat some long lines.
5509         (gt-cp-rtti.h): New target.
5510         (cp/rtti.o): Add dependency.
5511         * config-lang.in (gtfiles): Add cp/rtti.c.
5512         * cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
5513         CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
5514         CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
5515         CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
5516         CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
5517         (ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
5518         ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
5519         class_desc_type_node, si_class_desc_type_node,
5520         vmi_class_desc_type_node, ptm_desc_type_node,
5521         base_desc_type_node): Remove.
5522         * decl.c: Adjust documentation of global trees.
5523         * rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
5524         TINFO_REAL_NAME): Remove.
5525         (struct tinfo_s): New.
5526         (enum tinfo_kind): New.
5527         (tinfo_descs): New.
5528         (get_tinfo_decl): Adjust use of tinfo descriptor.
5529         (tinfo_base_init, generic_initializer, ptr_initializer,
5530         ptm_initializer, class_initializer): Likewise.
5531         (get_pseudo_ti_init): Take descriptor index. Adjust.
5532         (create_pseudo_type_info): Likewise.
5533         (get_pseudo_ti_desc): Return descriptor index. Adjust.
5534         (create_tinfo_types): Adjust use of create_pseudo_type_info.
5535         (emit_tinfo_decl): Adjust use of tinfo descriptor.
5537 2005-06-14  Roger Sayle  <roger@eyesopen.com>
5539         * decl.c (grokdeclarator): Only check TREE_OVERFLOW on INTEGER_CST.
5541 2005-06-13  Geoffrey Keating  <geoffk@apple.com>
5543         * Make-lang.in (c++.install-man): Doesn't really depend on installdirs.
5544         (rule for installing g++.1 manpage): Does depend on installdirs.
5546 2005-06-13  Nathan Sidwell  <nathan@codesourcery.com>
5548         PR c++/20789
5549         * decl.c (cp_finish_decl): Clear runtime runtime initialization if
5550         in-class decl's initializer is bad.
5552         PR c++/21929
5553         * parser.c (struct cp_parser): Document that scope could be
5554         error_mark.
5555         (cp_parser_diagnose_invalid_type_name): Cope with error_mark for
5556         scope.
5557         (cp_parser_nested_name_specifier): Return NULL_TREE on error.
5558         (cp_parser_postfix_expression): Deal with null or error_mark
5559         scope.
5560         (cp_parser_elaborated_type_specifier): Adjust
5561         cp_parser_nested_name_specifier call.
5563         * parser (cp_parser_skip_to_end_of_block_or_statement): Cleanup.
5565 2005-06-12  Roger Sayle  <roger@eyesopen.com>
5567         PR c++/21930
5568         * error.c (dump_expr): UNARY_PLUS_EXPR need not handle void types.
5569         Treat CONVERT_EXPR identically to NOP_EXPR.
5571 2005-06-10  Aldy Hernandez  <aldyh@redhat.com>
5573         PR c++/10611
5574         * cvt.c (build_expr_type_conversion): Same.
5575         * typeck.c (build_binary_op): Handle vectors.
5576         (common_type): Same.
5577         (type_after_usual_arithmetic_conversions): Same.
5579 2005-06-08  Nathan Sidwell  <nathan@codesourcery.com>
5581         PR c++/19497
5582         * cp-tree.def (USING_DECL): Update documentation.
5583         * cp-tree.h (DECL_DEPENDENT_P): New.
5584         (USING_DECL_DECLS, USING_DECL_SCOPE): New.
5585         * class.c (handle_using_decl): Move most of the processing to ...
5586         * name-lookup.c (do_class_using_decl): ... here.  Make stricter.
5587         (push_using_decl): Use USING_DECL_SCOPE.
5588         (cp_emit_debug_info_for_using): Make extern.
5589         * cxx-pretty-print.c (pp_cxx_statement) <USING_DECL case>: Adjust.
5590         * name-lookup.h (cp_emit_debug_info_for_using): Declare.
5591         * pt.c (tsubst_decl) <USING_DECL case>: Use do_class_using_decl
5592         when tsubsting.
5593         (tsubst_expr): Use USING_DECL_SCOPE.
5594         * search.c (lookup_field_1): Use DECL_DEPENDENT_P.
5595         * semantics.c (finish_member_declaration): Likewise.
5597 2005-06-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5599         PR c++/19894
5600         * pt.c (tsubst): Reject pointer-to-member of type void.
5602         PR c++/20563
5603         * parser.c (cp_parser_label_declaration): Deal with invalid/missing
5604         identifiers.
5606 2005-06-07  Nathan Sidwell  <nathan@codesourcery.com>
5608         * cp-tree.def (DEFAULT_ARG): Adjust documentation.
5609         * cp-tree.h (DEFARG_INSTANTIATIONS): New.
5610         (struct tree_default_arg): Add instantiations member.
5611         * parser.c (cp_parser_late_parsing_default_args): Adjust to use a
5612         VEC.
5613         * pt.c (tsubst_arg_types): Likewise.
5615         * parser.c (cp_parser_late_parsing_default_args): Fix overeager
5616         assert in previous patch.
5618 2005-06-06  Jakub Jelinek  <jakub@redhat.com>
5620         * error.c (locate_error): Use gmsgid instead of msgid for argument
5621         name.
5622         (cp_error_at, cp_warning_at, cp_pedwarn_at): Likewise.
5624 2005-06-06  Nathan Sidwell  <nathan@codesourcery.com>
5626         PR 21903
5627         * cp-tree.def (DEFAULT_ARG): Document TREE_CHAIN use.
5628         * parser.c (cp_parser_late_parsing_default_args): Propagate parsed
5629         argument to any early instantiations.
5630         * pt.c (tsubst_arg_types): Chain early instantiation of default arg.
5632         PR c++/20637
5633         * cp-tree.h (add_method): Add using_decl parameter.
5634         * class.c (add_method): Add using_decl parameter.  Adjust error
5635         messages.
5636         (handle_using_decl): Pass the using decl to add_method.
5637         (clone_function_decl): Adjust add_member calls.
5638         * decl2.c (check_classfn): Likewise.
5639         * method.c (lazily_declare_fn): Likewise.
5640         * semantics.c (finish_member_declaration): Likewise.
5642         * method.c (synthesize_method): Use inform, not warning.
5644 2005-06-06  Hans-Peter Nilsson  <hp@axis.se>
5646         * config-lang.in (target_libs): Remove target-gperf.
5648 2005-06-05  Mark Mitchell  <mark@codesourcery.com>
5650         PR c++/21619
5651         * cp-tree.h (DECL_IS_BUILTIN_CONSTANT_P): New macro.
5652         * parser.c (cp_parser_postfix_expression): Allow non-constant
5653         expressions as arguments to __builtin_constant_p.
5654         * tree.c (builtin_valid_in_constant_expr_p): Use
5655         DECL_IS_BUILTIN_CONSTANT_P.
5657 2005-06-03  Mark Mitchell  <mark@codesourcery.com>
5659         PR c++/21853
5660         * typeck.c (casts_away_constness_r): Do not drop cv-qualifiers on
5661         the pointed-to type for a pointer-to-member.
5663         PR c++/21336
5664         * cp-tree.h (grok_op_properties): Remove friendp parameter.
5665         * decl.c (grokfndecl): Adjust call.
5666         (grok_op_properties): Determine the class of which the function is
5667         a member by looking at its DECL_CONTEXT, not current_class_type.
5668         * pt.c (tsubst_decl): Adjust call to grok_op_properties.
5670 2005-06-02  Nathan Sidwell  <nathan@codesourcery.com>
5672         * method.c (synthesize_method): Add addtional arg to warning call.
5674         PR c++/21280
5675         * Make-lang.in (method.o): Add diagnostic.h
5676         * decl.c (start_preparsed_function): Use decl's location for file
5677         info.
5678         * decl2.c (cp_finish_file): Set input_location before synthesizing
5679         a function.
5680         (mark_used): When deferring a synthesized function, save current
5681         location.  Do not set function's location when actually
5682         synthesizing it.
5683         * method.c: #include diagnostic.h.
5684         (synthesize_method): Set the functions source location.  Show
5685         needed location if errors are emitted.
5687         * decl.c (start_decl): Simplify specialization handling. Remove
5688         unneeded CLASSTYPE_TEMPLATE_INSTANTIATION check.
5689         * mangle.c (discriminator_for_local_entity): Use VEC_index.
5691         PR c++/20350
5692         * decl.c (duplicate_decls): Copy all of DECL_USE_TEMPLATE.
5694         PR c++/21151
5695         * name-lookup.c (pushtag): Push local class even in a template.
5697 2005-05-31  Nathan Sidwell  <nathan@codesourcery.com>
5699         PR c++/21165
5700         * init.c (integral_constant_value): Check the type of the
5701         initializer, not the decl.
5703 2005-05-30  Mark Mitchell  <mark@codesourcery.com>
5705         PR c++/21784
5706         * name-lookup.c (do_nonmember_using_decl): Ignore builtin
5707         functions, even when the used name is not a function.
5709 2005-05-30  Kazu Hirata  <kazu@cs.umass.edu>
5711         * operators.def, optimize.c: Update copyright.
5713 2005-05-28  Mark Mitchell  <mark@codesourcery.com>
5715         PR c++/21210
5716         * call.c (standard_conversion): Permit conversions to complex
5717         types if conversion to the corresponding scalar type would be
5718         permitted.
5720         PR c++/21340
5721         * method.c (implicitly_declare_fn): Clear processing_template_decl
5722         when generating implicit declaration.
5724 2005-05-27  Mark Mitchell  <mark@codesourcery.com>
5726         PR c++/21614
5727         * typeck.c (get_member_function_from_ptrfunc): Do not attempt
5728         conversions to base classes of incomplete types.
5730 2005-05-27  Ian Lance Taylor  <ian@airs.com>
5732         * semantics.c (add_stmt): Add C++ frontend specific version.
5733         * cp-tree.h (STMT_IS_FULL_EXPR_P): Define.
5734         (stmts_are_full_exprs_p): Declare.
5736 2005-05-27  Roger Sayle  <roger@eyesopen.com>
5737             Giovanni Bajo  <giovannibajo@gcc.gnu.org>
5739         * cp-tree.def (UNARY_PLUS_EXPR): New C++ unary tree code.
5740         * parser.c (cp_parser_unary_expression): Use UNARY_PLUS_EXPR instead
5741         of CONVERT_EXPR.
5742         (cp_parser_unary_expression): Likewise.
5743         * typeck.c (build_unary_op): Likewise.
5744         * call.c (add_builtin_candidate, build_new_op): Likewise.
5745         * error.c (dump_expr): Likewise.
5746         * pt.c (tsubst_copy, tsubst_copy_and_build): Likewise.
5747         * decl.c (ambi_op_p, grok_op_properties): Likewise.
5748         * dump.c (dump_op): Likewise.
5749         * lex.c (init_operators): Likewise.
5750         * operators.def ("+"): Likewise.
5751         * cp-gimplify.c (cp_gimplify_expr): Handle UNARY_PLUS_EXPR like a
5752         conversion, if the result and argument types differ.
5753         * tree.c (fold_if_not_in_template): Fold UNARY_PLUS_EXPR much
5754         like a NOP_EXPR when !processing_template_decl.
5756         * cxx-pretty-print.c (pp_cxx_cast_expression): Prototype.
5757         (pp_cxx_unary_expression): Handle new UNARY_PLUS_EXPR tree code.
5759 2005-05-27  Nathan Sidwell  <nathan@codesourcery.com>
5761         PR c++/21455
5762         * typeck.c (get_delta_difference): Cope with incomplete but equal
5763         classes.  Reorder if.
5765         PR c++/21681
5766         * parser.c (cp_parser_late_parsing_for_member): Disable access
5767         checking for template functions.
5769 2005-05-26  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5771         PR c++/21768
5772         * pt.c (redeclare_class_template): Change error message according
5773         to coding conventions.
5775 2005-05-26  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5777         * call.c (build_op_delete_call): Fix quoting in error message.
5779 2005-05-25  Richard Henderson  <rth@redhat.com>
5781         PR libgcj/21692
5782         * cp-tree.h (make_alias_for): Declare.
5783         * decl2.c (build_java_method_aliases): New.
5784         (cp_finish_file): Call it.
5785         * method.c (make_alias_for): Split out from ...
5786         (make_alias_for_thunk): ... here.
5788 2005-05-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5790         PR c++/21686
5791         * semantics.c (finish_id_expression): Fix quoting in error message.
5793 2005-05-25  DJ Delorie  <dj@redhat.com>
5795         * decl.c (duplicate_decls): Move warning control from if() to
5796         warning(OPT_*).
5797         * name-lookup.c (parse_using_directive): Likewise.
5798         * parser.c (cp_parser_elaborated_type_specifier): Likewise.
5799         (cp_parser_init_declarator): Likewise.
5800         * tree.c (handle_com_interface_attribute): Likewise.
5802 2005-05-24  Ziemowit Laski  <zlaski@apple.com>
5804         * class.c (layout_class_type): Do not issue C++ ABI warnings
5805         for ObjC structs.
5806         * decl.c (objc_mark_locals_volatile): Streamline by calling
5807         objc_volatilize_decl().
5808         * parser.c (cp_parser_objc_message_expression): Allow simple
5809         type specifiers (instead of merely type names) as message
5810         receivers.
5811         * pt.c (template_args_equal): Do not call objc_comptypes().
5812         * typeck.c (composite_pointer_type): If both pointers are
5813         ObjC-esque, arbitrarily choose the first; do not call
5814         objc_comptypes().
5815         (comptypes): Do not call objc_comptypes().
5816         (convert_for_assignment): Call objc_compare_types().
5817         (comp_ptr_ttypes_real): Call objc_type_quals_match() before
5818         concluding that types do not match.
5820 2005-05-24  Andrew Pinski  <pinskia@physics.uc.edu>
5822         PR C++/21645
5823         * optimize.c (update_cloned_parm): Copy the TYPE also from the
5824         original one.
5826 2005-05-19  Jakub Jelinek  <jakub@redhat.com>
5828         PR c++/21495
5829         * decl.c (grokdeclarator): Fix "storage class specified for"
5830         error reporting.
5832 2005-05-19  Kazu Hirata  <kazu@cs.umass.edu>
5834         * parser.c: Fix comment typos.
5836 2005-05-18  Geoffrey Keating  <geoffk@apple.com>
5838         * Make-lang.in (cc1plus-dummy): New.
5839         (cc1plus-checksum.c): New.
5840         (cc1plus-checksum.o): New.
5841         (cc1plus): Add cc1plus-checksum.o.
5843 2005-05-17  H.J. Lu  <hongjiu.lu@intel.com>
5845         PR C++/19664
5846         * decl2.c (determine_visibility): Don't set visibility to
5847         hidden if it has been set explicitly by user.
5849 2005-05-17  Ziemowit Laski  <zlaski@apple.com>
5850             Mike Stump  <mrs@apple.com>
5852         Yet more Objective-C++...
5854         * cp-objcp-common.h (cxx_get_alias_set): Move from
5855         here...
5856         (cxx_warn_unused_global_decl): Likewise.
5857         (cp_expr_size): Likewise.
5858         (cp_tree_size): Likewise.
5859         (cp_var_mod_type_p): Likewise.
5860         (cxx_initialize_diagnostics): Likewise.
5861         (cxx_types_compatible_p): Likewise.
5862         * cp-tree.h: to here.
5863         (do_poplevel): Add.
5864         * lex.c (D_OBJC): Add.
5865         (init_reswords): Add.
5866         * Make-lang.in (cp/pt.o): Add cp/cp-objcp-common.h.
5867         * parser.c: Add c-common.h include.
5868         * pt.c: Add c-common.h and cp-objcp-common.h includes.
5869         (template_args_equal): Use objc_comptypes as well.
5870         (tsubst_copy_and_build): Use objcp_tsubst_copy_and_build as well.
5871         * semantics.c (do_poplevel): Remove static.
5873         * decl.c (objc_mark_locals_volatile): Don't change decls that are
5874         already ok.
5875         * decl2.c (generate_ctor_or_dtor_function): Add code to initialize
5876         Objective C++ early enough.
5877         * lex.c (struct resword reswords): Add Objective-C++ support.
5878         * parser.c (cp_lexer_get_preprocessor_token): Add Objective-C++.
5879         (cp_parser_objc_message_receiver): Add.
5880         (cp_parser_objc_message_args): Likewise.
5881         (cp_parser_objc_message_expression): Likewise.
5882         (cp_parser_objc_encode_expression): Likewise.
5883         (cp_parser_objc_defs_expression): Likewise.
5884         (cp_parser_objc_protocol_expression): Likewise.
5885         (cp_parser_objc_selector_expression): Likewise.
5886         (cp_parser_objc_expression): Likewise.
5887         (cp_parser_objc_visibility_spec): Likewise.
5888         (cp_parser_objc_method_type): Likewise.
5889         (cp_parser_objc_protocol_qualifiers): Likewise.
5890         (cp_parser_objc_typename): Likewise.
5891         (cp_parser_objc_selector_p): Likewise.
5892         (cp_parser_objc_selector): Likewise.
5893         (cp_parser_objc_method_keyword_params): Likewise.
5894         (cp_parser_objc_method_tail_params_opt): Likewise.
5895         (cp_parser_objc_interstitial_code): Likewise.
5896         (cp_parser_objc_method_signature): Likewise.
5897         (cp_parser_objc_method_prototype_list): Likewise.
5898         (cp_parser_objc_method_definition_list): Likewise.
5899         (cp_parser_objc_class_ivars): Likewise.
5900         (cp_parser_objc_identifier_list): Likewise.
5901         (cp_parser_objc_alias_declaration): Likewise.
5902         (cp_parser_objc_class_declaration): Likewise.
5903         (cp_parser_objc_protocol_declaration): Likewise.
5904         (cp_parser_objc_protocol_refs_opt): Likewise.
5905         (cp_parser_objc_superclass_or_category): Likewise.
5906         (cp_parser_objc_class_interface): Likewise.
5907         (cp_parser_objc_class_implementation): Likewise.
5908         (cp_parser_objc_end_implementation): Likewise.
5909         (cp_parser_objc_declaration): Likewise.
5910         (cp_parser_objc_try_catch_finally_statement): Likewise.
5911         (cp_parser_objc_synchronized_statement): Likewise.
5912         (cp_parser_objc_throw_statement): Likewise.
5913         (cp_parser_objc_statement): Likewise.
5914         (cp_parser_primary_expression): Add Objective-C++.
5915         (cp_parser_statement): Likewise.
5916         (cp_parser_declaration): Likewise.
5917         (cp_parser_simple_type_specifier): Likewise.
5918         (cp_parser_type_name): Likewise.
5919         (cp_parser_parameter_declaration_list): Likewise.
5920         (cp_parser_member_declaration) Likewise.
5921         * tree.c: Include debug.h.
5922         * typeck.c (composite_pointer_type): Add Objective-C++ support.
5923         (finish_class_member_access_expr): Likewise.
5924         (build_function_call): Allow objc to rewrite FUNCTION_DECLs.
5925         (build_modify_expr): Allow objc to generate write barriers.
5927         * Make-lang.in (cp/tree.o): Add debug.h.
5928         * tree.c (lvalue_p_1, case CONST_DECL): Add.
5930 2005-05-18  Jan Hubicka  <jh@suse.cz>
5932         * method.c: Include tree-pass.h
5933         (use_thunk): Lower body before expanding.
5935 2005-05-17  Jakub Jelinek  <jakub@redhat.com>
5937         PR c++/21454
5938         * decl.c (maybe_deduce_size_from_array_init): Call
5939         cp_apply_type_quals_to_decl after completing array type.
5941 2005-05-16  Richard Henderson  <rth@redhat.com>
5943         * decl.c (build_library_fn_1): Move setting TREE_NOTHROW ...
5944         (build_library_fn): ... here.
5946 2005-05-12  Ian Lance Taylor  <ian@airs.com>
5948         * cp-tree.h (cp_stmt_codes): Don't define.
5949         (statement_code_p): Declare.
5950         (STATEMENT_CODE_P): Define.
5951         * lex.c (statement_code_p): Define.
5952         (cxx_init): Use actual codes in stmt_codes initializer, not
5953         cp_stmt_codes macro.  Initialize statement_code_p directly, rather
5954         than using INIT_STATEMENT_CODES.
5956 2005-05-09  Mark Mitchell  <mark@codesourcery.com>
5958         * typeck.c (build_unary_op): Do not resort to address arithmetic
5959         when taking the address of a COMPONENT_REF.
5961 2005-05-08  Kazu Hirata  <kazu@cs.umass.edu>
5963         * class.c (vtbl_init_data_s): Change the type of fns to
5964         VEC(tree,gc)*.
5965         (build_vtbl_initializer, add_vcall_offset, add_vcall_offset):
5966         Use VEC instead of VARRAY.
5968 2005-05-07  Richard Sandiford  <rsandifo@redhat.com>
5970         * mangle.c: Remove a reference to the MIPS -mint64 option.
5972 2005-05-07  Kazu Hirata  <kazu@cs.umass.edu>
5974         * decl.c (wrapup_globals_for_namespace): Use VEC instead of
5975         VARRAY.
5976         * name-lookup.c (add_decl_to_level, begin_scope): Likewise.
5977         * name-lookup.h (cp_binding_level): Change the type of
5978         static_decls to VEC(tree,gc)*.
5980         * mangle.c (globals): Change the type of substitutions to
5981         VEC(tree,gc)*.
5982         (dump_substitution_candidates, add_substitution,
5983         find_substitution, finish_mangling, init_mangle): Use VEC
5984         instead of VARRAY.
5986 2005-05-06  Kazu Hirata  <kazu@cs.umass.edu>
5988         * decl2.c (spew_debug): Remove.
5990         * decl2.c (ssdf_decls, start_static_storage_duration_function,
5991         generate_ctor_or_dtor_function): Use VEC instead of VARRAY.
5993         * decl2.c (pending_statics, note_vague_linkage_var,
5994         cp_finish_file): Use VEC instead of VARRAY.
5995         (pending_statics_used): Remove.
5997 2005-05-05  Kazu Hirata  <kazu@cs.umass.edu>
5999         * decl2.c (deferred_fns, note_vague_linkage_fn,
6000         cp_finish_file): Use VEC instead of VARRAY.
6002 2005-05-05  Mark Mitchell  <mark@codesourcery.com>
6004         PR c++/21352
6005         * pt.c (build_non_dependent_expr): Use is_overloaded_fn.
6007 2005-05-05  Kazu Hirata  <kazu@cs.umass.edu>
6009         * pt.c: Fix a comment typo.
6011 2005-05-04  Kazu Hirata  <kazu@cs.umass.edu>
6013         * cp-tree.h (language_function): Change the type of
6014         x_local_names to VEC.
6015         * decl.c (push_local_name): Adjust uses of local_names.
6017 2005-05-03  Kazu Hirata  <kazu@cs.umass.edu>
6019         * friend.c, lex.c, mangle.c, repo.c: Update copyright.
6021 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
6023         * class.c (local_classes, init_class_processing): Use VEC
6024         instead of VARRAY.
6025         * cp-tree.h (local_classes): Likewise.
6026         * mangle.c (discriminator_for_local_entity): Likewise.
6027         * name-lookup.c (pushtag): Likewise.
6029         * class.c (current_lang_depth, push_lang_context,
6030         pop_lang_context): Use VEC instead of VARRAY.
6031         * cp-tree.h (saved_scope): Use VEC for lang_base instead of
6032         VARRAY.
6033         * name-lookup.c (push_to_top_level): Use VEC instead of
6034         VARRAY.
6036 2005-05-02  Paolo Bonzini  <bonzini@gnu.org>
6038         * semantics.c (finish_call_expr): Call resolve_overloaded_builtin
6039         for BUILT_IN_MD built-ins.
6041 2005-05-02  Michael Matz  <matz@suse.de>
6043         PR c++/19542
6044         * cp-tree.h (cp_tree_index): Remove CPTI_NULL, to be defined in C
6045         common frontend.
6046         (null_node): Remove.
6047         * lex.c (cxx_init): Move null_node initialisation to C common frontend.
6049 2005-04-25  Ian Lance Taylor  <ian@airs.com>
6051         * cp-tree.def: Add EXPR_STMT.
6052         * cp-tree.h (cp_stmt_codes): Add EXPR_STMT.
6053         (EXPR_STMT_EXPR): Define.
6054         * cp-gimplify.c: Include "flags.h".
6055         (gimplify_expr_stmt): New static function.
6056         (cp_gimplify_expr): Handle EXPR_STMT.
6057         * cxx-pretty-print.c (pp_cxx_statement): Use pp_cxx_expression
6058         rather than pp_expression.
6059         (pp_cxx_statement): Handle EXPR_STMT.
6060         * dump.c (cp_dump_tree): Handle EXPR_STMT.
6061         * lex.c (cxx_init): Don't use c_common_stmt_codes in stmt_codes
6062         initializer.
6064 2005-04-25  Andrew Pinski  <pinskia@physics.uc.edu>
6066         PR C++/21188
6067         * rtti.c (ifnonnull): Cast the zero comparison operand
6068         to the correct type.
6070 2005-04-24  Jakub Jelinek  <jakub@redhat.com>
6072         PR middle-end/20991
6073         * class.c: Include cgraph.h.
6074         (cp_fold_obj_type_ref): Set node->local.vtable_method.
6075         * Make-lang.in (cgraph.o): Depend on $(CGRAPH_H).
6077 2005-04-12  Markus F.X.J. Oberhumer  <markus@oberhumer.com>
6079         * mangle.c (write_builtin_type): Handle integer types which are
6080         not one of the shared integer type nodes and emit a "vendor
6081         extended builtin type" with an encoding in the form of "u5int96".
6083 2005-04-24  Ian Lance Taylor  <ian@airs.com>
6085         * cp-tree.def (USING_STMT): Change class to tcc_statement.
6086         (TRY_BLOCK, EH_SPEC_BLOCK, HANDLER, CLEANUP_STMT): Likewise.
6087         (IF_STMT, FOR_STMT, WHILE_STMT, DO_STMT): Likewise.
6088         (BREAK_STMT, CONTINUE_STMT, SWITCH_STMT): Likewise.
6090 2005-04-23  DJ Delorie  <dj@redhat.com>
6092         * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, friend.c,
6093         init.c, lex.c, mangle.c, method.c, name-lookup.c, parser.c,
6094         repo.c, rtti.c, tree.c, typeck.c, typeck2.c: Adjust warning()
6095         callers.
6097 2005-04-22  Per Bothner  <per@bothner.com>
6099         * decl.c (make_rtl_for_nonlocal_decl): Don't try get_fileinfo if
6100         input_filename is NULL, as it is for (say) __PRETTY_FUNCTION__.
6102 2005-04-22  Alexandre Oliva  <aoliva@redhat.com>
6104         PR c++/21087
6105         * name-lookup.c (push_overloaded_decl): Do not overload with
6106         non-duplicate anticipated built-in.
6108 2005-04-21  Kazu Hirata  <kazu@cs.umass.edu>
6110         * cp-tree.h (THROW_NAME, AUTO_VTABLE_NAME, AUTO_TEMP_FORMAT,
6111         VTABLE_BASE, VTABLE_NAME_PREFIX, STATIC_NAME_FORMAT): Remove.
6113 2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>
6115         * cp-tree.h: Adjust for new VEC API.
6116         Define VEC(tree_pair_s,gc).
6117         (struct save_scope): Adjust.
6118         (struct lang_type_class): Adjust.
6119         (unemitted_tinfo_decls): Adjust.
6120         * class.c (add_method, resort_type_method_vec,
6121         finish_struct_methods, struct find_final_overrider_data,
6122         dfs_find_final_overrider_pre, find_final_overrider,
6123         get_vcall_index, warn_hidden, walk_subobject_offsets,
6124         check_methods, fixup_inline_methods, end_of_class,
6125         warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer,
6126         add_vcall_offset): Adjust.
6127         * decl.c (xref_basetypes, finish_method): Adjust.
6128         * decl2.c (check_classfn): Adjust.
6129         * init.c (sort_mem_initializers, push_base_cleanups): Adjust.
6130         * method.c (do_build_copy_constructor): Adjust.
6131         * name-lookup.c (new_class_binding, store_binding,
6132         store_bindings, store_class_bindings): Adjust.
6133         * name-lookup.h: Define VEC(cxx_saved_binding,gc),
6134         VEC(cp_class_binding,gc).
6135         (struct cp_binding_level): Adjust.
6136         * parser.c: Define VEC(cp_token_position,heap).
6137         (struct cp_lexer): Adjust.
6138         (cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy,
6139         cp_lexer_save_tokens): Adjust.
6140         * pt.c (retrieve_specialization,
6141         check_explicit_specialization): Adjust.
6142         * rtti.c (unemitted_tinfo_decls): Adjust.
6143         (init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init,
6144         get_pseudo_ti_desc): Adjust.
6145         * search.c (dfs_access_in_type, lookup_conversion_operator,
6146         lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible,
6147         dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust.
6148         * semantics.c: Define VEC(deferred_access,gc).
6149         (push_deferring_access_checks): Adjust.
6150         * typeck2.c (abstract_virtuals_error): Adjust.
6152 2005-04-20  Ian Lance Taylor  <ian@airs.com>
6154         * cp-tree.def: Add STMT_EXPR.
6155         * cp-tree.h (STMT_EXPR_NO_SCOPE): Define.
6156         (STMT_EXPR_STMT): Define.
6157         * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
6158         STMT_EXPR.
6159         (pp_cxx_expression): Likewise.
6160         (pp_cxx_statement): Call pp_cxx_statement, not pp_statement.
6161         * dump.c (cp_dump_tree): Handle STMT_EXPR.
6163 2005-04-18  Kazu Hirata  <kazu@cs.umass.edu>
6165         * decl.c (expand_static_init): Call build2 and build3 instead
6166         of build.
6168         * cp-tree.h (VPTR_NAME, VPTR_NAME_P): Remove.
6170 2005-04-17  Ian Lance Taylor  <ian@airs.com>
6172         * cp-tree.def: Add SIZEOF_EXPR, ARROW_EXPR and ALIGNOF_EXPR.
6173         * cxx-pretty-print.c (pp_cxx_postfix_expression): Handle
6174         ARROW_EXPR.
6175         (pp_cxx_unary_expression): Handle SIZEOF_EXPR and ALIGNOF_EXPR.
6176         (pp_cxx_expression): Handle ARROW_EXPR, SIZEOF_EXPR, and
6177         ALIGNOF_EXPR.
6178         * typeck.c (cxx_sizeof_or_alignof_type): Update call to
6179         c_sizeof_or_alignof_type for change in parameter type.
6181 2005-04-16  Mark Mitchell  <mark@codesourcery.com>
6183         PR c++/21025
6184         * typeck.c (cxx_sizeof_or_alignof_type): Check whether the type to
6185         which sizeof/alignof is dependent, rather than just whether we are
6186         processing_template_decl.
6188 2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>
6190         * cp-tree.h (LOOKUP_GLOBAL): Remove.
6191         (LOOKUP_ONLYCONVERTING, DIRECT_BIND, LOOKUP_NO_CONVERSION,
6192         LOOKUP_DESTRUCTOR, LOOKUP_NO_TEMP_BIND, LOOKUP_PREFER_TYPES,
6193         LOOKUP_PREFER_NAMESPACES, LOOKUP_CONSTRUCTOR_CALLABLE): Adjust
6194         their values.
6196 2005-04-15  Richard Henderson  <rth@redhat.com>
6198         PR middle-end/14311
6199         * semantics.c (finish_call_expr): Call resolve_overloaded_builtin.
6201 2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>
6203         * cp-tree.h (lang_type_class): Remove redefined.  Move
6204         java_interface into where redefined was.  Increment the width
6205         of dummy.
6206         (TYPE_REDEFINED): Remove.
6208 2005-04-14  Kazu Hirata  <kazu@cs.umass.edu>
6210         * cp-tree.h (SET_TMPL_ARG, ENUM_TI_TEMPLATE, ENUM_TI_ARGS,
6211         CLASSTYPE_TEMPLATE_LEVEL): Remove.
6213 2005-04-11  Mark Mitchell  <mark@codesourcery.com>
6215         * decl2.c (determine_visibility): Don't use export_class_data.
6216         (import_export_decl): Honor TARGET_CXX_CLASS_DATA_ALWAYS_WEAK and
6217         TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY.
6219 2005-04-09  Kazu Hirata  <kazu@cs.umass.edu>
6221         * cp-tree.h (cxx_alignof): Remove.
6223         * cp-tree.h (DECL_ARRAY_DELETE_OPERATOR_P): Remove.
6225         * cp-tree.h (EXCEPTION_CLEANUP_NAME, B_SET, B_CLR, B_TST,
6226         CONV_STATIC_CAST): Remove.
6228         * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Remove.
6230         * cp-tree.h (VF_BINFO_VALUE, VF_BASETYPE_VALUE): Remove.
6232         * cp-tree.h (cp_deprecated): Remove.
6234 2005-04-08  Ian Lance Taylor  <ian@airs.com>
6236         * cp-tree.def: Define FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT,
6237         CONTINUE_STMT, SWITCH_STMT.
6238         * cp-tree.h (cp_stmt_codes): Add FOR_STMT, WHILE_STMT, DO_STMT,
6239         BREAK_STMT, CONTINUE_STMT, SWITCH_STMT.
6240         (WHILE_COND, WHILE_BODY): Define.
6241         (DO_COND, DO_BODY): Define.
6242         (FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY): Define.
6243         (SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE): Define.
6244         * cp-gimplify.c (enum bc_t): Define.
6245         (struct cp_gimplify_ctx, ctxp): Define.
6246         (push_context, pop_context): New static functions.
6247         (begin_bc_block, finish_bc_block): New static functions.
6248         (build_bc_goto): New static function.
6249         (gimplify_cp_loop, gimplify_for_stmt): New static functions.
6250         (gimplify_while_stmt, gimplify_do_stmt): Likewise.
6251         (gimplify_switch_stmt): Likewise.
6252         (cp_gimplify_expr): Handle FOR_STMT, WHILE_STMT, DO_STMT,
6253         SWITCH_STMT, CONTINUE_STMT, BREAK_STMT.
6254         (cp_genericize): Call push_context and pop_context.
6255         * semantics.c (finish_break_stmt): Just call build_stmt
6256         (BREAK_STMT) rather than build_break_stmt.
6257         (finish_continue_stmt): Corresponding change.
6258         * decl.c (pop_switch): Update call to c_do_switch_warnings for new
6259         parameters.
6260         * cxx-pretty-print.c (pp_cxx_statement): Handle SWITCH_STMT,
6261         WHILE_STMT, DO_STMT, FOR_STMT, BREAK_STMT, CONTINUE_STMT.
6262         * dump.c (cp_dump_tree): Likewise.
6264 2005-04-08  Mark Mitchell  <mark@codesourcery.com>
6266         PR c++/20905
6267         * parser.c (cp_parser_type_specifier_seq): Add is_condition
6268         parameter.
6269         (cp_parser_new_type_id): Pass it.
6270         (cp_parser_condition): Likewise.
6271         (cp_parser_conversion_type_id): Likewise.
6272         (cp_parser_type_id): Likewise.
6273         (cp_parser_type_specifier_seq): In a condition, do not allow
6274         invalid type-specifier combinations.
6275         (cp_parser_exception_declaration): Adjust call to
6276         cp_parser_type_specifier_seq.
6278         * cp-tree.def (TINST_LEVEL): Document TINST_IN_SYSTEM_HEADER_P.
6279         * cp-tree.h (struct tinst_level): Add in_system_header_p.
6280         (TINST_IN_SYSTEM_HEADER_P): New macro.
6281         (make_tinst_level): Remove.
6282         * pt.c (lookup_template_class): Preserve DECL_IN_SYSTEM_HEADER on
6283         the instantiated class.
6284         (push_tinst_level): Do not use make_tinst_level.  Set
6285         TINST_IN_SYSTEM_HEADER_P.
6286         (pop_tinst_level): Likewise.
6287         (instantiate_class_template): Set in_system_header.
6288         (instantiate_pending_templates): Likewise.
6289         * tree.c (make_tinst_level): Remove.
6291 2005-04-06  Joseph S. Myers  <joseph@codesourcery.com>
6293         * decl.c (start_decl): Apply pending #pragma weak regardless of
6294         scope.
6296 2005-04-06  Mark Mitchell  <mark@codesourcery.com>
6298         PR c++/20212
6299         * pt.c (regenerate_decl_from_template): Copy attributes for
6300         parameters from the pattern to the instantiation.
6302 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
6304         PR c++/20734
6305         * cp-tree.def (OFFSET_REF): Correct comments.
6306         * init.c (build_offset_ref): Remove misleading comment.
6307         * typeck.c (build_unary_op): Handle pointer-to-member creation
6308         here, rather than ...
6309         (unary_complex_lvalue): ... here.
6311 2005-04-06  Jason Merrill  <jason@redhat.com>
6313         PR c++/19312
6314         * tree.c (stabilize_init): Don't bother trying to stabilize
6315         something with no side-effects.
6317 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
6319         PR c++/20763
6320         * decl.c (grokdeclarator): Correct attribute handling.
6322 2005-04-05  Mark Mitchell  <mark@codesourcery.com>
6324         PR c++/19159
6325         * decl2.c (import_export_decl): Use non-COMDAT external linkage
6326         for virtual tables, typeinfo, etc. that will be emitted in only
6327         one translation unit on systems without weak symbols.
6329 2005-04-04  Mark Mitchell  <mark@codesourcery.com>
6331         PR c++/20679
6332         * parser.c (cp_parser_template_name): Fix thinko.
6334 2005-04-04  Nathan Sidwell  <nathan@codesourcery.com>
6336         PR c++/20746
6337         * method.c (use_thunk): Protect covariant pointer return
6338         adjustments from NULL pointers.
6340 2005-04-04  Jan Hubicka  <jh@suse.cz>
6342         * decl2.c (finish_objects): Revert my previous patch.
6343         (cp_finish_file): Likewise.
6345 2005-04-03  Kazu Hirata  <kazu@cs.umass.edu>
6347         * pt.c: Fix comment typos.
6349 2005-04-03  Nathan Sidwell  <nathan@codesourcery.com>
6351         PR c++/20723
6352         * pt.c (more_specialized_fn): Member functions are unordered wrt
6353         non-members.  Conversion operators are unordered wrt other
6354         functions.
6356 2005-04-01  Nathan Sidwell  <nathan@codesourcery.com>
6358         * call.c (add_template_candidates_real): Remove length parameter
6359         from fn_type_unification call.
6360         * class.c (resolve_address_of_overloaded_function): Likewise
6361         * cp-tree.h (fn_type_unification): Remove length parameter.
6362         * pt.c (get_bindings_overload): Remove.
6363         (get_bindings_real): Rename to ...
6364         (get_bindings): ... here.  Remove length and strict
6365         parameters. Change return type flag to boolean.  Remove original
6366         forwarding function.
6367         (determine_specialization): Adjust get_bindings call.
6368         (fn_type_unification): Remove length parameter.  Adjust.
6369         (type_unification_real): Remove length parameter.  Adjust.
6370         (resolve_overloaded_unification): Adjust get_bindings call.
6371         (try_one_overload): Simplify confusing cascaded if control flow.
6372         (unify): Remove length paramter from type_unification_real call.
6373         (most_specialized_instantiation): Adjust get_bindings calls.
6374         (most_specialized): Likewise.
6376 2005-03-31  Nathan Sidwell  <nathan@codesourcery.com>
6378         PR c++/19203, implement DR 214
6379         * call.c (joust): Use more_specialized_fn.
6380         * cp-tree.h (DEDUCE_ORDER): Remove.
6381         (more_specialized): Replace with ...
6382         (more_specialized_fn): ... this.
6383         * pt.c (maybe_adjust_types_for_deduction): Remove DEDUCE_ORDER
6384         case.
6385         (type_unification_real): Remove DEDUCE_ORDER case.
6386         (more_specialized): Replace with ...
6387         (more_specialized_fn): ... this.  Implement DR 214.
6388         (most_specialized_instantiation): Use get_bindings_real directly.
6390 2005-03-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>
6392         PR c++/18644
6393         * call.c (build_new_op): Remove check for -Wsynth.
6395 2005-03-31  Jan Hubicka  <jh@suse.cz>
6397         * decl2.c (finish_objects): Mark ctor as needed.
6398         (cp_finish_file): Output variables only in nonunit-at-a-time.
6400 2005-03-29  Richard Henderson  <rth@redhat.com>
6402         PR c/20519
6403         * decl.c (cp_complete_array_type): Rename from complete_array_type.
6404         Use the new complete_array_type in c-common.c.  Update all callers.
6405         * cp-tree.h (cp_complete_array_type): Update to match.
6407 2005-03-24  Geoffrey Keating  <geoffk@apple.com>
6409         * typeck.c (build_static_cast_1): Allow scalar_cast between
6410         any integral, floating, or enumeration type.
6412 2005-03-24  Steven Bosscher  <stevenb@suse.de>
6414         * typeck.c (comptypes): First determine if the types are compatible
6415         from a target-independent point of view.  Check target attributes
6416         last.
6418         * class.c (build_base_path):
6419         (build_vbase_offset_vtbl_entries):
6420         (add_vcall_offset): Replace fold (buildN (...)) with fold_buildN.
6421         * error.c (dump_expr): Likewise.
6422         * init.c (build_zero_init, expand_cleanup_for_base,
6423         build_vec_delete_1): Likewise.
6424         * mangle.c (write_integer_cst): Likewise.
6425         * method.c (thunk_adjust): Likewise.
6426         * pt.c (convert_nontype_argument, tsubst, unify): Likewise.
6427         * tree.c (cxx_print_statistics, array_type_nelts_total): Likewise.
6428         * typeck.c (build_ptrmemfunc_access_expr,
6429         (get_member_function_from_ptrfunc): Likewise.
6431 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
6433         * cp-objcp-common.h (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.
6435 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
6437         * cp-tree.h (perform_integral_promotions): Remove.
6438         (default_conversion): Add.
6440 2005-03-22  Mark Mitchell  <mark@codesourcery.com>
6442         * parser.c (cp_parser_warn_min_max): New function.
6443         (cp_parser_binary_expression): Use it.
6444         (cp_parser_assignment_operator_opt): Likewise.
6445         (cp_parser_operator): Likewise.
6447 2005-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6449         PR c++/19980
6450         * decl.c (start_preparsed_function): Robustify.
6452 2005-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6454         PR c++/20499
6455         * parser.c (cp_parser_class_head): Return NULL_TREE when
6456         encountering a redefinition.
6458 2005-03-22  Nathan Sidwell  <nathan@codesourcery.com>
6460         PR c++/20465
6461         PR c++/20381
6462         * typeck.c (build_ptrmemfunc): Allow OFFSET_REF when processing a
6463         template.
6465 2005-03-21  Paolo Carlini  <pcarlini@suse.de>
6467         PR c++/20461
6468         PR c++/20536
6469         * init.c (emit_mem_initializers): Don't crash on undefined
6470         types.
6472 2005-03-21  Paolo Carlini  <pcarlini@suse.de>
6474         PR c++/20147
6475         * semantics.c (finish_stmt_expr_expr): Return immediately
6476         if error_operand_p (expr).
6478 2005-03-21  Joseph S. Myers  <joseph@codesourcery.com>
6480         * cp-tree.h (lvalue_or_else, lvalue_p): New.
6481         * typeck.c (lvalue_or_else): New.  Call lvalue_error.
6483 2005-03-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6485         PR c++/20240
6486         * decl.c (decls_match): Compare context of VAR_DECL.
6488 2005-03-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6490         PR c++/20333
6491         * parser.c (cp_parser_postfix_expression) <case RID_TYPENAME>:
6492         Check the return value of cp_parser_nested_name_specifier.
6494 2005-03-18  Dale Johannesen <dalej@apple.com>
6496         * cp/tree.c (cp_tree_equal):  Handle SSA_NAME.
6498 2005-03-18  Paolo Carlini  <pcarlini@suse.de>
6500         PR c++/20463
6501         * parser.c (cp_parser_diagnose_invalid_type_name):
6502         Check TYPE_BINFO (current_class_type) before attempting
6503         to emit inform messages.
6505 2005-03-17  Paolo Carlini  <pcarlini@suse.de>
6507         PR c++/19966
6508         * cp-tree.h (grok_op_properties): Change return type to void.
6509         * decl.c (grok_op_properties): Return early - don't check the
6510         arity - in case of a static member or an operator that cannot
6511         be non-member; tidy a bit.
6513 2005-03-17  Nathan Sidwell  <nathan@codesourcery.com>
6515         PR c++/20186
6516         * pt.c (contains_dependent_cast_p): Remove.
6517         (fold_non_dependent_expr): Don't use it.
6518         (value_dependent_expression_p): Use a switch statement.
6519         reference_exprs can be dependent.
6521 2005-03-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6523         PR c++/4403
6524         PR c++/9783, DR433
6525         * name-lookup.c (pushtag): Skip template parameter scope when
6526         scope is ts_global.  Don't push tag into template parameter
6527         scope.
6528         * pt.c (instantiate_class_template): Reorder friend class
6529         template substitution to handle non-dependent friend class
6530         that hasn't been previously declared.
6532 2005-03-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6534         Friend class name lookup 5/n
6535         PR c++/1016
6536         * cp-tree.h (pushtag): Adjust declaration.
6537         * decl.c (lookup_and_check_tag): Call lookup_type_scope if
6538         lookup_name fails.
6539         (xref_tag): Adjust call to pushtag.  Make hidden class visible.
6540         (start_enum): Adjust call to pushtag.
6541         * name-lookup.c (ambiguous_decl): Ignore hidden names.
6542         (qualify_lookup): Change return type to bool.
6543         (hidden_name_p): New function.
6544         (lookup_namespace_name, unqualified_namespace_lookup,
6545         lookup_name_real): Use it.
6546         (lookup_type_scope): Update comments.
6547         (maybe_process_template_type_declaration): Change parameter name
6548         from globalize to is_friend.
6549         (pushtag): Change globalize parameter of type int to tag_scope.
6550         Hide name if introduced by friend declaration.
6551         * name-lookup.h (hidden_name_p): Add declaration.
6552         * parser.c (cp_parser_lookup_name): Don't deal with hidden name
6553         here.
6554         * pt.c (push_template_decl_real): Make hidden class template
6555         visible.
6556         (lookup_template_class, instantiate_class_template): Adjust call
6557         to pushtag.
6558         * semantics.c (begin_class_definition): Likewise.
6559         * rtti.c (init_rtti_processing, build_dynamic_cast_1,
6560         tinfo_base_init, emit_support_tinfos): Use ts_current instead of
6561         ts_global.
6563 2005-03-13  Mark Mitchell  <mark@codesourcery.com>
6565         PR c++/20157
6566         * pt.c (determine_specialization): Reject non-specializations.
6568 2005-03-11  Per Bothner  <per@bothner.com>
6570         * cp-tree.h (struct cp_declarator): New id_loc field.
6571         * cp/parser.c (cp_lexer_get_preprocessor_token): Set cp_token's
6572         location using c_lex_with_flags, instead of input_location.
6573         (cp_parser_direct_declarator): Set declarator's id_loc from
6574         cp_token's id_loc.
6576 2005-03-10  Jakub Jelinek  <jakub@redhat.com>
6578         PR c++/18384, c++/18327
6579         * decl.c (reshape_init_array): Use UHWI type for max_index_cst
6580         and index.  Convert max_index to size_type_node if it isn't
6581         host_integerp (, 1).
6583 2005-03-09  Mark Mitchell  <mark@codesourcery.com>
6585         PR c++/20208
6586         * pt.c (tsubst_decl): Apply array-to-pointer and
6587         function-to-pointer conversions to function arguments.
6588         (regenerate_decl_from_template): Likewise.
6590 2005-03-09  Paolo Carlini  <pcarlini@suse.de>
6592         PR c++/16859
6593         * decl.c (complete_array_type): In pedantic mode, return
6594         3 for an empty initializer list as the initializer for an
6595         array of unknown bound (8.5.1/4).
6596         (maybe_deduce_size_from_array_init): Fix final test to use
6597         the above.
6599 2005-03-08  Nathan Sidwell  <nathan@codesourcery.com>
6601         PR c++/20186
6602         * pt.c (contains_dependent_cast_p): New.
6603         (fold_non_dependent_expr): Call it.
6605 2005-03-08  Mark Mitchell  <mark@codesourcery.com>
6607         PR c++/20142
6608         * cp-tree.h (target_type): Remove.
6609         * decl.c (layout_var_decl): Remove #if 0'd code.
6610         (cp_finish_decl): Remove dead code.
6611         * init.c (build_vec_init): When determining whether or not the
6612         element type has an asignment operator, look through all array
6613         dimensions.
6614         * typeck.c (target_type): Remove.
6616 2005-03-07  Mark Mitchell  <mark@codesourcery.com>
6618         * class.c (finish_struct_1): Do not warn about non-virtual
6619         destructors in Java classes.
6621 2005-03-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6623         PR c++/19311
6624         * init.c (build_offset_ref): Don't build non-dependent SCOPE_REF.
6625         * pt.c (build_non_dependent_expr): Don't build NON_DEPENDENT_EXPR
6626         for OFFSET_TYPE.
6627         * typeck.c (build_x_unary_op): Don't build non-dependent SCOPE_REF.
6628         Also set PTRMEM_OK_P for NON_DEPENDENT_EXPR.
6629         (build_unary_op): Handle building ADDR_EXPR of OFFSET_REF inside
6630         template.
6632 2005-03-02  Alexandre Oliva  <aoliva@redhat.com>
6634         * name-lookup.c (push_overloaded_decl): Don't error if the new
6635         decl matches the old one.
6636         * decl.c (redeclaration_error_message): Likewise.
6638 2005-03-01  Per Bothner  <per@bothner.com>
6640         * decl.c (finish_function): Use SET_EXPR_LOCATION instead of
6641         unavailable annotate_with_file_line, if USE_MAPPED_LOCATION.
6643 2005-03-01  Nathan Sidwell  <nathan@codesourcery.com>
6645         PR c++/20232
6646         * class.c (update_vtable_entry_for_fn): Don't crash on invalid
6647         covariancy.
6649         * cp-tree.g (THUNK_TARGET): Expand comment.
6650         * method.c (use_thunk): Make sure we also use the target, if that
6651         is a thunk.
6653 2005-02-27  Jakub Jelinek  <jakub@redhat.com>
6655         PR c++/20206
6656         * decl.c (cxx_comdat_group): Put thunks for
6657         TARGET_USE_LOCAL_THUNK_ALIAS_P (function) functions into the same
6658         comdat group as the thunk target.
6660 2005-02-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6662         * call.c, class.c, cp-tree.h, decl2.c, error.c, init.c, mangle.c,
6663         parser.c: Fix comment typo(s).
6665 2005-02-24  Jakub Jelinek  <jakub@redhat.com>
6667         PR c++/20175
6668         * decl.c (reshape_init): Don't warn about missing braces if STRING_CST
6669         initializes a char/wchar_t array.
6671 2005-02-23  Mark Mitchell  <mark@codesourcery.com>
6673         PR c++/19878
6674         * decl.c (grokvardecl): Set DECL_INTERFACE_KNOWN for declarations
6675         with internal linkage.
6677 2005-02-23  Alexandre Oliva  <aoliva@redhat.com>
6679         * decl.c (grokvardecl): Don't exempt anonymous types from having
6680         linkage for variables that have linkage other than "C".
6682 2005-02-23  Kazu Hirata  <kazu@cs.umass.edu>
6684         * cp-objcp-common.h, error.c: Update copyright.
6686 2005-02-22  Mark Mitchell  <mark@codesourcery.com>
6688         PR c++/20073
6689         * decl.c (start_decl_1): Don't clear TREE_READONLY.
6690         (cp_finish_decl): Likewise.
6691         (complete_vars): Call cp_apply_type_quals_to_decl.
6692         * typeck.c (cp_apply_type_quals): Avoid setting TREE_READONLY in
6693         cases where that's not valid.
6695         PR c++/19991
6696         * init.c (integral_constant_value): Iterate if the value of a decl
6697         is itself a constant.
6699         PR c++/20152
6700         * parser.c (cp_parser_class_head): Check for redefintions here.
6701         * semantics.c (begin_class_definition): Not here.
6703         PR c++/20153
6704         * decl2.c (build_anon_union_vars): Add type parameter.
6705         (finish_anon_union): Pass it.
6707         PR c++/20148
6708         * error.c (dump_expr): Do not print the body of a BIND_EXPR.
6709         Handle STATEMENT_LIST.
6711         PR c++/19883
6712         * parser.c (cp_parser_direct_declarator): Always complain about
6713         non-constant array bounds when in a function scope.
6714         * semantics.c (finish_id_expression): Do not mark dependent names
6715         as non-constant.
6717 2005-02-21  Douglas Gregor  <dgregor@cs.indiana.edu>
6719         PR c++/19076
6720         PR c++/6628
6721         * cp-tree.h (cp_apply_type_quals_to_decl): Declared.
6722         * decl.c (grokdeclarator): Pedwarn about qualifying a function
6723         type.
6724         Add qualifiers when declaring a typedef of a function type.
6725         Member function pointers pick up the qualifiers of the typedef
6726         used to declare them.
6727         Don't complain about creating cv-qualified function types.
6728         Complain about qualified function typedefs that are used to
6729         declare non-static member functions or free functions.
6730         Use cp_apply_type_quals_to_decl.
6731         (start_preparsed_function): Use cp_apply_type_quals_to_decl.
6732         (grokclassfn): Use cp_apply_type_quals_to_decl.
6733         * error.c (dump_type_suffix): Print qualifiers for function
6734         types.
6735         * pt.c (tsubst_decl): Use cp_apply_type_quals_to_decl.
6736         (tsubst): When substituting a function type into a member
6737         pointer type, pass along the qualifiers.
6738         (unify): Unify member pointers to member function pointers.
6739         * tree.c (cp_build_qualified_type_real): Function types may be
6740         qualified. This includes restrict qualifiers.
6741         * typeck.c (cp_apply_type_quals_to_decl): New function to replace
6742         use of c_apply_type_quals_to_decl. Drops qualifiers that are being
6743         added to function types.
6745 2005-02-20  Zack Weinberg  <zack@codesourcery.com>
6747         PR 18785
6748         * cp-objcp-common.h (LANG_HOOKS_TO_TARGET_CHARSET): Set to
6749         c_common_to_target_charset.  Delete bogus comment.
6751 2005-02-18  Richard Henderson  <rth@redhat.com>
6753         PR libstdc++/10606
6754         * except.c (do_get_exception_ptr): New.
6755         (expand_start_catch_block): Use it.
6757 2005-02-19  Jakub Jelinek  <jakub@redhat.com>
6759         * decl.c (start_decl_1): Only check TYPE_NEEDS_CONSTRUCTING
6760         if type is not error_mark_node.
6762 2005-01-20  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
6764         PR c++/19508
6765         * decl2.c (grokfield): Do not apply attributes to template parameters
6766         as they are ignored by tsubst anyway.
6768 2005-02-18  Jakub Jelinek  <jakub@redhat.com>
6770         PR c++/19813
6771         * decl.c (start_decl_1): Clear TREE_READONLY flag if
6772         its type has TYPE_NEEDS_CONSTRUCTING.
6773         (complete_vars): Likewise.
6775 2005-02-17  Alexandre Oliva  <aoliva@redhat.com>
6777         PR c++/20028
6778         * class.c (finish_struct): Initialize TYPE_SIZE_UNIT of a
6779         template along with TYPE_SIZE.
6781         PR c++/20022
6782         * semantics.c (perform_deferred_access_checks): Use
6783         get_deferred_access_checks to get the top of the stack.
6785 2005-02-15  Alexandre Oliva  <aoliva@redhat.com>
6787         PR c++/17788
6788         * class.c (add_implicitly_declared_members, check_field_decl)
6789         (check_field_decls, check_bases): Remove arguments, tests and
6790         assignments of cant_have_default_ctor-related variables.
6792 2005-02-15  Alexandre Oliva  <aoliva@redhat.com>
6794         * decl2.c (mark_used): Set the source location of the used decl to
6795         the current input location here...
6796         * method.c (synthesize_method): ... not here.  Set input_location
6797         from the decl instead.
6799 2005-02-14  Nathan Sidwell  <nathan@codesourcery.com>
6801         PR c++/19608
6802         * parser.c (cp_parser_late_parsing_for_member): Use
6803         current_function_decl as scope to push to and from.
6805         PR c++/19884
6806         * pt.c (check_explicit_specialization): Make sure namespace
6807         binding lookup found an overloaded function.
6808         (lookup_template_function): Just assert FNS is an overloaded
6809         function.
6811         PR c++/19895
6812         * decl.c (grokdeclarator): Check for error mark node in ptrmem
6813         construction.
6815 2005-02-14  Alexandre Oliva  <aoliva@redhat.com>
6817         PR c++/17816
6818         * decl.c (redeclaration_error_message): Report redefinition of
6819         pure virtual function.
6821 2005-02-14  Nathan Sidwell  <nathan@codesourcery.com>
6823         PR c++/19891
6824         * class.c (build_simple_base_path): Build the component_ref
6825         directly.
6826         (update_vtable_entry_for_fn): Walk the covariant's binfo chain
6827         rather than using lookup_base.
6828         * search.c (dfs_walk_once): Add non-recursive assert check.
6829         * typeck.c (build_class_member_access_expr): It is possible for
6830         the member type to be both const and volatile.
6832 2005-02-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6834         PR c++/14479
6835         PR c++/19487
6836         * pt.c (maybe_check_template_type): Remove.
6837         * cp-tree.h (maybe_check_template_type): Remove prototype.
6838         * name-lookup.c (maybe_process_template_type_declaration): Don't
6839         use maybe_check_template_type.
6841 2005-02-11  Richard Henderson  <rth@redhat.com>
6843         PR c++/19632
6844         * pt.c (get_mostly_instantiated_function_type): Save and restore
6845         flag_access_control instead of push/pop_access_scope.
6847 2005-02-10  Mark Mitchell  <mark@codesourcery.com>
6849         PR c++/19755
6850         * decl.c (reshape_init): Issue warnings about missing braces.
6852 2005-02-11  Kazu Hirata  <kazu@cs.umass.edu>
6854         * cp-tree.def, except.c, ptree.c: Update copyright.
6856 2005-02-09  Mark Mitchell  <mark@codesourcery.com>
6858         PR c++/19811
6859         * call.c (build_op_delete_call): Check COMPLETE_TYPE_P before
6860         attempting name lookup.
6862         * parser.c (cp_parser_unqualified_id): Initialize type_decl.
6864         PR c++/19787
6865         * call.c (initialize_reference): Robustify.
6867         PR ++/19732
6868         * decl.c (grokdeclarator): Check for invalid use of destructor
6869         names.
6871         PR c++/19762
6872         * parser.c (cp_parser_unqualified_id): Avoid creating destructor
6873         names with invalid types.
6875         PR c++/19826
6876         * parser.c (cp_parser_direct_declarator): Allow type-dependent
6877         expressions as array bounds.
6879         PR c++/19739
6880         * parser.c (cp_parser_attributes_list): Allow empty lists.
6882 2005-02-08  Mark Mitchell  <mark@codesourcery.com>
6884         PR c++/19733
6885         * class.c (add_method): Don't set TYPE_HAS_DESTRUCTOR.
6886         (check_bases): Give warnings about a base class with a
6887         non-virtual destructor, even if it is implicit.
6888         (finish_struct_bits): Don't copy TYPE_HAS_DESTRUCTOR.
6889         (maybe_warn_about_overly_private_class): Don't use
6890         TYPE_HAS_DESTRUCTOR.
6891         (finish_struct_methods): Don't set TYPE_HAS_DESTRUCTOR.
6892         (check_for_override): Give it external linkage.
6893         (add_implicitly_declared_members): Generate destructors lazily.
6894         (check_field_decls): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
6895         TYPE_HAS_DESTRUCTOR.
6896         (check_bases_and_members): Call check_methods before
6897         check_field_decls.
6898         (check_bases_and_members): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
6899         TYPE_HAS_DESTRUCTOR.
6900         (finish_struct_1): Do not use TYPE_HAS_DESTRUCTOR.
6901         * cp-tree.def (PSEUDO_DTOR_EXPR): Document.
6902         * cp-tree.h (TYPE_HAS_DESTRUCTOR): Remove.
6903         (lang_type_class): Add lazy_destructor.
6904         (CLASSTYPE_LAZY_DESTRUCTOR): New macro.
6905         (CLASSTYPE_DESTRUCTORS): Robustify.
6906         (TYPE_HAS_DESTRUCTOR): Remove.
6907         (check_for_override): Declare.
6908         (build_vbase_delete): Remove.
6909         * cvt.c (convert_to_void): Issue errors about pseudo-destructor
6910         expressions.
6911         * decl.c (cxx_maybe_build_cleanup): Remove dead code.
6912         * except.c (dtor_nothrow): Lazily create destructors if necessary.
6913         (build_throw): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
6914         * init.c (build_delete): Lazily create destructors, if necessary.
6915         (build_vbase_delete): Remove.
6916         * method.c (locate_dtor): Simplify.
6917         (implicitly_declare_fn): Add support for destructors.
6918         * parser.c (cp_parser_lookup_name): Lazily create destructors, if
6919         necessary.
6920         * pt.c (check_explicit_specialization): Don't use
6921         TYPE_HAS_DESTRUCTOR.
6922         (instantiate_class_template): Likewise.
6923         * ptree.c (cxx_print_type): Don't print TYPE_HAS_DESTRUCTOR.
6924         * rtti.c (emit_support_tinfos): Robustify.
6925         * search.c (lookup_fnfields_1): Lazily create destructors.
6926         * typeck.c (build_class_member_access_expr): Remove
6927         PSEUDO_DTOR_EXPR handling.
6928         (lookup_destructor): Likewise.
6930 2005-02-08  Kazu Hirata  <kazu@cs.umass.edu>
6932         * cxx-pretty-print.c, cxx-pretty-print.h, decl.h: Update
6933         copyright.
6935 2005-02-07  Mark Mitchell  <mark@codesourcery.com>
6937         * parser.c (cp_lexer_start_debugging): Avoid arithmetic operations
6938         on boolean variables.
6939         (cp_lexer_stop_debugging): Likewise.
6941 2005-02-03  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
6943         PR c++/17401
6944         * parser.c (cp_parser_pure_specifier): Emit a specific error
6945         message with an invalid pure specifier.
6946         * decl2.c (grok_function_init): Remove.
6947         (grokfield): An initializer for a method is a always a pure
6948         specifier.
6950 2005-02-02  Matt Austern  <austern@apple.com>
6952         PR c++/19628
6953         * cp-tree.h (builtin_valid_in_constant_expr_p): Declare.
6954         * parser.c (cp_parser_postfix_expression): Accept function call in
6955         constant expression if builtin_valid_in_constant_expr_p is true
6956         for that function.
6957         * pt.c (value_dependent_expression_p): Handle CALL_EXPRs properly.
6958         * semantics.c (finish_id_expression): Accept function call in constant
6959         expression if builtin_valid_in_constant_expr_p is true for that
6960         function.
6961         * tree.c (builtin_valid_in_constant_expr_p): New.
6963 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6965         PR c++/17413
6966         * pt.c (check_instantiated_args): Improve error message.
6967         Fix logic when to print its second part.
6969 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6971         * cp-tree.h (complete_type_or_else): Remove macro.
6972         (complete_type_or_diagnostic): Rename to complete_type_or_else
6973         and remove last argument.
6974         * typeck.c (complete_type_or_diagnostic): Rename to
6975         complete_type_or_else and remove last argument.
6977 2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
6979         * cp-tree.h (commonparms): Remove prototype.
6980         (convert_arguments): Likewise.
6981         (PFN_FROM_PTRMEMFUNC): Remove.
6982         * typeck.c (commonparms): Make static.
6983         (convert_arguments): Add prototype. Make static.
6984         (PFN_FROM_PTRMEMFUNC): Replace by pfn_from_ptrmemfunc.
6986 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
6988         * parser.c (cp_parser_primary_expression): Don't complain about
6989         floating-point literals in integral constant expressions when
6990         !pedantic.
6992 2005-02-01  Alexandre Oliva  <aoliva@redhat.com>
6994         * parser.c (cp_parser_template_id): Revert comment patch too.
6996         PR c++/18757
6997         PR c++/19366
6998         PR c++/19499
6999         * parser.c (cp_parser_template_id): Revert 2004-12-09's patch.
7000         Issue an error when creating the template id.
7001         * pt.c (fn_type_unification): Return early if the explicit
7002         template arg list is an error_mark_node.
7004 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
7006         * decl.c (build_enumerator): Do not issue duplicate error messages
7007         about invalid enumeration constants.
7008         * parser.c (cp_parser_non_integral_constant_expression): Always
7009         set parser->non_integral_constant_expression_p.
7010         (cp_parser_primary_expression): Add cast_p parameter.  Issue
7011         errors about invalid uses of floating-point literals in
7012         cast-expressions.
7013         (cp_parser_postfix_expression): Add cast_p parameter.
7014         (cp_parser_open_square_expression): Pass it.
7015         (cp_parser_parenthesized_expression_list): Add cast_p parameter.
7016         (cp_parser_unary_expression): Likewise.
7017         (cp_parser_new_placement): Pass it.
7018         (cp_parser_direct_new_declarator): Likewise.
7019         (cp_parser_new_initializer): Likewise.
7020         (cp_parser_cast_expression): Add cast_p parameter.
7021         (cp_parser_binary_expression): Likewise.
7022         (cp_parser_question_colon_clause): Likewise.
7023         (cp_parser_assignment_expression): Likewise.
7024         (cp_parser_expression): Likewise.
7025         (cp_parser_constant_expression): If an integral constant
7026         expression is invalid, return error_mark_node.
7027         (cp_parser_expression_statement): Pass cast_p.
7028         (cp_parser_condition): Likewise.
7029         (cp_parser_iteration_statement): Likewise.
7030         (cp_parser_jump_statement): Likewise.
7031         (cp_parser_mem_initializer): Likewise.
7032         (cp_parser_template_argument): Likewise.
7033         (cp_parser_parameter_declaration): Likewise.
7034         (cp_parser_initializer): Likewise.
7035         (cp_parser_throw_expression): Likewise.
7036         (cp_parser_attribute_list): Likewise.
7037         (cp_parser_simple_cast_expression): Likewise.
7038         (cp_parser_functional_cast): Likewise.
7039         (cp_parser_late_parsing_default_args): Likewise.
7040         (cp_parser_sizeof_operand): Save/restore
7041         non_integral_constant_expression_p.
7043 2005-01-31  Mike Stump  <mrs@apple.com>
7045         * parser.c (cp_lexer_new_main): Get the first token, first, before
7046         doing anything.
7048 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
7050         * decl.c (start_decl): Add missing parentheses.
7052 2005-01-30  Mark Mitchell  <mark@codesourcery.com>
7054         PR c++/19555
7055         * cp-tree.h (DECL_USE_TEMPLATE): Expand documentation.
7056         * decl.c (duplicate_decls): Do not discard
7057         DECL_IMPLICIT_INSTANTIATION when merging declarations.
7058         (start_decl): Do not SET_DECL_TEMPLATE_SPECIALIZATION for
7059         variables that do not have DECL_USE_TEMPLATE.
7061         PR c++/19395
7062         * decl.c (grokdeclarator): Refactor code so that qualified names
7063         are never allowed as the declarator in a typedef.
7065         PR c++/19367
7066         * name-lookup.c (do_nonmember_using_decl): Avoid overloading
7067         builtin declarations.
7069         PR c++/19457
7070         * call.c (convert_like_real): Inline call to
7071         dubious_conversion_warnings here.
7072         * cp-tree.h (dubious_conversion_warnings): Remove.
7073         * semantics.c (finish_unary_op_expr): Copy INTEGER_CSTs before
7074         setting TREE_NEGATED_INT.
7075         * typeck.c (dubious_conversion_warnings): Remove.
7077         PR c++/19349
7078         * name-lookup.c (pushdecl_namespace_level): Avoid accessing free'd
7079         memory.
7081 2005-01-28  Mark Mitchell  <mark@codesourcery.com>
7083         PR c++/19253
7084         * parser.c (cp_parser_diagnose_invalid_type_name): Commit to
7085         tentative parses.
7087         PR c++/19667
7088         * pt.c (redeclare_class_template): Robustify.
7090 2005-01-27  Steven Bosscher  <stevenb@suse.de>
7092         * decl.c (finish_case_label): Use SWITCH_STMT accessor macros
7093         instead of SWITCH_EXPR ones.
7094         * pt.c (tsubst_expr): Likewise.
7095         * semantics.c (begin_switch_stmt, finish_switch_cond,
7096         finish_switch_stmt): Likewise.
7098 2005-01-26  J"orn Rennecke <joern.rennecke@st.com>
7100         PR c++/18370
7101         * parser.c (cp_parser_initializer_clause): Initialize *non_constant_p.
7103 2005-01-25  Andrew Pinski  <pinskia@physics.uc.edu>
7105         * class.c (abort_fndecl_addr): New variable.
7106         (build_vtbl_initializer): If we have a pure virtual function
7107         share the abort function's address.
7108         Include gt-cp-class.h at the end.
7109         * config-lang.in (gtfiles): Add cp/class.c.
7111 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7113         * cxx-pretty-print.c (pp_cxx_statement): Add prototype. Make static.
7114         (pp_cxx_function_definition): Make static.
7115         * cxx-pretty-print.h (pp_cxx_statement): Remove prototype.
7116         (pp_cxx_function_definition): Likewise.
7118 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7120         * name-lookup.c (print_binding_level): Make static.
7121         (constructor_name_full): Make static inline.
7122         (current_decl_namespace): Make static.
7123         * name-lookup.h (constructor_name_full): Remove prototype.
7124         (print_binding_level): Likewise.
7125         (current_decl_namespace): Likewise.
7127 2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7129         * decl.h (debug_bindings_indentation): Remove.
7131 2005-01-23  Kazu Hirata  <kazu@cs.umass.edu>
7133         * typeck.c: Fix a comment typo.
7135 2005-01-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
7137         PR c++/19208
7138         * pt.c (fold_decl_constant_value): Always call fold_non_dependent_expr
7139         at least once.
7140         (tsubst): Use fold_decl_constant_value in place of a bare call to
7141         integral_constant_value.
7143 2005-01-20  Kazu Hirata  <kazu@cs.umass.edu>
7145         * typeck.c (more_qualified_p): Remove.
7146         * cp-tree.h: Remove the corresponding prototype.
7148 2005-01-19  Matt Austern  <austern@apple.com>
7150         * typeck.c (comptypes): Handle return code from objc_comptypes
7151         correctly.
7153 2005-01-19  Kazu Hirata  <kazu@cs.umass.edu>
7155         * cp-tree.h, name-lookup.h: Remove unused prototypes.
7157 2005-01-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7159         PR c++/19375
7160         * semantics.c (finish_id_expression): Disable access checking for
7161         already lookuped FIELD_DECL.
7163 2005-01-18  Kazu Hirata  <kazu@cs.umass.edu>
7165         * decl.c (delete_block): Remove.
7166         * cp-tree.h: Remove the corresponding prototype.
7168         * decl.c (vtable_decl_p, vtype_decl_p, walk_globals_data,
7169         walk_vtables_r, walk_vtables, walk_globals_r, walk_globals):
7170         Remove.
7171         * cp-tree.h: Remove the corresponding prototypes.
7173         * tree.c (count_functions, bound_pmf_p, cp_is_overload_p,
7174         cp_update_decl_after_saving, name_p): Remove.
7175         * cp-tree.h: Remove the corresponding prototypes.
7177 2005-01-18  Andrew Pinski  <pinskia@physics.uc.edu>
7179         PR c/19472
7180         * semantics.c (finish_asm_stmt): Strip nops off
7181         input memory operands.
7183 2005-01-18  Kazu Hirata  <kazu@cs.umass.edu>
7185         * Make-lang.in, call.c, cvt.c, init.c, rtti.c, tree.c,
7186         typeck2.c: Update copyright.
7188 2005-01-16  Kazu Hirata  <kazu@cs.umass.edu>
7190         * class.c (get_enclosing_class): Remove.
7191         * cp-tree.h: Remove the corresponding prototypes.
7193         * cvt.c (convert_lvalue): Remove.
7194         * cp-tree.h: Remove the corresponding prototype.
7196         * pt.c (tinst_for_decl): Remove.
7197         * cp-tree.h: Remove the corresponding prototypes.
7199         * tree.c (hash_chainon): Remove.
7200         * cp-tree.h: Remove the corresponding prototypes.
7202 2005-01-15  Jakub Jelinek  <jakub@redhat.com>
7204         PR c++/19263
7205         * typeck2.c (split_nonconstant_init_1) <case VECTOR_TYPE>: Put a copy
7206         of CONSTRUCTOR's node into MODIFY_EXPR, as the original is modified.
7208 2005-01-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7210         * Make-lang.in (cp-warn): Don't append $(WERROR).
7212 2005-01-10  Kazu Hirata  <kazu@cs.umass.edu>
7214         * cp-tree.h: Fix a comment typo.
7216 2005-01-07  Nathan Sidwell  <nathan@codesourcery.com>
7218         PR c++/19298
7219         * pt.c (tsubst_qualified_id): Call convert_from_reference.
7221 2005-01-06  Mark Mitchell  <mark@codesourcery.com>
7223         PR c++/19244
7224         * class.c (add_implicitly_declared_members): Remove dead code.
7225         * decl.c (grokfndecl): Add sfk parameter.  Use it do set
7226         DECL_CONSTRUCTOR_P.
7227         (grokdeclarator): Adjust calls to grokfndecl.
7228         * method.c (implicitly_declare_fn): Improve documentation.
7229         * parser.c (cp_parser_direct_declarator): Do not consider a
7230         function to be a constructor if the containing class was
7231         originally anonymous.
7233 2005-01-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7235         PR c++/17154
7236         * search.c (lookup_field_1): Handle using declaration in
7237         class template partial specialization.
7239 2005-01-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7241         PR c++/19258
7242         * pt.c (push_access_scope): Handle friend defined in class.
7243         (pop_access_scope): Likewise.
7245 2005-01-06  Nathan Sidwell  <nathan@codesourcery.com>
7247         PR c++/19270
7248         * pt.c (tsubst_copy) <ARRAY_REF case>: Handle separately.
7249         (tsubst_copy_and_build) <ARRAY_REF case>: Remove obsolete
7250         array-new handling code.  Use build_x_binary_op.
7252 2005-01-05  Nathan Sidwell  <nathan@codesourcery.com>
7254         PR c++/19030
7255         * cp-tree.h (start_decl): Take pointer to pushed scope, not bool.
7256         * name-lookup.h (push_scope): Return pushed scope, not flag.
7257         * name-lookup.c (push_scope): Return scope that should be popped,
7258         not a flag.
7259         * decl.c (start_decl): Adjust.
7260         (grokfndecl): Adjust scope push and pop.
7261         * decl2.c (check_classfn): Likewise.
7262         * parser.c (cp_parser_condition, cp_parser_conversion_function_id,
7263         cp_parser_init_declarator, cp_parser_direct_declarator,
7264         cp_parser_class_specifier, cp_parser_class_head,
7265         cp_parser_lookup_name,
7266         cp_parser_constructor_declarator_p): Likewise.
7267         * pt.c (instantiate_class_template,
7268         resolve_typename_type): Likewise.
7270 2005-01-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
7272         PR c++/14136
7273         * parser.c (cp_parser_unqualified_id): Do not issue error message
7274         for typedef-name as destructor declarator when performing an
7275         uncommitted tentative parse.
7277 2005-01-01  Steven Bosscher  <stevenb@suse.de>
7279         PR middle-end/17544
7280         * decl.c (finish_function): Fix comment.  Annotate the compiler
7281         generated return with the current file name and line 0.