OSDN Git Service

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