OSDN Git Service

007-01-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
[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.