OSDN Git Service

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