OSDN Git Service

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