OSDN Git Service

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