OSDN Git Service

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