OSDN Git Service

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