OSDN Git Service

2d8264ea3cec080e2e828a2fac509df3f0b07dd1
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2007-01-28  Andrew Pinski  <pinskia@gmail.com>
2
3         PR C++/28988
4         * semantics.c (finish_pseudo_destructor_expr): Check the
5         destrutor name by calling check_dtor_name.
6
7 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
8
9         * lex.c (D_CPP0X): Rename.
10         (D_CXX0X): To this.
11         (reswords): D_CPP0X -> D_CXX0X.
12         (init_reswords): Ditto.
13         * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
14         of C++0x keywords as identifiers.
15
16 2007-01-23  Simon Martin  <simartin@users.sourceforge.net>
17
18         PR c++/27492
19         * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
20         function decls.
21
22 2007-01-23  Ian Lance Taylor  <iant@google.com>
23
24         * typeck.c (convert_for_assignment): Only warn about a = b = c
25         when converting to bool.
26
27 2007-01-23  Roger Sayle  <roger@eyesopen.com>
28
29         * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
30         TREE_OVERFLOW.
31         * typeck.c (ignore_overflows): Remove the remaining uses of
32         TREE_CONSTANT_OVERFLOW.
33
34 2007-01-20  Jan Hubicka  <jh@suse.cz>
35
36         * decl2.c (start_objects, start_static_storage_duration_function):
37         Do not make the functions uninlinable.
38
39 2007-01-17  Ian Lance Taylor  <iant@google.com>
40
41         * class.c (add_method): Call VEC_reserve_exact rather than passing
42         a negative size to VEC_reserve.
43
44 2007-01-11  Simon Martin  <simartin@users.sourceforge.net>
45
46         PR c++/29573
47         * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
48
49 2007-01-10  Mark Mitchell  <mark@codesourcery.com>
50
51         PR c++/28999
52         * decl.c (make_typename_type): If the qualified name is not a
53         type, issue an error.
54         * parser.c (cp_parser_elaborated_type_specifier): Fix comment
55         formatting.
56
57 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
58
59         * rtti.c: Include target.h.
60         (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
61         don't emit typeinfo for fundamental types as weak.
62         * Make-lang.in (cp/rtti.o): Update and correct dependencies.
63
64 2007-01-08  Richard Guenther  <rguenther@suse.de>
65
66         * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
67
68 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
69
70         * call.c (standard_conversion): Pass flag to
71         vector_types_convertible_p to disallow emission of note.
72         * typeck.c (convert_for_assignment): Pass flag to
73         vector_types_convertible_p to allow emission of note.
74         (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
75         to disallow emission of note.
76
77 2007-01-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
78
79         PR c++/28986
80         * typeck.c (build_binary_op): Call overflow_warning if
81         TREE_OVERFLOW_P is true for the result and not for any of the
82         operands.
83         
84 2007-01-06  Lee Millward  <lee.millward@codesourcery.com>
85
86        PR c++/19439
87        * class.c (add_method): Don't wait until template
88        instantiation time to complain about duplicate methods.
89         
90 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
91
92         PR c/19978
93         * semantics.c (finish_unary_op_expr): Warn only if result
94         overflowed and operands did not.
95
96 2007-01-05  Ian Lance Taylor  <iant@google.com>
97
98         * typeck.c (build_binary_op): Warn about comparing a non-weak
99         address to NULL.
100
101 2007-01-05  Douglas Gregor  <doug.gregor@gmail.com>
102
103         * pt.c (tsubst): Propagate the need for structural equality checks
104         when reducing the level of template parameters.
105
106 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
107
108         * pt.c: Fix a comment typo.
109
110 2006-01-02  Ian Lance Taylor  <iant@google.com>
111
112         * semantics.c (maybe_convert_cond): Optionally warn when using an
113         assignment as a condition.
114         * typeck.c (convert_for_assignment): Optionally warn about
115         assigning the result of an assignment to a bool.
116
117 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
118
119         * pt.c (canonical_template_parms): Correct typo in comment.
120         
121 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
122
123         * typeck.c (structural_comptypes): Renamed from "comptypes".
124         (comptypes): Use canonical type information to perform fast type
125         comparison. When VERIFY_CANONICAL_TYPES, verify that the
126         canonical type comparison returns the same results as we would see
127         from the current, structural check. Support COMPARE_STRUCTURAL
128         when we need structural checks.
129         * decl.c (typename_compare): Fix comment.
130         (build_typename_type): TYPENAME_TYPE nodes require structural
131         equality checks, because they resolve different based on the
132         current class type.
133         (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
134         require structural equality checks (for now).
135         (build_ptrmemfunc_type): Build the canonical pointer to member
136         function type.
137         (compute_array_index_type): Whenever we build a new index type
138         to represent the size of an array in a template, we need to mark
139         this index type as requiring structural equality. This goes for
140         arrays with value-dependent sizes with the current ABI, or all
141         arrays with ABI-1.
142         * tree.c (cplus_array_hash): New.
143         (struct cplus_array_info): New.
144         (cplus_array_compare): New.
145         (cplus_array_htab): New.
146         (build_cplus_array_type_1): Use a hash table to cache the array
147         types we build. Build the canonical array type for each array
148         type.
149         (cp_build_qualified_type_real): When building a cv-qualified array
150         type, use the hash table of array types and build canonical array
151         types as necessary.
152         (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
153         use structural equality (for now).
154         * cp-tree.h (COMPARE_STRUCTURAL): New.
155         * pt.c (canonical_template_parms): New.
156         (canonical_type_parameter): New.
157         (process_template_parm): Find the canonical type parameter.
158         (lookup_template_class): When we have named the primary template
159         type, set the canonical type for our template class to the primary
160         template type. If any of the template arguments need structural
161         equality checks, the template class needs structural equality
162         checks.
163         (tsubst): When reducing the level of a template template
164         parameter, we require structural equality tests for the resulting
165         parameter because its template parameters have not had their types
166         canonicalized. When reducing a template type parameter, find the
167         canonical reduced type parameter.
168         (any_template_arguments_need_structural_equality_p): New.
169
170 2006-12-31  Simon Martin  <simartin@users.sourceforge.net>
171
172         PR c++/29731
173         * parser.c (cp_parser_primary_expression): Return error_mark_node when
174         a statement-expression is found outside of a function body.
175
176 2006-12-28  Kazu Hirata  <kazu@codesourcery.com>
177
178         * cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P):
179         Remove.
180
181         * decl2.c: Fix a comment typo.
182
183 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
184
185         PR C++/30225
186         * decl.c (cxx_builtin_function): Only copy the decl if adding
187         it to the std namespace.
188
189 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
190
191         PR C++/30168
192         * optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.
193
194 2006-12-22  Kazu Hirata  <kazu@codesourcery.com>
195
196         * decl.c: Fix a coment typo.
197
198 2006-12-18  Ian Lance Taylor  <iant@google.com>
199
200         * decl.c (start_preparsed_function): Add support for
201         -Wmissing-declarations.
202
203 2006-12-16  Simon Martin  <simartin@users.sourceforge.net>
204
205         PR c++/29475
206         * cp-tree.h (struct deferred_access_check): New structure to represent a
207         deferred access check. It replaces the previous representation as a tree.
208         (get_deferred_access_checks): Return a vector of struct
209         deferred_access_check instead of a tree list.
210         (perform_access_checks): Take a vector of struct deferred_access_check
211         instead of a tree list.
212         * semantics.c (struct deferred_access): Store the deferred access checks
213         as a vector of struct deferred_access_check instead of a tree list.
214         (push_deferring_access_checks): Handle the change in struct
215         deferred_access.
216         (get_deferred_access_checks): Likewise.
217         (pop_to_parent_deferring_access_checks): Likewise.
218         (perform_or_defer_access_check): Likewise.
219         (perform_access_checks): Take a vector of struct deferred_access_check
220         instead of a tree list.
221         * parser.c (struct tree_check): New structure to store various data
222         associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token.
223         (struct cp_token): Changed the value field to be a union with a pointer to
224         a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID
225         tokens and a tree field for all other tokens.
226         (eof_token): Adjusted due to the change in struct cp_token.
227         (cp_lexer_get_preprocessor_token): Likewise.
228         (cp_lexer_purge_token): Likewise.
229         (cp_lexer_purge_tokens_after): Likewise.
230         (cp_lexer_print_token): Likewise.
231         (cp_parser_error): Likewise.
232         (cp_parser_identifier): Likewise.
233         (cp_parser_string_literal): Likewise.
234         (cp_parser_primary_expression): Likewise.
235         (cp_parser_unqualified_id): Likewise.
236         (cp_parser_parenthesized_expression_list): Likewise.
237         (cp_parser_storage_class_specifier_opt): Likewise.
238         (cp_parser_function_specifier_opt): Likewise.
239         (cp_parser_type_specifier): Likewise.
240         (cp_parser_simple_type_specifier): Likewise.
241         (cp_parser_initializer_list): Likewise.
242         (cp_parser_member_specification_opt): Likewise.
243         (cp_parser_attribute_list): Likewise.
244         (cp_parser_objc_expression): Likewise.
245         (cp_parser_objc_protocol_qualifiers): Likewise.
246         (cp_parser_objc_selector): Likewise.
247         (cp_parser_objc_declaration): Likewise.
248         (cp_parser_objc_statement): Likewise.
249         (cp_parser_omp_clause_name): Likewise.
250         (cp_parser_omp_clause_default): Likewise.
251         (cp_parser_omp_clause_schedule): Likewise.
252         (cp_parser_omp_parallel): Likewise.
253         (cp_parser_initial_pragma): Likewise.
254         (pragma_lex): Likewise.
255         (cp_parser_pre_parsed_nested_name_specifier): Likewise.
256         (cp_parser_nested_name_specifier_opt): Likewise.
257         Use cp_token::u::tree_check_value to save the token's value, the
258         associated deferred checks and its qualifying scope.
259         (cp_parser_template_id): Likewise.
260         (cp_parser_template_declaration_after_export): Adjusted the call to
261         get_deferred_access_checks.
262         (cp_parser_init_declarator): Take the access checks as a vector of struct
263         deferred_access_check instead of a tree list.
264         (cp_parser_single_declaration): Likewise.
265         (cp_parser_perform_template_parameter_access_checks): Likewise.
266         (cp_parser_simple_declaration): Adjusted the call to
267         cp_parser_init_declarator.
268         (cp_parser_explicit_specialization): Adjusted the call to
269         cp_parser_single_declaration.
270
271 2006-12-13  Ian Lance Taylor  <iant@google.com>
272
273         PR c++/19564
274         PR c++/19756
275         * parser.c (cp_parser_expression_stack_entry): Add field
276         lhs_type.
277         (cp_parser_binary_expression): Track tree code of left hand side
278         of expression.  Use it when calling build_x_binary_op.
279         (cp_parser_selection_statement): Add if_p parameter.  Change all
280         callers.  Warn about ambiguous else.
281         (cp_parser_statement): Add if_p parameter.  Change all callers.
282         (cp_parser_implicitly_scoped_statement): Likewise.
283         * typeck.c (build_x_binary_op): Add parameters arg1_code and
284         arg2_code.  Change all callers.  Call warn_about_parentheses.
285         * cp-tree.h (build_x_binary_op): Update declaration.
286
287 2006-12-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
288
289         * decl.c (build_enumerator): Update error message to match C
290         front-end.
291         
292 2006-12-11  Jan Hubicka  <jh@suse.cz>
293
294         * decl2.c (var_finalized_p): Update for renamed varpool functions.
295
296 2006-12-09  Zack Weinberg  <zackw@panix.com>
297
298         * parser.c (yydebug, enum pragma_omp_clause): Delete.
299
300 2006-12-07  Mark Mitchell  <mark@codesourcery.com>
301
302         PR c++/29732
303         * cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations.
304         (explicit_class_specialization_p): Declare.
305         * pt.c (explicit_class_specialization_p): New function.
306         * parser.c (cp_parser_init_declarator): Check correct number of
307         template parameters for in-class function definitions.
308         (cp_parser_check_declrator_template_parameters): Stop looking for
309         template classes when we find an explicit specialization.
310
311 2006-12-07  Lee Millward  <lee.millward@codesourcery.com>
312
313         PR c++/29980
314         * cp_parser_elaborated_type_specifier: Check
315         the return value of check_elaborated_type_specifier.
316
317 2006-12-06  Mark Mitchell  <mark@codesourcery.com>
318
319         PR c++/29730
320         * parser.c (cp_parser_init_declarator): Reject initialization of
321         functions.
322
323 2006-12-05  Mark Mitchell  <mark@codesourcery.com>
324
325         PR c++/29729
326         * decl2.c (check_member_template): Move check for member
327         templates in local classes to ...
328         * parser.c (cp_parser_template_declaration_after_export):
329         ... here.
330
331         PR c++/29728
332         * decl.c (check_array_designated_initializer): New function.
333         (maybe_deduce_size_from_array_init): Use it.
334         (reshape_init_array): Likewise.
335
336 2006-12-05  Aldy Hernandez  <aldyh@redhat.com>
337
338         Merge from gimple-tuples-branch.
339
340         2006-10-05  Aldy Hernandez  <aldyh@redhat.com>
341
342         * cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
343         (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
344         (cxx_omp_clause_copy_ctor): Same.
345         (cxx_omp_clause_assign_op): Same.
346
347         2006-09-28  Aldy Hernandez  <aldyh@redhat.com>
348
349         * cp-tree.h (union lang_tree_node): Gimple statements do not
350         have a TREE_CHAIN.
351         (TREE_INDIRECT_USING): Look in base.
352
353 2006-12-04  Jan Hubicka  <jh@suse.cz>
354
355         * cp-objcp-common.c (cp_expr_size): Return NULL in the case
356         size is undefined.
357
358 2006-12-04  Mark Mitchell  <mark@codesourcery.com>
359
360         PR c++/29733
361         * pt.c (tsubst_decl): Disallow variables of function type.
362
363         PR c++/29632
364         * call.c (add_builtin_candidate): Do not permit NULL pointer
365         constants to be compared with template parameters.
366
367 2006-12-04  Eric Botcazou  <ebotcazou@adacore.com>
368
369         * pt.c (for_each_template_parm_r) <INTEGER_TYPE>: New case.
370         Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.
371
372 2006-12-03  Richard Henderson  <rth@redhat.com>
373             Andrew Pinski  <pinskia@gmail.com>
374
375         PR C++/14329
376         * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR.
377
378 2006-12-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
379
380         PR C++/30033
381         * decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.
382
383 2006-12-02  Kazu Hirata  <kazu@codesourcery.com>
384
385         * name-lookup.c: Follow spelling conventions.
386
387 2006-12-01  Geoffrey Keating  <geoffk@apple.com>
388
389         * decl.c (poplevel): Check DECL_INITIAL invariant.
390         (duplicate_decls): Preserve DECL_INITIAL when eliminating
391         a new definition in favour of an old declaration.
392         (start_preparsed_function): Define and document value of
393         DECL_INITIAL before and after routine.
394         (finish_function): Check DECL_INITIAL invariant.
395         * parser.c
396         (cp_parser_function_definition_from_specifiers_and_declarator):
397         Skip duplicate function definitions.
398
399 2006-12-01  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
400
401         PR c++/30022
402         * typeck.c (type_after_usual_arithmetic_conversions):
403         Fix assertion for vector types.
404         (build_binary_op): Use temporary for inner type of vector types.
405
406 2006-12-01  Ryan Mansfield  <rmansfield@qnx.com>
407
408         PR c++/29066
409         * typeck.c (build_binary_op):  Fix pointer to member function
410         comparison for ptrmemfunc_vbit_in_delta targets.
411
412 2006-12-01  Dirk Mueller  <dmueller@suse.de>
413
414         PR c++/18313
415         * decl.c (grokdeclarator): Warn for type qualifiers on return
416         type for non-dependent types.
417         * pt.c (tsubst_function_type): Warn for type qualifiers on
418         return type for dependent types.
419
420 2006-11-30  Geoffrey Keating  <geoffk@apple.com>
421
422         * rtti.c (get_tinfo_decl): Handle return value from
423         pushdecl_top_level_and_finish.
424
425 2006-11-29  Lee Millward  <lee.millward@codesourcery.com>
426
427         PR c++/29022
428         * parser.c (cp_parser_class_head): Move processing
429         of any base classes to...
430         (cp_parser_class_specifier) ...here. Take an extra
431         tree* parameter for any base classes. Only process
432         them if the opening brace was found.
433
434 2006-11-28  Jakub Jelinek  <jakub@redhat.com>
435
436         PR c++/29735
437         * decl.c (grokfndecl): Check main's type after applying
438         attributes, not before.
439
440 2006-11-27  Mark Mitchell  <mark@codesourcery.com>
441
442         * class.c (build_vcall_offset_vtbl_entries): Do not add vcall
443         entries for a primary construction virtual table.
444
445 2006-11-26  Mark Mitchell  <mark@codesourcery.com>
446
447         PR c++/29886
448         * parser.c (cp_parser): Add in_function_body.
449         (cp_parser_new): Initialize it.
450         (cp_parser_primary_expression): Use parser->in_function_body
451         instead of at_function_scope_p.
452         (cp_parser_asm_definition): Likewise.
453         (cp_parser_direct_declarator): Likewise.
454         (cp_parser_class_specifier): Clear parser->in_function_body.
455         (cp_parser_constructor_declarator_p): Use parser->in_function_body
456         instead of at_function_scope_p.
457         (cp_parser_function_body_after_declarator): Set
458         parser->in_function_body.
459
460 2006-11-21      Douglas Gregor <doug.gregor@gmail.com>
461
462         * cp-tree.def (STATIC_ASSERT): New.
463         * cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT.
464         * error.c (dump_decl): Handle STATIC_ASSERT.
465         * cp-tree.h (STATIC_ASSERT_CONDITION): New.
466         (STATIC_ASSERT_MESSAGE): New.
467         (STATIC_ASSERT_SOURCE_LOCATION): New.
468         (struct tree_static_assert): New.
469         (enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT.
470         (union lang_tree_node): Add static_assertion.
471         (finish_static_assert): Declare.
472         * cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT.
473         (pp_cxx_declaration): Handle STATIC_ASSERT.
474         * pt.c (instantiate_class_template): Handle
475         STATIC_ASSERT members.
476         (tsubst_expr): Handle STATIC_ASSERT statements.
477         * semantics.c (finish_static_assert): New.
478         * lex.c (D_CPP0X): New.
479         (reswords): Add static_assert keyword.
480         (init_reswords): If not flag_cpp0x, mask out C++0x keywords.
481         * parser.c (cp_parser_block_declaration): Parse static
482         assertions.
483         (cp_parser_static_assert): New.
484         (cp_parser_member_declaration): Parse static assertions.
485
486 2006-11-21  Jakub Jelinek  <jakub@redhat.com>
487
488         PR c++/29570
489         * decl.c (cp_finish_decl): Check for value dependent brace enclosed
490         scalar initializer.
491
492         PR c++/29734
493         * cp-tree.h (WANT_VECTOR): Define.
494         (WANT_ARITH): Add WANT_VECTOR.
495         * cvt.c (build_expr_type_conversion): Handle vector types.
496         * typeck.c (build_unary_op): Add WANT_VECTOR to
497         build_expr_type_conversion flags.
498
499 2006-11-20  Simon Martin  <simartin@users.sourceforge.net>
500
501         PR c++/29475
502         * cp-tree.h (enforce_access, perform_or_defer_access_check): Added an
503         extra argument that represents the declaration to use to print
504         potential error messages.
505         * init.c (build_offset_ref): Adjusted the call to
506         perform_or_defer_access_check.
507         * class.c (alter_access, resolve_address_of_overloaded_function):
508         Likewise.
509         * decl.c (make_typename_type, make_unbound_class_template): Likewise.
510         * search.c (lookup_member): Likewise.
511         * friend.c (add_friend): Likewise.
512         * parser.c (cp_parser_template_id,
513         cp_parser_pre_parsed_nested_name_specifier): Likewise.
514         * semantics.c (finish_non_static_data_member,
515         check_accessibility_of_qualified_id, finish_id_expression): Likewise.
516         (pop_to_parent_deferring_access_checks, perform_access_checks,
517         perform_or_defer_access_check): Adjusted the call to enforce_access.
518         * call.c (enforce_access): Use the new extra argument to build the
519         error message.
520         (build_op_delete_call): Adjusted the call to
521         perform_or_defer_access_check.
522         (build_over_call): Likewise.
523
524 2006-11-16  Dirk Mueller  <dmueller@suse.de>
525
526         * name-lookup.c (begin_scope): Use GGC_CNEW instead of
527         GGC_NEW and memset.
528
529 2006-11-13  Roger Sayle  <roger@eyesopen.com>
530
531         * rtti.c (get_pseudo_ti_init): Ensure that the offset field of the
532         base type info initializer has the correct type.
533
534 2006-11-13  Mark Mitchell  <mark@codesourcery.com>
535
536         PR c++/29518
537         * pt.c (coerce_template_parms): Do not skip_evaluation while
538         substituting template arguments.
539
540 2006-11-11  Richard Guenther  <rguenther@suse.de>
541
542         * typeck.c (build_unary_op): Remove handling of FIX_CEIL_EXPR,
543         FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
544
545 2006-11-03  Roger Sayle  <roger@eyesopen.com>
546
547         * call.c (build_op_delete_call): Test user-visible type against
548         size_type_node, instead of against the internal type, sizetype.
549         * class.c (type_requires_array_cookie): Likewise.
550         * mangle.c (write_builtin_type) <INTEGER_TYPE>: Remove special
551         handling of TYPE_IS_SIZETYPE.
552         * typeck.c (type_after_usual_arithmetic_conversions): Remove
553         special case handling of TYPE_IS_SIZETYPE.
554         (comptypes): Likewise.
555
556 2006-11-01  Danny Smith  <dannysmith@users.sourceforge.net>
557
558         * decl.c (get_atexit_node): Reference atexit, not __cxa_exit.
559         if targetm.cxx.use_atexit_for cxa_atexit.
560         (start_cleanup_fn): Likewise.
561         (register_dtor_fn): Likewise.
562
563 2006-09-25  Geoffrey Keating  <geoffk@apple.com>
564
565         * decl2.c (cp_write_global_declarations): Rename from
566         cp_finish_file.
567         * cp-lang.c (finish_file): Don't call cp_finish_file.
568         * cp-tree.h (cp_write_global_declarations): Rename from
569         cp_finish_file.
570         * cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to
571         cp_write_global_declarations.
572
573 2006-10-31  Geoffrey Keating  <geoffk@apple.com>
574
575         * name-lookup.c (get_anonymous_namespace_name): New.
576         (push_namespace_with_attribs): Use get_anonymous_namespace_name.
577         * decl2.c (start_objects): Update for rename of
578         get_file_function_name_long.
579
580 2006-10-30  Dirk Mueller  <dmueller@suse.de>
581
582         PR c++/28704
583         * decl.c (grokdeclarator): Duplicate diagnostic message
584         for easier translation.
585         * decl.c (grokdeclarator): Fix line-wrapping.
586
587 2006-10-30  Dirk Mueller  <dmueller@suse.de>
588
589         PR c++/6321
590         * decl.c (grokfndecl): Use check_main_parameter_types.
591
592 2006-10-30  Dirk Mueller  <dmueller@suse.de>
593
594         PR c++/28669
595         * decl.c (grokfndecl): Duplicate warning message for
596         easier translation.
597
598 2006-10-30  Dirk Mueller  <dmueller@suse.de>
599
600         * typeck.c (build_unary_op): Fix indenting. Use G_().
601
602 2006-10-29  Dirk Mueller  <dmueller@suse.de>
603
604         PR c++/29089
605         * typeck.c (build_unary_op): Duplicate warning message
606         for easier translation.
607
608 2006-10-29  Dirk Mueller  <dmueller@suse.de>
609
610         PR c++/16307
611         * typeck.c (build_array_ref): Warn for char subscriptions
612         on pointers.
613
614 2006-10-29  Kazu Hirata  <kazu@codesourcery.com>
615
616         * decl.c: Fix a comment typo.
617
618 2006-10-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
619
620         PR C++/29295
621         * typeck.c (build_unary_op): Use same_type_p when comparing to
622         boolean type.
623
624 2006-10-29  Dirk Mueller  <dmueller@suse.de>
625
626         PR c++/29033
627         * typeck.c (build_binary_op): Duplicate warning message
628         for better translation.
629
630 2006-10-23  Rafael Avila de Espindola  <rafael.espindola@gmail.com>
631
632         * decl.c (builtin_function_1): Move common code to
633         add_builtin_function.
634         (builtin_function): Rename to cxx_builtin_function.
635         Change the signature.
636         * call.c: Include langhooks.h.
637         (build_java_interface_fn_ref):  Replace calls to
638         builtin_function with add_builtin_function.
639         * Make-lang.in (cp/call.o): Depend on langhooks.h.
640         * cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
641         cxx_builtin_function.
642         * cp-tree.h (builtin_function): Rename to cxx_builtin_function.
643         Change the signature.
644
645 2006-10-22  Nathan Sidwell  <nathan@codesourcery.com>
646
647         PR c++/20647
648         * rtti.c (tinfo_base_init): The type info string is always global.
649
650 2006-10-20  Lee Millward  <lee.millward@codesourcery.com>
651             Mark Mitchell <mark@codesourcery.com>
652
653         PR c++/28053
654         * decl2.c (grokbitfield): Detect invalid non-integral
655         types earlier when possible.
656
657 2006-10-18  Mark Shinwell  <shinwell@codesourcery.com>
658
659         PR c++/26884
660         * typeck2.c (digest_init): Raise error upon attempts to
661         initialize arrays with variables.
662
663 2006-10-17  Lee Millward  <lee.millward@codesourcery.com>
664
665         PR c++/27952
666         * cp-tree.h (xref_basetypes): Return bool instead of void.
667         * decl.c (xref_basetypes): Adjust definition. Return false
668         if the class bases are invalid.
669         * parser.c (cp_parser_class_head): Check the return value
670         from xref_basetypes.
671
672 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
673
674         PR c++/28261
675         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Add
676         comment.
677
678         PR c++/28261
679         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): New
680         function.
681         (cp_parser_constructor_declarator_p): Use it.
682         (cp_parser_check_type_definition): Return a value indicating
683         whether or not the definition is valid.
684         (cp_parser_enum_specifier): Skip invalid enum definitions.
685
686 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
687
688         PR c++/29039
689         * typeck2.c (build_functional_cast): Don't zero-initialize
690         non-PODs; instead, call their constructors.
691         * method.c (synthesize_method): Always build mem-initializers, if
692         we're synthesizing the default constructor.
693
694 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
695
696         PR c++/27270
697         * decl.c (reshape_init_class): Move check for designated
698         to ...
699         * parser.c (cp_parser_initializer_list): ... here.
700         * pt.c (tsubst_copy_and_build): Use finish_compound_literal.
701
702 2006-10-16  Mark Mitchell  <mark@codesourcery.com>
703
704         PR c++/27270
705         * typeck2.c (process_init_constructor_array): Reword comment.
706         * pt.c (tsubst_copy_and_built): Call reshape_init before calling
707         digest_init.
708
709         PR c++/29408
710         * parser.c (cp_parser_using_declaration): Stop parsing when
711         something goes wrong with an access declaration.
712
713         PR c++/29435
714         * typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent
715         types when their sizes are required.  Refine test for VLAs.
716
717         PR c++/28211
718         * parser.c (cp_parser_template_argument): Don't consider "&var" a
719         possible constant-expression.
720         * pt.c (convert_nontype_argument): Refine handling of arguments of
721         pointer type.
722
723 2006-10-13  Mark Mitchell  <mark@codesourcery.com>
724
725         PR c++/28506
726         * parser.c (function_declarator_p): New function.
727         (cp_parser_init_declarator): Use it.
728         (cp_parser_member_declaration): Likewise.
729
730 2006-10-12  Mark Mitchell  <mark@codesourcery.com>
731
732         PR c++/29318
733         * rtti.c (get_tinfo_decl): Refuse to create type info objects for
734         variably modified types.
735
736 2006-10-12 Lee Millward <lee.millward@codesourcery.com>
737
738        PR c++/27961
739        * decl.c (start_decl): Return error_mark_node if a
740        function is initialized like a variable.
741        (check_var_type): If a variable of field is declared void,
742        set the type to error_mark_node.
743        (grokdeclarator): Check the return type of check_var_type.
744        * class.c (finish_struct_1): Robustify.
745
746 2006-10-11  Mark Mitchell  <mark@codesourcery.com>
747
748         PR c++/29175
749         * decl.c (check_initializer): Issue errors about trying to
750         initialize arrays whose elements have variable size.
751
752 2006-10-11  Lee Millward  <lee.millward@codesourcery.com>
753
754         PR c++/29024
755         * cp-tree (struct cp_decl_specifier_seq): Rename to
756         conflicting_specifiers_p
757         * parser.c (cp_parser_set_storage_class): Set
758         conflicting_specifiers_p for the input decl specifier
759         if a typedef specifier is present. Rename uses of
760         multiple_specifiers_p to conflicting_specifiers_p.
761         (cp_parser_decl_specifier_seq) <RID_TYPEDEF>: If a storage
762         class specifier has already been set for this declaration,
763         set conflicting_specifiers_p to true on the decl_specs.
764         * decl.c (grokdeclarator): Rename uses of
765         multiple_specifiers_p to conflicting_specifiers_p.
766
767 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
768
769         * Make-lang.in: Added "c++.pdf" target support.
770
771 2006-10-10  Richard Guenther  <rguenther@suse.de>
772
773         PR rtl-optimization/29323
774         * decl.c (finish_function): Set TREE_NOTHROW only for
775         functions that bind local.
776
777 2006-10-09  Richard Henderson  <rth@redhat.com>
778
779         Revert emutls patch.
780
781 2006-10-04  Richard Henderson  <rth@redhat.com>
782             Jakub Jelinek  <jakub@redhat.com>
783
784         * decl.c (grokvardecl): Don't error if !have_tls.
785         (grokdeclarator): Likewise.
786         * parser.c (cp_parser_omp_threadprivate): Likewise.
787
788 2006-10-03  Mark Mitchell  <mark@codesourcery.com>
789
790         PR c++/29020
791         * friend.c (do_friend): Improve comments; add assertion.
792         * parser.c (cp_parser_nested_name_specifier_opt): Resolve
793         typenames for qualified names used in declarations, even when
794         caching qualified name lookup.
795
796         PR c++/29138
797         * decl2.c (grokfield): Don't handle access declarations here.
798         * parser.c (cp_parser_using_declaration): Handle access
799         declarations too.
800         (cp_parser_block_declaration): Adjust calls to
801         cp_parser_using_declaration.
802         (cp_parser_member_declaration): Likewise.  Use
803         cp_parser_using_declaration to look for access_declarations.
804
805 2006-10-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
806
807         PR c++/29291
808         * init.c (build_new): Check for invalid init.
809
810 2006-10-02  Mark Mitchell  <mark@codesourcery.com>
811
812         PR c++/29226
813         * typeck.c (cxx_sizeof_or_alignof_type): Tidy.  In templates, do
814         not try to actually evaluate sizeof for a VLA type.
815
816 2006-10-01  Mark Mitchell  <mark@codesourcery.com>
817
818         PR c++/29105
819         * pt.c (tsubst_baselink): Substituteinto the qualifying scope.
820         * semantics.c (baselink_for_fns): Build a baselink, even when
821         processing a template.
822
823         PR c++/29080
824         * parser.c (cp_parser_postfix_dot_deref_expression): Use
825         BASELINK_ACCESS_BINFO as the qualifying scope when calling
826         adjust_result_of_qualified_name_lookup.
827
828 2006-09-25  Lee Millward  <lee.millward@codesourcery.com>
829
830         PR c++/27329
831         PR c++/26938
832         * cp-tree.h (redeclare_class_template): Adjust declaration
833         to return bool instead of void.
834         * pt.c (redeclare_class_template): Update definition.
835         Return false on error.
836         * decl.c (xref_tag): Return error_mark_node if
837         redeclare_class_template returned false.
838
839         PR c++/27667
840         * cp-tree.h (begin_specialization): Return bool
841         instead of void.
842         * pt.c (check_specialization_scope): Likwise.
843         Adjust comment. Return false if a specialization
844         isn't permitted in the current scope.
845         (begin_specialization): Use the return value of
846         check_specialization_scope.
847         * parser.c (cp_parser_explicit_specialization): If
848         begin_specialization returned false, skip the rest
849         of the specialization.
850
851 2006-09-21  Mark Mitchell  <mark@codesourcery.com>
852
853         PR c++/29016
854         * typeck.c (build_unary_op): Don't form an ADDR_EXPR around a
855         BASELINK.
856
857 2006-09-21  Lee Millward  <lee.millward@codesourcery.com>
858
859         PR c++/28861
860         * decl.c (shadow_tag): Return error_mark_node
861         if maybe_process_partial_specialization failed.
862
863         PR c++/28303
864         * decl.c (grokdeclarator): Return error_mark_node on
865         declaration with two or more data types.
866
867 2006-09-20  Danny Smith  <dannysmith@users.sourceforge.net>
868
869         PR target/27650
870         * class.c (check_for_override): Remove dllimport from virtual
871         methods.
872
873 2006-09-18  Steven Bosscher  <steven@gcc.gnu.org>
874
875         PR c++/29087
876         * parser.c (cp_parser_labeled_statement): Return nothing.  Do
877         not take in_statement_expr and in_compound as arguments.  Rename
878         to cp_parser_label_for_labeled_statement.  Parse only the label,
879         not the statement.
880         (cp_parser_statement): Parse the statement of a labeled-statement
881         from here, using tail recursion.
882
883 2006-09-14  Andrew Pinski  <pinskia@physics.uc.edu>
884
885         PR C++/29002
886         * init.c (build_zero_init): If we have an error mark node for
887         the array size, return.
888
889 2006-09-10  Mark Mitchell  <mark@codesourcery.com>
890
891         PR c++/28991
892         * cp-objcp-common.c (cxx_staticp): New function.
893         * cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
894         * cp-tree.h (cxx_staticp): New function.
895
896 2006-09-09  Jason Merrill  <jason@redhat.com>
897
898         PR c++/28996
899         * cvt.c (convert_to_void): Strip COMPONENT_REF to functions.
900
901 2006-09-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
902
903         PR c++/28858
904         * parser.c (cp_parser_skip_until_found): Rename to
905         cp_parser_skip_to_end_of_template_parameter_list.  Remove last two
906         parameters.  Track levels of '< ... >'.  Stop at '{', '}', or ';'.
907         Reorganize.  Adjust comment.
908         (cp_parser_template_declaration_after_export): Adjust call.
909         (cp_parser_enclosed_template_argument_list): Likewise.
910
911 2006-09-07  Andrew Pinski  <pinskia@physics.uc.edu>
912
913         PR C++/28906
914         * init.c (build_new_1): Build a distinct type copy
915         for the array type that was returned from
916         build_cplus_array_type.
917
918 2006-09-07  Jason Merrill  <jason@redhat.com>
919
920         PR c++/27371
921         * cvt.c (convert_to_void): Enable previous change.
922
923         PR c++/26957
924         * method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
925         parms.
926
927 2006-09-07  Simon Martin  <simartin@users.sourceforge.net>
928
929         PR c++/28284
930         * pt.c (fold_non_dependent_expr): Make sure expr is not
931         dereferenced if it is NULL.
932
933 2006-09-06  Zak Kipling  <zak@transversal.com>
934
935         PR c++/26195
936         * decl.c (make_rtl_for_nonlocal_decl),
937         (start_preparsed_function): Don't use lbasename on
938         input_filename when calling get_fileinfo.
939         * semantics.c (begin_class_definition): Likewise.
940         * lex.c (cxx_make_type): Likewise.
941         (handle_pragma_interface): Call get_fileinfo on input_filename,
942         not on the parameter to the directive.
943
944 2006-09-06  Mark Mitchell  <mark@codesourcery.com>
945
946         PR c++/28903
947         * pt.c (tsubst): Use fold_non_dependent_expr to fold array
948         dimensions.
949
950         PR c++/28886
951         * pt.c (unify): Avoid unnecessary calls to fold_build2 for array
952         dimensions.
953
954 2006-09-06  Jason Merrill  <jason@redhat.com>
955
956         PR c++/27371
957         * cvt.c (convert_to_void): Strip useless TARGET_EXPR.
958         * cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
959         * tree.c (build_cplus_new): Set it.
960
961         PR c++/26696
962         * cvt.c (convert_to_void): Replace a subexpression with no side
963         effects with void_zero_node.
964         * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
965         (get_first_fn): Ditto.
966         * decl.c (grokdeclarator): No need to look through COMPONENT_REF.
967
968 2006-09-05  Jason Merrill  <jason@redhat.com>
969
970         PR c++/26571
971         * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
972         where the name is a type used incorrectly.
973
974         PR c++/26671
975         * typeck.c (maybe_warn_about_returning_address_of_local): Look
976         through COMPONENT_REF and ARRAY_REF.
977
978         PR c++/26102
979         * name-lookup.c (do_class_using_decl): Try to find the base even
980         if bases_dependent_p.
981         * pt.c (type_dependent_expression_p): A USING_DECL is dependent.
982
983         PR c++/19809
984         * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
985
986 2006-09-04  Nathan Sidwell  <nathan@codesourcery.com>
987
988         PR 23287 Revert my 2006-09-01 patch.
989         * parser.c: Reverted.
990         * pt.c: Reverted.
991
992 2006-09-02  Lee Millward  <lee.millward@codesourcery.com>
993
994         PR c++/27670
995         PR c++/27493
996         PR c++/27494
997         PR c++/27397
998         * parser.c (cp_parser_template_parameter_list): Add
999         invalid template parameters to the parameter list as
1000         error_mark_node.
1001
1002 2006-09-02  Jakub Jelinek  <jakub@redhat.com>
1003
1004         PR c++/28878
1005         * except.c (build_throw): Only set current_function_returns_abnormally
1006         if cfun is not NULL.
1007
1008         PR c++/26917
1009         * repo.c (repo_file): Remove.
1010         (open_repo_file, reopen_repo_file_for_write): Return fopened
1011         FILE * instead of setting global repo_file variable.
1012         (init_repo): Adjust caller.
1013         (finish_repo): Likewise.  Return instead of goto out before
1014         reopen_repo_file_for_write has been called.
1015
1016 2006-09-01  Nathan Sidwell  <nathan@codesourcery.com>
1017
1018         PR c++/28705
1019         * semantics.c (finish_call_expr): Add assert.
1020         * name-lookup.c (lookup_arg_dependent): Check we found an overload
1021         or an object.
1022
1023         PR c++/23287
1024         * parser.c (cp_parser_id_expression): Add member_p
1025         argument. Update all callers.
1026         (cp_parser_unqualified_id): Likewise.  Lookup a destructor name in
1027         the object's scope, if valid.
1028         (cp_parser_global_scope_opt): Add object_scope_valid_p.  Update
1029         callers.
1030         (cp_parser_postfix_dot_deref_expression): Set object_scope.
1031         * pt.c (tsubst_copy_and_build): Lookup dependent dtor name here.
1032
1033 2006-08-30  Jason Merrill  <jason@redhat.com>
1034
1035         PR c++/26670
1036         * class.c (check_field_decls): Don't unset TYPE_PACKED until all
1037         the fields have been processed.
1038
1039 2006-08-29  Andrew Pinski  <pinskia@physics.uc.edu>
1040
1041         PR C++/28349
1042         * call.c (build_x_va_arg): Remove the reference type
1043         from the type before creating the pointer type.
1044
1045 2006-08-29  J"orn Rennecke  <joern.rennecke@st.com>
1046
1047         PR c++/28139
1048         * except.c (expand_start_catch_block): Use correct types for bitwise
1049         copy.
1050
1051 2006-08-28  Jason Merrill  <jason@redhat.com>
1052
1053         PR c++/26670
1054         * class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
1055         fields can't be packed.
1056
1057         PR c++/26577
1058         * cvt.c (convert_to_void): Don't automatically load from volatiles
1059         of TREE_ADDRESSABLE type.
1060
1061 2006-08-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1062
1063         PR c++/28860
1064         * cp-tree.h (maybe_process_partial_specialization): Return
1065         tree instead of void.
1066         * parser.c (cp_parser_class_head): Use return value of
1067         maybe_process_partial_specialization.
1068         * pt.c (maybe_process_partial_specialization): Return error_mark_node
1069         for broken specializations, TYPE otherwise.  Check for template
1070         template parameters.
1071
1072 2006-08-27  Mark Mitchell  <mark@codesourcery.com>
1073
1074         PR c++/28058
1075         * pt.c (register_specialization): Return error_mark_node for
1076         specialization-after-instantiation.
1077         * decl2.c (mark_used): Mark the main function used when one of its
1078         clones is used.
1079
1080 2006-08-27  Lee Millward  <lee.millward@codesourcery.com>
1081
1082         PR c++/26573
1083         * class.c (check_field_decls): Don't issue error about
1084         local classes containing static data members.
1085
1086 2006-08-26  Joseph S. Myers  <joseph@codesourcery.com>
1087
1088         PR c++/24009
1089         * parser.c (struct cp_token): Add input_file_stack_index.
1090         (eof_token): Update.
1091         (cp_lexer_get_preprocessor_token): Save input_file_stack_tick.
1092         (cp_lexer_set_source_position_from_token): Restore input file
1093         stack.
1094
1095 2006-08-26  Lee Millward  <lee.millward@codesourcery.com>
1096
1097         PR c++/28736
1098         PR c++/28737
1099         PR c++/28738
1100         * pt.c (process_template_parm): Store invalid template
1101         parameters as a TREE_LIST with a TREE_VALUE of error_mark_node.
1102         (push_inline_template_parms_recursive): Check for template
1103         parameters having a TREE_VALUE of error_mark_node rather than
1104         check the parameter itself.
1105         (mangle_class_name_for_template): Likewise.
1106         (comp_template_parms): When comparing the individual template
1107         parameters, return 1 if either is error_mark_node.
1108         (current_template_args): Robustify.
1109         (redeclare_class_template): Likewise.
1110
1111 2006-08-26  Mark Mitchell  <mark@codesourcery.com>
1112
1113         PR c++/28588
1114         * class.c (resolve_address_of_overloaded_function): Add
1115         access_path parameter.  Perform access checks.
1116         (instantiate_type): Adjust call to
1117         resolve_address_of_overloaded_function.  Remove unnecessary code.
1118         * tree.c (is_overloaded_fn): Document.  Return 2 when there are
1119         acutally multiple functions.
1120         (really_overloaded_fn): Use is_overloaded_fn.
1121         * mangle.c (write_expression): Handle BASELINKs.
1122         * cp-tree.h (really_overloaded_fn): Return bool.
1123         (baselink_for_fns): Declare.
1124         * search.c (lookup_member): Check access for single static
1125         functions here.
1126         * pt.c (convert_nontype_argument_function): Handle BASELINKs.
1127         (tsubst_copy_and_build): Generate BASELINKs for template-ids.
1128         * semantics.c (finish_call_expr): Use baselink_for_fns.
1129         (baselink_for_fns): New function.
1130         (finish_id_expression): Use it.
1131         * parser.c (cp_parser_template_argument): Don't strip BASELINKs.
1132
1133         PR c++/28595
1134         * pt.c (tsubst): Issue errors about attempts to create VLAs at
1135         template-instantiation time.
1136
1137 2006-08-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1138
1139         PR c++/28853
1140         * typeck2.c (cxx_incomplete_type_diagnostic): Handle template
1141         template parameters.  Improve error message for template type
1142         parameters.
1143
1144         PR c++/28852
1145         * cp-tree.h (grok_op_properties): Return bool instead of void.
1146         * decl.c (grokfndecl): Discard invalid operator declarations.
1147         (copy_fn_p): Revert change for PR 27547.
1148         (grok_op_properties): Return error status (true on success).
1149         * pt.c (tsubst_decl): Discard invalid operator declarations.
1150
1151 2006-08-25  Mark Mitchell  <mark@codesourcery.com>
1152
1153         PR c++/28056
1154         * decl.c (grokdeclarator): Disallow declarations with qualified
1155         names in local scopes.
1156
1157 2006-08-25  Nathan Sidwell  <nathan@codesourcery.com>
1158
1159         PR c++/27787
1160         * decl.c (make_typename_type): Only try and resolve it when
1161         context is not dependent.  Refactor.
1162         * decl2.c (check_classfn): Push to class scope before looking for
1163         the function.
1164
1165 2006-08-24  Danny Smith   <dannysmith@users.sourceforge.net>
1166
1167         PR driver/28528
1168         * g++spec.c (lang_specific_driver): Always check if we need to
1169         swallow a space-separated  arg to '-x'.
1170         * lang-specs.h: Don't create ouput files for '-xc++-header'
1171         if -fsyntax-only.
1172
1173 2006-08-23  Jason Merrill  <jason@redhat.com>
1174
1175         PR c++/27714
1176         * pt.c (push_template_decl_real): A friend template with class
1177         scope isn't primary.
1178
1179 2006-08-23  Benjamin Smedberg <benjamin@smedbergs.us>
1180
1181         PR c++/28687
1182         * rtti.c (build_dynamic_cast, build_dynamic_cast_1):
1183         Move -fno-rtti check to be more specific.
1184
1185 2006-08-22  Jason Merrill  <jason@redhat.com>
1186
1187         PR c++/23372
1188         * call.c (build_over_call): Don't make a copy here if build_call
1189         will make one too.
1190
1191 2006-08-22  Andrew Pinski  <pinskia@physics.uc.edu>
1192
1193         PR C++/28450
1194         * cp/init.c (build_zero_init): Handle VECTOR_TYPE and
1195         COMPLEX_TYPEs.
1196
1197 2006-08-22  Simon Martin  <simartin@users.sourceforge.net>
1198
1199         PR c++/28420
1200         * parser.c (cp_parser_postfix_expression): Make sure that the
1201         saved value for parser->type_definition_forbidden_message is
1202         restored before returning to avoid an invalid free().
1203
1204 2006-08-22  Jason Merrill  <jason@redhat.com>
1205
1206         PR c++/28659
1207         * typeck.c (merge_types): If either of the types have the right
1208         attributes, return that one.
1209
1210         * tree.c (cp_build_type_attribute_variant): Make sure we aren't
1211         doing this to class types.
1212         * typeck.c (original_type): Deal with type quals properly.
1213
1214 2006-08-21  Jason Merrill  <jason@redhat.com>
1215
1216         PR c++/27115
1217         * semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
1218         just leave the expression as it is.
1219         (finish_stmt_expr): If the statement-expression has class type,
1220         wrap it in a TARGET_EXPR.
1221         * cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
1222         CLEANUP_POINT_EXPR.
1223         * except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.
1224
1225 2006-08-21  Lee Millward  <lee.millward@codesourcery.com>
1226
1227         PR c++/26269
1228         * decl.c (duplicate_decls): Return early if either
1229         newdecl or olddecl is error_mark_node.
1230
1231          PR c++/28505
1232         * decl.c (grokdeclarator): Return early after
1233         issuing diagnostic about an incomplete type.
1234
1235         PR c++/28741
1236         * tree.c (decl_anon_ns_mem_p): Robustify.
1237         * decl2.c (determine_visibility): Likewise.
1238
1239 2006-08-20  Mark Mitchell  <mark@codesourcery.com>
1240
1241         PR c++/28341
1242         * tree.c (cast_valid_in_integral_constant_expression_p): New
1243         function.
1244         * cp-tree.h (tsubst_copy_and_build): Adjust prototype.
1245         * pt.c (tsubst_expr): Add integral_constant_expression_p
1246         parameter.
1247         (fold_non_dependent_expr): Adjust callers of
1248         tsubst_{expr,copy_and_build}.
1249         (tsubst_friend_function): Likewise.
1250         (tsubst_template_arg): Likewise.
1251         (tsubst_default_argument): Likewise.
1252         (tsubst_decl): Likewise.
1253         (tsubst): Likewise.
1254         (tsubst_omp_clasuses): Likewise.
1255         (regenerate_decl_fromp_template): Likewise.
1256         (instantiate_decl): Likewise.
1257         (tsubst_initializer_list): Likewise.
1258         (tsubst_enum): Likewise.
1259         (tsubst_expr): Use RECUR throughout.
1260         (tsubst_copy_and_build): Change definition of RECUR.  Do not allow
1261         invalid casts in integral constant expressions.
1262         * parser.c (cp_parser_postfix_expression): Use
1263         cast_valid_in_integral_constant_expression_p.
1264         (cp_parser_cast_expression): Likewise.
1265         (cp_parser_functional_cast): Likewise.
1266
1267         PR c++/28346
1268         * pt.c (tsubst_qualified_id): Do not strip references from
1269         OFFSET_REFs.
1270
1271 2006-08-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1272
1273         PR c++/28606
1274         * parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
1275         Fix formatting.
1276         (cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
1277         for valid type-names.
1278         (cp_parser_unqualified_id): Fix error handling for destructors.
1279
1280         PR c++/28710
1281         * decl.c (xref_tag): Improve error message.  Return early on error.
1282
1283         PR c++/28711
1284         * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Robustify.
1285
1286 2006-08-17  Paolo Bonzini  <bonzini@gnu.org>
1287
1288         PR c++/28573
1289         * semantics.c (finish_offsetof): Add new argument to fold_offsetof.
1290
1291 2006-08-16  Andrew Pinski  <pinskia@physics.uc.edu>
1292
1293         PR c++/28302
1294         * typeck.c (build_unary_op <case BIT_NOT_EXPR:>): Don't call
1295         perform_integral_promotions for non integral type.
1296
1297 2006-08-16  Jason Merrill  <jason@redhat.com>
1298
1299         PR c++/28385
1300         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
1301         if arg is a function.
1302
1303 2006-08-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1304
1305         PR c++/28593
1306         * init.c (build_new): Return early on invalid placement.
1307
1308 2006-08-15  Lee Millward  <lee.millward@codesourcery.com>
1309
1310         PR c++/28594
1311         * pt.c (process_template_parm): Robustify.
1312
1313 2006-08-14  Steve Ellcey  <sje@cup.hp.com>
1314
1315         PR c++/28288
1316         PR c++/14556
1317         * operators.def: Remove <?, ?>, <?=, and >?= operators.
1318         * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
1319         (cp_parser_warn_min_max): Remove.
1320
1321 2006-08-11  Jason Merrill  <jason@redhat.com>
1322
1323         PR c++/28559
1324         * parser.c (cp_parser_elaborated_type_specifier): Also ignore
1325         attributes applied to a TYPENAME_TYPE.
1326
1327 2006-08-09  Lee Millward  <lee.millward@codesourcery.com>
1328
1329         PR c++/28637
1330         * pt.c (coerce_template_parms): Copy across the
1331         invalid template arguments to the new template inner arguments.
1332         (retrieve_specialization): Robustify.
1333
1334         PR c++/28638
1335         * pt.c (coerce_template_template_parms): Robustify.
1336
1337         PR c++/28639
1338         * error.c (dump_template_parms): Robustify.
1339
1340         PR c++/28640
1341         * pt.c (redeclare_class_template): Robustify.
1342
1343         PR c++/28641
1344         * pt.c (type_unification_real): Robustify.
1345
1346 2006-08-03  Lee Millward  <lee.millward@codesourcery.com>
1347
1348         PR c++/28347
1349         * decl.c (start_decl): Return error_mark_node if a
1350         diagnostic was issed for an invalid typedef initialization.
1351
1352 2006-08-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1353
1354         PR c++/27508
1355         * parser.c (cp_parser_unqualified_id): Check for invalid scopes
1356         when parsing destructor names.
1357
1358         PR c++/28274
1359         * decl.c (duplicate_decls): Call check_default_args here.
1360         (start_preparsed_function): Do not call check_default_args.
1361         * name-lookup.c (pushdecl_maybe_friend): Only call
1362         check_default_args if duplicate_decls got bypassed.
1363
1364 2006-08-02  Richard Guenther  <rguenther@suse.de>
1365
1366         PR c++/28479
1367         Revert
1368         2006-07-05  Richard Guenther  <rguenther@suse.de>
1369         Andrew Pinski  <pinskia@gcc.gnu.org>
1370
1371         PR c++/27084
1372         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
1373         top level qualifiers for pointer type comparisons.
1374
1375 2006-08-02  Mark Mitchell  <mark@codesourcery.com>
1376
1377         PR c++/28557
1378         * pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.
1379
1380 2006-07-31  Mark Mitchell  <mark@codesourcery.com>
1381
1382         PR c++/28523
1383         * tree.c (stabilize_expr): Tweak documentation.  Add assertion.
1384         (stabilize_call): Tweak documentation.
1385         (stabilize_init): Only call stabilize_call for calls.
1386
1387 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
1388
1389         PR c++/28432
1390         * decl2.c (check_classfn): Remove early return.
1391         * search.c (lookup_member): Return NULL with bad type.
1392
1393 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
1394
1395         PR c++/28256
1396         * decl.c (check_initializer): Check for 1 initializer on scalar types.
1397
1398 2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
1399
1400         PR debug/23336
1401         * pt.c (tsubst_copy_and_build): Mark used enum types.
1402         * semantics.c (finish_id_expression): Likewise.
1403
1404 2006-07-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1405
1406         PR c++/6634
1407         * decl.c (grokdeclarator): Check whether "long" or "short" was
1408         specified for non-integral types.
1409
1410 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1411
1412         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
1413
1414 2006-07-28  Lee Millward  <lee.millward@codesourcery.com>
1415
1416         PR c++/27668
1417         PR c++/27962
1418         * pt.c (process_template_parm) Store invalid template
1419         parameters as error_mark_node in the paramater list.
1420         (push_inline_template_parms_recursive): Handle invalid
1421         template parameters.
1422         (comp_template_parms): Likewise.
1423         (check_default_tmpl_arg): Likewise.
1424         (coerce_template_template_parms): Likewise.
1425         (mangle_class_name_for_template): Likewise.
1426         (tsubst_template_parms): Likewise.
1427         * error.c (dump_template_argument_list): Likewise.
1428
1429 2006-07-28  Kazu Hirata  <kazu@codesourcery.com>
1430
1431         * cp-tree.h: Fix a comment typo.
1432
1433 2006-07-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1434
1435         PR c++/27572
1436         * decl.c (grokdeclarator): Return error_mark_node after invalid
1437         typedef.
1438
1439 2006-07-23  Daniel Jacobowitz  <dan@codesourcery.com>
1440
1441         PR c++/28460
1442         * decl.c (grokvardecl): Use FROB_CONTEXT.
1443         * pt.c (register_specialization): Likewise.
1444
1445 2006-07-23  Mark Mitchell  <mark@codesourcery.com>
1446
1447         PR c++/28025
1448         * cp-tree.h (LOOKUP_HIDDEN): New macro.  Reformat comments.
1449         * name-lookup.c (unqualified_namespace_lookup): There is no way to
1450         have a hidden name in non-namespace scopes.
1451         * pt.c (tsubst_friend_class): Look for hidden names.
1452         * decl.c (lookup_and_check_tag): Fix typo in comment.
1453
1454         * semantics.c (finish_compound_literal): Fix typo in comment.
1455
1456 2006-07-21  Jason Merrill  <jason@redhat.com>
1457
1458         * decl2.c (determine_visibility): Don't propagate visibility from
1459         type to decl.
1460         (constrain_class_visibility): Don't warn in system headers.
1461         Don't warn about pointer fields.
1462
1463 2006-07-20  Mike Stump  <mrs@apple.com>
1464
1465         * decl2.c (determine_visibility_from_class): Don't use hidden
1466         visibility for explicit instantiations.
1467
1468 2006-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1469
1470         PR c++/28250
1471         * pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
1472         valid decls.  Cleanup.
1473
1474         PR c++/28363
1475         * semantics.c (check_template_template_default_arg): Simplify
1476         error handling.
1477
1478 2006-07-20  Jason Merrill  <jason@redhat.com>
1479
1480         PR c++/28407
1481         * decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
1482         const variables with implicit internal linkage.
1483         * tree.c (decl_linkage): Only return lk_external if it's set.
1484
1485         PR c++/28409
1486         * decl2.c (constrain_visibility): Ignore the anonymous namespace
1487         for extern "C" decls.
1488         (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.
1489
1490         * decl2.c (constrain_visibility): Remove specified and reason
1491         parameters.  Don't touch decls that already have explicit visibility.
1492         (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from
1493         template.
1494         (determine_visibility_from_class): Reverse sense of
1495         DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
1496         (constrain_class_visibility): Only complain about member visibility
1497         if the member type is another class.  Don't change visibility of the
1498         current class.
1499
1500 2006-07-19  Mark Mitchell  <mark@codesourcery.com>
1501
1502         PR c++/28338
1503         * decl.c (layout_var_decl): Don't call push_local_name here.
1504         (initialize_artificial_var): Assert artificiality.
1505         (cp_finish_decl): Call push_local_name here.
1506
1507 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
1508
1509         PR c++/28337
1510         * typeck.c (build_binary_op): Short-circuit pointer arithmetic in
1511         templates.
1512
1513 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
1514
1515         PR c++/28048
1516         * semantics.c (check_accessibility_of_qualified_id): Robustify.
1517
1518         PR c++/28235
1519         * pt.c (tsubst_decl): Handling substitutions into a static data
1520         member from within the scope of the tempalte itself.
1521
1522 2006-07-18  Lee Millward  <lee.millward@gmail.com>
1523
1524         PR c++/28258
1525         * method.c (locate_copy): Check for non_reference
1526         returning error_mark_node.
1527
1528         PR c++/28260
1529         * decl.c (duplicate_decls): Return error_mark_node
1530         on ambiguous declaration.
1531
1532 2006-07-18  Steve Ellcey  <sje@cup.hp.com>
1533
1534         PR c++/27495
1535         * search.c (adjust_result_of_qualified_name_lookup): Change
1536         assert to part of if statement.
1537
1538 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
1539
1540         PR c++/28291
1541         * decl.c (reshape_init_class): Return error_mark_node on error.
1542
1543 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
1544
1545         PR c++/28304
1546         * decl2.c (check_classfn): Return NULL_TREE on error.
1547
1548 2006-07-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1549
1550         PR c++/28250
1551         * name-lookup.c (pushdecl_maybe_friend): Return early on
1552         error_mark_node.
1553         * except.c (expand_start_catch_block): Use error_mark_node instead
1554         of NULL_TREE for invalid decls.
1555         * parser.c (cp_parser_exception_declaration): Return error_mark_node
1556         on invalid catch parameter. Simplify.
1557
1558 2006-07-16  Jakub Jelinek  <jakub@redhat.com>
1559
1560         PR c++/28370
1561         * decl2.c (note_vague_linkage_var): Removed.
1562         (finish_static_data_member_decl): Add decl to pending_statics vector
1563         directly.  Do it even for non-public decls.
1564
1565 2006-07-15  Lee Millward  <lee.millward@gmail.com>
1566
1567         PR c++/28292
1568         * decl2.c (acceptable_java_type): Robustify. Use
1569         proper Boolean return type instead of return 1.
1570         (check_java_method): Don't issue error about
1571         type not being an acceptable Java parameter if
1572         it's error_mark_node.
1573
1574         PR c++/28269
1575         * parser.c (cp_parser_elaborated_type_specifier):
1576         Return early if an invalid type was detected.
1577
1578 2006-07-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1579
1580         PR c++/28249
1581         * parser.c (cp_parser_check_decl_spec): New function.
1582         (cp_parser_decl_specifier_seq): Factor out check for repeated
1583         decl-specifiers into cp_parser_check_decl_spec. Use it.
1584         (cp_parser_type_specifier_seq): Use it.
1585
1586         PR c++/28294
1587         * semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
1588         only.
1589
1590         PR c++/28387
1591         * decl2.c (cplus_decl_attributes): Check for invalid decls.
1592
1593 2006-07-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1594
1595         PR c++/28343
1596         * decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
1597         * decl2.c (grokfield): Likewise.
1598
1599 2006-07-12  Geoffrey Keating  <geoffk@apple.com>
1600
1601         * decl2.c (determine_visibility): Don't change visibility of
1602         function locals because of -fvisibility-inlines-hidden.
1603
1604 2006-07-12  Jason Merrill  <jason@redhat.com>
1605
1606         PR c++/28217
1607         * semantics.c (note_decl_for_pch): Don't premangle templates.
1608
1609 2006-07-12  Martin Michlmayr  <tbm@cyrius.com>
1610
1611         * typeck.c (string_conv_p): Remove spurious quotation mark in
1612         warning.
1613
1614 2006-07-07  Lee Millward  <lee.millward@gmail.com>
1615             Andrew Pinski  <pinskia@gmail.com>
1616
1617         PR c++/27820
1618         * decl.c (define_label): Return error_mark_node on error.
1619         * semantics.c (finish_label_stmt): Don't call
1620         add_stmt for invalid labels.
1621
1622 2006-07-06  Jason Merrill  <jason@redhat.com>
1623
1624         PR c++/28279
1625         * decl2.c (finish_static_data_member_decl): Don't assert
1626         TREE_PUBLIC.
1627
1628 2006-07-05  Jason Merrill  <jason@redhat.com>
1629
1630         PR c++/13983
1631         PR c++/17519
1632         * class.c (check_field_decls): Check TYPE_PACKED after
1633         stripping array types.
1634         (finish_struct_bits): Don't copy TYPE_SIZE here.
1635
1636         PR c++/18681
1637         * friend.c (is_friend): Fix DR 45 implementation.
1638
1639 2006-07-05  Richard Guenther  <rguenther@suse.de>
1640         Andrew Pinski  <pinskia@gcc.gnu.org>
1641
1642         PR c++/27084
1643         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
1644         top level qualifiers for pointer type comparisons.
1645
1646 2006-07-01  Jason Merrill  <jason@redhat.com>
1647
1648         PR c++/28215
1649         * method.c (make_thunk): Unset DECL_USE_TEMPLATE and
1650         DECL_TEMPLATE_INFO.
1651
1652 2006-06-30  Jason Merrill  <jason@redhat.com>
1653
1654         PR c++/26577
1655         * call.c (build_new_method_call): Force evaluation of the
1656         instance pointer, not the object.
1657
1658 2006-06-30  Kazu Hirata  <kazu@codesourcery.com>
1659
1660         * decl2.c: Fix a comment typo.
1661
1662 2006-06-30  Jason Merrill  <jason@redhat.com>
1663
1664         PR c++/18698
1665         * decl2.c (grokfield): Only try to treat the decl as an access
1666         declaration if the scope is a class.
1667
1668 2006-06-29  Jason Merrill  <jason@redhat.com>
1669
1670         PR c++/26905
1671         PR c++/26612
1672         PR c++/27000
1673         PR c++/26984
1674         PR c++/19134
1675         * decl2.c (determine_visibility): Overhaul.
1676         (determine_visibility_from_class): Likewise.
1677         (min_vis_r, type_visibility, constrain_visibility): New fns.
1678         (constrain_visibility_for_template): Likewise.
1679         (constrain_class_visibility): Likewise.
1680         * decl.c (cp_finish_decl): Call determine_visibility for function
1681         decls, too.
1682         * name-lookup.c (pushtag): Call determine_visibility.
1683         * decl.c (duplicate_decls): Don't copy visibility from template to
1684         specialization.
1685         * pt.c (check_explicit_specialization): Likewise.
1686         (lookup_template_class, tsubst_decl): Call determine_visibility.
1687         * class.c (finish_struct_1): Call constrain_class_visibility.
1688
1689         PR c++/26905
1690         PR c++/21675
1691         PR c++/17470
1692         * parser.c (cp_parser_explicit_instantiation): Pass the attributes
1693         to grokdeclarator.
1694         (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
1695         (cp_parser_enum_specifier): Likewise.
1696         (cp_parser_elaborated_type_specifier): Apply attributes if this
1697         declares only the class.
1698         (cp_parser_class_specifier): Apply leading attributes immediately.
1699         * semantics.c (begin_class_definition): Add attributes parameter,
1700         apply them to the type.
1701
1702         PR c++/21581
1703         PR c++/25915
1704         * tree.c (decl_anon_ns_mem_p): New function.
1705         * cp-tree.h: Declare it.
1706         * decl2.c (determine_visibility): Make anonymous namespace
1707         members static.
1708         (min_vis_r, constrain_visibility): Likewise.
1709         * rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
1710         pseudo-types.
1711         * decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
1712         global_namespace.
1713         * name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
1714         on anonymous namespaces.
1715
1716 2006-06-28  Jason Merrill  <jason@redhat.com>
1717
1718         PR c++/27424
1719         * pt.c (convert_template_argument): Pass all template arguments
1720         on to coerce_template_template_parms.
1721
1722 2006-06-25  Lee Millward  <lee.millward@gmail.com>
1723             Mark Mitchell <mark@codesuorcery.com>
1724
1725         PR c++/28054
1726         * decl2.c (grokbitfied): Remove check for grokdeclarator
1727         returning NULL_TREE, instead check for error_mark_node
1728         to indicate failure.
1729         * decl.c (grokdeclarator): Adjust block comment.
1730
1731 2006-06-25  Lee Millward  <lee.millward@gmail.com>
1732
1733         PR c++/28051
1734         * mangle.c (mangle_conv_op_name_for_type): Check for
1735         invalid types.
1736         * name-lookup.c (push_class_level_binding): Robustify.
1737         (do_class_using_decl): Return early if name is error_mark_node.
1738
1739 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
1740
1741         PR c++/28114
1742         * name-lookup.c (pushtag): Return if we have error_mark_node.
1743
1744 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
1745
1746         PR c++/27019
1747         * typeck2.c (process_init_constructor_array): Set ce->value on errors.
1748
1749 2006-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1750
1751         PR c++/28112
1752         * parser.c (cp_parser_attribute_list): Skip attributes with invalid
1753         arguments.  Fix comment.
1754
1755         PR c++/11468
1756         * init.c (build_new_1): Handle error_mark_nodes returned by
1757         build_java_class_ref.
1758         (build_java_class_ref): Do not abort compilation, but return
1759         error_mark_node.  Improve error message.  Fix indentation.
1760
1761 2006-06-23  Danny Smith   <dannysmith@users.sourceforge.net>
1762
1763         PR target/27789
1764         * decl.c (start_decl): Check that dllimports are not initialized.
1765
1766 2006-06-22  Lee Millward  <lee.millward@gmail.com>
1767
1768         PR c++/27805
1769         * typeck2.c (build_m_component_ref): Use error_operand_p.
1770
1771         PR c++/27821
1772         * decl.c (grokdeclarator): Return error_mark_node on
1773         invalid uses of the scope resolution operator.
1774
1775 2006-06-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1776
1777         PR c++/28111
1778         * pt.c (determine_specialization): Check for invalid decls.
1779
1780         PR c++/28110
1781         * pt.c (unify) <case TEMPLATE_PARM_INDEX>: Check for invalid
1782         parameters.
1783
1784         PR c++/28109
1785         * rtti.c (get_tinfo_decl_dynamic): Robustify.
1786
1787 2006-06-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1788
1789         PR c++/28052
1790         * init.c (push_base_cleanups): Skip members with invalid types.
1791         * typeck.c (build_class_member_access_expr): Robustify.
1792
1793 2006-06-19  Mark Mitchell  <mark@codesourcery.com>
1794
1795         * pt.c (instantiate_template): Fix typo in comment.
1796
1797 2006-06-19  Richard Guenther  <rguenther@suse.de>
1798
1799         * parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near
1800         power-of-two token vector size.
1801
1802 2006-06-16  Mark Mitchell  <mark@codesourcery.com>
1803
1804         PR c++/28016
1805         * decl.c (cp_finsh_decl): Do not emit uninstantiated static data
1806         members.
1807
1808         PR c++/27979
1809         * call.c (standard_conversion): Strip cv-qualifiers from bitfield
1810         types.
1811
1812         PR c++/27884
1813         * decl.c (have_extern_spec): Remove.
1814         (start_decl): Do not check have_extern_spec.
1815         (start_function): Likewise.
1816         * cp-tree.h (have_extern_spec): Remove.
1817         * parser.c (cp_parser_linkage_specification): Don't set
1818         have_extern_spec.
1819         (cp_parser_init_declarator): Likewise.
1820         (cp_parser_parameter_declaration): Do not treat parameters as
1821         within the scope of an unbraced linkage specification.
1822
1823 2006-06-15  Mark Mitchell  <mark@codesourcery.com>
1824
1825         PR c++/27689
1826         * cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New
1827         macro.
1828         * pt.c (unify): Use it.
1829
1830         PR c++/27666
1831         * call.c (build_conditional_expr): Robustify.
1832
1833         PR c++/27640
1834         * pt.c (instantiate_template): Set processing_template_decl to
1835         zero while performing substitutions.
1836
1837 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
1838
1839         PR c++/27665
1840         * parser.c (cp_parser_unqualified_id): Use constructor_name_p to
1841         identify destructors.
1842         (cp_parser_nested_name_specifier_opt): Remove invalid
1843         optimization.
1844         (cp_parser_template_id): Refine heuristic for determining whether
1845         we are entering a scope.
1846
1847         PR c++/27648
1848         * parser.c (cp_parser_declarator): Robustify.
1849
1850         PR c++/26559
1851         * pt.c (tsubst_expr): Use finish_omp_atomic.
1852         (value_dependent_expression_p): All CALL_EXPRs are dependent.
1853         * semantics.c (finish_omp_atomic): Rework to use standard
1854         paradigms for handling non-dependent expressions.
1855
1856 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1857
1858         * typeck.c (build_modify_expr): Tidy diagnostic message.
1859
1860 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
1861
1862         PR c++/28018
1863         * typeck.c (build_modify_expr): Disallow array assignment.
1864
1865 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1866
1867         * cp-tree.def: Fix typo.
1868
1869 2006-06-13  Mark Mitchell  <mark@codesourcery.com>
1870
1871         PR c++/27227
1872         * decl.c (decls_match): Allow an extern "C" variable declarations
1873         from different namespaces to match.
1874         (duplicate_decls): Disallow redeclaring a variable with a
1875         different linkage specification.
1876
1877 2006-06-13  Jakub Jelinek  <jakub@redhat.com>
1878
1879         PR middle-end/27793
1880         * cp-tree.h (cxx_int_tree_map): New struct.
1881         (struct language_function): Add extern_decl_map field.
1882         * name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
1883         to cp_function_chain->extern_decl_map hash table instead of
1884         copying over DECL_UID.
1885         * cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
1886         functions.
1887         (cp_genericize_r): Remap DECL_EXTERN local decls using
1888         cp_function_chain->extern_decl_map hash table.
1889         * decl.c (finish_function): Clear extern_decl_map.
1890
1891 2006-06-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1892
1893         PR c++/27601
1894         * semantics.c (finish_offsetof): Handle pseudo-destructors.
1895
1896         PR c++/27933
1897         * name-lookup.c (lookup_qualified_name): Always return error_mark_node
1898         if lookup fails.
1899
1900         PR c++/27951
1901         * decl2.c (finish_anon_union): Return early if build_anon_union_vars
1902         fails.
1903
1904 2006-06-12  Roger Sayle  <roger@eyesopen.com>
1905
1906         PR c++/21210
1907         * typeck2.c (build_functional_cast): Use cp_convert to construct
1908         non-aggregate initializers instead of the user-level build_c_cast.
1909
1910 2006-06-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1911
1912         PR c++/27601
1913         * cp-tree.h (finish_offsetof): Add prototype.
1914         * semantics.c (finish_offsetof): New function.
1915         * parser.c (cp_parser_builtin_offsetof): Call it instead of
1916         fold_offsetof.
1917         * pt.c (tsubst_copy_and_build): Likewise.
1918
1919 2006-06-06  Mark Mitchell  <mark@codesourcery.com>
1920
1921         PR c++/27177
1922         * call.c (standard_conversion): Require that the derived type be
1923         complete when performing a derived-to-base conversion.
1924
1925 2006-06-04  Mark Mitchell  <mark@codesourcery.com>
1926
1927         PR c++/27819
1928         * decl.c (cp_finish_decl): Process initializers for static data
1929         members with non-dependent initializers, even in templates.
1930
1931         PR c++/27722
1932         * decl.c (maybe_deduce_size_from_array_init): If the declaration
1933         is erroneous, give it an erroneous type.
1934         (layout_var_decl): If the type is erroneous, give up.
1935         (check_initializer): Likewise.
1936
1937         PR c++/27807
1938         * cp-tree.h (TYPE_OBJ_P): New macro.
1939         (TYPE_PTROB_P): Use it.
1940         (TYPE_REF_OBJ_P): Likewise.
1941         * semantics.c (finish_compound_literal): Do not permit compound
1942         literals of non-object types.
1943
1944         PR c++/27806
1945         * typeck.c (original_type): Robustify.
1946
1947 2006-06-05  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1948
1949         PR c++/27804
1950         * init.c (constant_value_1): Return decl instead of error_mark_node
1951         for invalid initializers.
1952
1953 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
1954
1955         PR c++/27592
1956         * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion
1957         on operand of the COND_EXPR for the null pointer check.
1958
1959 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
1960
1961         PR c++/26740
1962         * typeck.c (build_unary_op): Mark the function as being used.
1963
1964 2006-06-01  Alexandre Oliva  <aoliva@redhat.com>
1965
1966         PR c++/26660
1967         * parser.c (cp_parser_initial_pragma): Read one more token for
1968         caller after reading PCH file in.
1969
1970 2006-05-31  Mark Mitchell  <mark@codesourcery.com>
1971
1972         PR c++/27801
1973         * call.c (perform_implicit_conversion): Do not actually perform
1974         conversions in templates.
1975
1976         PR c++/26496
1977         * call.c (resolve_args): Check for invalid uses of bound
1978         non-static member functions.
1979         * init.c (build_offset_ref): Return error_mark_node for errors.
1980
1981         PR c++/27385
1982         * decl.c (reshape_init): Robustify.
1983         (reshape_init_array_1): Likewise.
1984
1985 2006-05-30  Mark Mitchell  <mark@codesourcery.com>
1986
1987         PR c++/27808
1988         * parser.c (cp_parser_decl_specifier_seq): Issue errors about
1989         "friend" specifiers that do not appear in class scopes.
1990
1991         PR c++/27803
1992         * class.c (check_bitfield_decl): Ensure that all bitfields have
1993         integral type.
1994
1995 2006-05-29  Kazu Hirata  <kazu@codesourcery.com>
1996
1997         * pt.c (convert_nontype_argument): Fix a typo in an error
1998         message.
1999
2000 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
2001
2002         * decl.c, decl2.c, parser.c: Fix comment typos.  Follow
2003         spelling conventions.
2004
2005 2006-05-24  Mark Mitchell  <mark@codesourcery.com>
2006
2007         PR c++/20103
2008         * decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
2009         error_mark_node to indicate an initialization is OK.
2010         (start_decl): Likewise.  Adjust call to start_decl_1.
2011         (start_decl_1): Add initialized parameter.  Simplify.
2012         * except.c (initialize_handler_parm): Adjust call to
2013         setart_decl_1.
2014         (expand_start_catch_block): Let cp_finish_decl initialize catch
2015         parameters.
2016         * cp-tree.h (start_decl_1): Adjust prototype.
2017         * pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
2018         (instantiate_decl): Let cp_finish_decl handle initialization.
2019         * semantics.c (finish_compound_literal): Create a temporary
2020         variable for the literal.
2021         * typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
2022         cases.
2023         * decl2.c (finish_static_data_member_decl): Don't set
2024         DECL_INITIAL.
2025         (grokfield): Do not try to initialize functions.
2026
2027 2006-05-23  Mark Mitchell  <mark@codesourcery.com>
2028
2029         PR c++/20173
2030         * pt.c (determine_specialization): Disallow partial
2031         specializations of templates.
2032
2033 2006-05-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2034
2035         PR c++/27716
2036         * typeck.c (build_modify_expr): Test arguments for error_operand_p.
2037
2038         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.
2039
2040 2006-05-21  Mark Mitchell  <mark@codesourcery.com>
2041
2042         PR c++/27210
2043         * cp-tree.h (cp_save_expr): New function.
2044         * init.c (build_new): Correct logic for zero-element array
2045         warning.  Use cp_save_expr.
2046         * tree.c (cp_save_expr): New function.
2047
2048 2006-05-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2049
2050         PR c++/27398
2051         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
2052         or void_type_node.
2053
2054 2006-05-19  Mike Stump  <mrs@apple.com>
2055
2056         * typeck.c (default_conversion): Remove static.
2057
2058 2006-05-19  Mark Mitchell  <mark@codesourcery.com>
2059
2060         PR c++/26433
2061         * cp-tree.h (begin_function_try_block): Change prototype.
2062         (finish_function_handler_sequence): Likewise.
2063         * parser.c (cp_parser_function_try_block): Adjust calls.
2064         * pt.c (tsubst_expr): Adjust calls.
2065         * semantics.c (begin_function_try_block): Create an artificial
2066         outer scope.
2067         (finish_function_handler_sequence): Close it.
2068
2069 2006-05-18  Mark Mitchell  <mark@codesourcery.com>
2070
2071         PR c++/27471
2072         PR c++/27506
2073         * typeck.c (decay_conversion): Convert bitfields to their declared
2074         types here.  Improve documentation.  Avoid use of cp_convert.
2075         (default_conversion): Make it static.  Perform integral promotions
2076         before lvalue-to-rvalue, function-to-pointer, and array-to-pointer
2077         conversions.
2078         * init.c (build_init): Remove.
2079         (expand_default_init): Do not call rvalue.
2080         * call.c (null_ptr_cst_p): Robustify.
2081         (build_conditional_expr): Tidy.
2082         * except.c (build_throw): Do not perform lvalue-to-rvalue
2083         conversion on operand before initializing temporary.
2084         * tree.c (convert.h): Include it.
2085         (convert_bitfield_to_declared_type): Use convert_to_integer, not
2086         cp_convert.
2087         (rvalue): Don't convert bitfields to their declared type here.
2088         * cp-tree.h (build_init): Remove.
2089         (default_conversion): Likewise.
2090         * typeck2.c (build_m_component_ref): Do not perform
2091         lvalue-to-rvalue, function-to-pointer, or array-to-pointer
2092         conversions here.  Correct error message.
2093
2094 2006-05-17  Mark Mitchell  <mark@codesourcery.com>
2095
2096         PR c++/26122
2097         * decl2.c (check_member_template): Remove checks for virtual
2098         functions.
2099         * parser.c (cp_parser_function_specifier_opt): Complain about
2100         virtual templates.
2101         (cp_parser_pure_specifier): Likewise.
2102
2103         PR c++/26068
2104         * parser.c (cp_parser_set_storage_class): Check for
2105         invalid uses of storage classes on unbraced linkage
2106         specifications.
2107         (cp_parser_decl_specifier_seq): Pass keywords, not storage classes,
2108         to cp_parser_set_storage_class.
2109
2110 2006-05-17  Jakub Jelinek  <jakub@redhat.com>
2111
2112         PR c++/27491
2113         * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR
2114         on CONSTRUCTORs.
2115
2116         PR middle-end/27415
2117         * parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
2118         on combined parallel workshare constructs.
2119         * pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag.
2120
2121 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
2122
2123         PR driver/26885
2124         * Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS).
2125
2126 2006-05-15  Mark Mitchell  <mark@codesourcery.com>
2127
2128         PR c++/27339
2129         * cp-tree.h (perform_access_checks): New function.
2130         * semantics.c (perform_access_checks): New function.
2131         (perform_deferred_access_checks): Use it.
2132         * parser.c (cp_parser_simple_declaration): Adjust call to
2133         cp_parser_init_declarator.
2134         (cp_parser_type_parameter): Do not defer checks in default
2135         arguments.
2136         (cp_parser_explicit_specialization): Adjust call to
2137         cp_parser_single_declaration.
2138         (cp_parser_init_declarator): Perform template-parameter access
2139         checks.
2140         (cp_parser_parameter_declaration): Do not defer checks for
2141         template parameter default arguments.
2142         (cp_parser_template_declaration_after_export): Gather access
2143         checks for template parameters, and pass them to
2144         cp_parser_single_declaration.
2145         (cp_parser_template_parameter_access_checks): New function.
2146         (cp_parser_single_declaration): Add checks parameter.
2147
2148         PR c++/27505
2149         * call.c (convert_like_real): Convert bitfields to their declared
2150         types when forming an rvalue.
2151         * tree.c (convert_bitfield_to_declared_type): New function.
2152         (rvalue): Use it.
2153         * cp-tree.h (convert_bitfield_to_declare_type): Declare it.
2154
2155 2006-05-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2156
2157         PR c++/27582
2158         * pt.c (any_dependent_template_arguments_p): Return early on invalid
2159         argument list.
2160
2161         PR c++/27581
2162         * search.c (adjust_result_of_qualified_name_lookup): Skip on
2163         invalid context_class.
2164
2165         PR c++/27315
2166         * pt.c (do_decl_instantiation): Return early on invalid decl.
2167
2168         PR c++/27559
2169         * pt.c (push_template_decl_real): Return error_mark_node instead
2170         of broken decl.
2171
2172         PR c++/27496
2173         * pt.c (tsubst_friend_class): Return early on invalid friend
2174         declarations.
2175
2176 2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>
2177
2178         * Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H).
2179         (cp/decl2.o): Likewise.
2180         (cp/typeck.o): Likewise.
2181         (cp/cvt.o): Likewise.
2182         (cp/parser.o): Likewise.
2183         (cp/call.o): Replace target.h with $(TARGET_H).
2184
2185 2006-05-14  Alexandre Oliva  <aoliva@redhat.com>
2186
2187         * pt.c (build_non_dependent_expr): Leave ADDR_EXPR of
2188         COMPONENT_REF alone.
2189
2190 2006-05-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2191
2192         PR c++/27547
2193         * decl.c (copy_fn_p): Return early on non-member functions.
2194
2195 2006-05-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2196
2197         PR c++/27447
2198         * decl2.c (build_memfn_type): Skip invalid functions and class types.
2199
2200 2006-05-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2201
2202         PR c++/27427
2203         * pt.c (convert_nontype_argument): Return early on invalid arguments.
2204
2205         * pt.c (process_template_parm): Remove superfluous temporary.
2206
2207         PR c++/27430
2208         * pt.c (process_template_parm): Handle erroneous non-type parameters.
2209
2210         PR c++/27423
2211         * typeck.c (convert_for_initialization): Skip erroneous types.
2212
2213         PR c++/27422
2214         * typeck.c (convert_arguments): Return early on args with
2215         invalid types.
2216
2217 2006-05-03  Aldy Hernandez  <aldyh@redhat.com>
2218
2219         PR/21391
2220         * typeck.c (build_static_cast_1): Save casted types in used types
2221         hash table.
2222         (build_reinterpret_cast_1): Same.
2223         * rtti.c (build_dynamic_cast_1): Same.
2224
2225 2006-05-04  Jakub Jelinek  <jakub@redhat.com>
2226
2227         PR c++/27359
2228         * parser.c (cp_parser_omp_for_loop): Only call
2229         cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
2230         called.
2231
2232 2006-05-02  Mark Mitchell  <mark@codesourcery.com>
2233
2234         PR c++/27102
2235         * decl.c (grokdeclarator): Robustify checks for defining members
2236         of incomplete types.
2237
2238         PR c++/27309
2239         * class.c (add_method): Call grok_special_member_properties.
2240         * decl.c (grokdeclarator): Don't call it here.
2241         (copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
2242         assignment operator.  Set TYPE_HAS_CONSTURCTOR if DECL is a
2243         constructor.
2244         (start_method): Don't call grok_special_member_properties.
2245         * method.c (implicitly_declare_fn): Likewise.
2246         * pt.c (instantiate_class_template): Likewise.
2247         * decl2.c (grokfield): Likewise.
2248
2249 2006-05-02  Jakub Jelinek  <jakub@redhat.com>
2250
2251         PR middle-end/27337
2252         * cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
2253         * cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
2254         * cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.
2255
2256 2006-04-30  Mark Mitchell  <mark@codesourcery.com>
2257
2258         PR c++/27094
2259         * pt.c (tsubst_default_argument): Increment function_depth around
2260         call to tsubst_expr.
2261         * parser.c (cp_parser_parameter_declaration): Likewise.
2262         * decl2.c (mark_used): Tidy.
2263
2264 2006-04-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2265
2266         PR c++/27278
2267         * decl.c (grok_op_properties): Skip operators with invalid args
2268         when checking for class-type or enum-type args.
2269
2270 2006-04-29  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2271
2272         PR c++/27279
2273         * decl.c (copy_fn_p): Skip functions with invalid first arg.
2274
2275 2006-04-27  Mark Mitchell  <mark@codesourcery.com>
2276
2277         PR c++/27292
2278         * tree.c (rvalue): Convert bitfields to their declared types.
2279
2280         PR c++/27102
2281         * typeck2.c (cxx_incomplete_type_diagnostic): Handle
2282         TYPENAME_TYPE.
2283
2284 2006-04-24  Mark Mitchell  <mark@codesourcery.com>
2285
2286         PR c++/27292
2287         * typeck.c (decay_conversion): Don't adjust bitfield types.
2288         (perform_integral_promotions): Treat bitfield enums as enums, not
2289         as short integer types.
2290         * tree.c (rvalue): Convert bitfields to their correct types.
2291
2292 2006-04-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2293
2294         PR c++/19963
2295         * class.c (layout_class_type): Skip fields with invalid types.
2296
2297 2006-04-23  Mark Mitchell  <mark@codesourcery.com>
2298
2299         PR c++/26912
2300         * cp-tree.h (build_this_parm): Declare.
2301         (grok_method_quals): Remove.
2302         (build_memfn_type): Declare.
2303         (build_artificial_parm): Declare.
2304         (do_friend): Remove quals parameter.
2305         * decl.c (build_this_parm): New function.
2306         (grokfndecl): Use it.  Do not pass quals to grokclassfn.
2307         (grokdeclarator): Rename quals to memfn_quals.  Avoid allocating
2308         unnecessary TYPE_DECLs.  Correct qualification of member function
2309         types.  Tidy.
2310         * method.c (implicitly_declare_fn): Use build_this_parm.
2311         * friend.c (do_friend): Remove quals parameter.
2312         * decl2.c (grok_method_quals): Remove.
2313         (build_memfn_type): New function.
2314         (build_artificial_parm): Give it external linkage.
2315         (grokclassfn): Remove quals parameter.  Do not build "this"
2316         PARM_DECL here.
2317
2318         PR c++/26534
2319         * cp-tree.h (is_bitfield_expr_with_lowered_type): New function.
2320         * typeck.c (is_bitfield_expr_with_lowered_type): New function.
2321         (decay_conversion): Convert bitfield expressions to the correct
2322         type.
2323         (build_modify_expr): Remove spurious conversions.
2324         * class.c (layout_class_type): Modify the type of bitfields to
2325         indicate a limited range.
2326         * call.c (standard_conversion): Adjust the type of bitfield
2327         expressions used in an rvalue context.
2328         (build_conditional_expr): Likewise.
2329
2330 2006-04-22  Kazu Hirata  <kazu@codesourcery.com>
2331
2332         * decl.c: Fix comment typos.
2333
2334 2006-04-21  Eric Christopher  <echristo@apple.com>
2335
2336         * decl.c: Fix typo in function name.
2337
2338 2006-04-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2339
2340         PR c++/26558
2341         * parser.c (cp_parser_class_name): Check for invalid typenames.
2342         Rearrange code.
2343
2344         PR c++/26739
2345         * pt.c (tsubst_friend_function): Return early if
2346         pushdecl_namespace_level fails.
2347
2348         PR c++/26036
2349         * typeck.c (convert_arguments): Return error_mark_node instead of
2350         error_mark_list.
2351         * cp-tree.h (error_mark_list): Remove declaration.
2352         * decl.c (error_mark_list): Remove definition.
2353         (cxx_init_decl_processing): Do not initialize error_mark_list.
2354
2355         PR c++/10385
2356         * rtti.c (build_dynamic_cast_1): Check for invalid conversions
2357         before calling convert_to_reference.
2358         * cvt.c (convert_to_reference): Assert that reftype is a
2359         REFERENCE_TYPE.
2360
2361 2006-04-19  Mark Mitchell  <mark@codesourcery.com>
2362
2363         PR c++/27102
2364         * class.c (currently_open_class): Tidy.
2365         * decl.c (grokdeclarator): If we encounter an erroneous
2366         declarator, assume that we have already issued an error message
2367         and return.  Return error_mark_node instead of NULL_TREE in more
2368         places.  Issue errors about function definitions that do not have
2369         a function declarator.  Check for complete types for all function
2370         definitions.
2371         * cp-tree.h (cp_error_declarator): Remove.
2372         (currently_open_class): Change return type.
2373         * parser.c (cp_parser_id_expression): Add optional_p parameter.
2374         (cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
2375         (cp_parser_id_expression): Likewise.
2376         (cp_parser_unqualified_id): If the name is optional, return
2377         NULL_TREE.
2378         (cp_parser_postfix_dot_deref_expression): Adjust calls.
2379         (cp_parser_type_parameter): Likewise.
2380         (cp_parser_unqualified_id): Likewise.
2381         (cp_parser_direct_declarator): Likewise.
2382         (cp_parser_declarator_id): Add optional_p parameter.
2383         (cp_parser_function_definition_from_specifiers_and_declarator):
2384         Assume that start_function indicates failure only if it has issued
2385         an error.
2386         (cp_parser_omp_var_list_no_open): Adjust calls.
2387
2388 2006-04-17  Janis Johnson  <janis187@us.ibm.com>
2389
2390         PR c++/26114, c++/26115
2391         * typeck.c (cxx_mark_addressable): Restore check for extra_warnings.
2392         * class.c (check_field_decls): Ditto.
2393
2394 2006-04-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2395
2396         * init.c (build_offset_ref): Remove superfluous temporary.
2397
2398 2006-04-16  Mark Mitchell  <mark@codesourcery.com>
2399
2400         PR c++/26365
2401         * typeck.c (finish_class_member_access_expr): Robustify
2402
2403 2006-04-15  Kazu Hirata  <kazu@codesourcery.com>
2404
2405         * Make-lang.in (cp/pt.o): Depend on vecprim.h.
2406         * pt.c: Include vecprim.h.
2407         (inline_parm_levels): Change the type to VEC(int,heap) *.
2408         (inline_parm_levels_used): Remove.
2409         (maybe_begin_member_template_processing,
2410         maybe_end_member_template_processing): Use VEC instead of
2411         VARRAY.
2412
2413         * cp/call.c: Fix comment typos.
2414
2415 2006-04-12  Mark Mitchell  <mark@codesourcery.com>
2416
2417         * parser.c (cp_parser_init_declarator): Initialize local variables
2418         aggressively.
2419
2420 2006-04-12  Roger Sayle  <roger@eyesopen.com>
2421
2422         * parser.c (cp_parser_init_declarator): Initialise
2423         is_parenthesized_init to false to avoid compiler warning.
2424
2425 2006-04-11  Mark Mitchell  <mark@codesourcery.com>
2426
2427         * cp-tree.h (build_operator_new_call): Adjust prototype.
2428         (build_new_method_call): Likewise.
2429         (build_op_delete_call): Likewise.
2430         * init.c (build_raw_new_expr): New function.
2431         (build_new_1): Pass information as parameters, rather than
2432         bundling it into a NEW_EXPR.
2433         (build_new): Adjust accordingly.
2434         (build_vec_delete_1): Adjust for changes to build_op_delete_call.
2435         (build_delete): Likewise.
2436         * decl.c (finish_destructor_body): Likewise.
2437         * call.c (build_operator_new_call): Return the allocation function
2438         used.
2439         (build_op_delete_call): Take allocation function as parameter.
2440         (build_special_member_call): Adjust call to build_new_method_call.
2441         (build_new_method_call): Return function called.
2442         * pt.c (tsubst_copy_and_build): Adjust call to
2443         build_new_method_call.
2444         * semantics.c (finish_call_expr): Likewise.
2445         * parser.c (cp_parser_postfix_expression): Likewise.
2446         * typeck2.c (cxx_incomplete_type_diagnostic): Refer to
2447         "incomplete", not "undefined", types.
2448
2449         PR c++/26295
2450         * decl.c (grokdeclarator): Remove namespace-handling code for
2451         pointers-to-members.
2452         * parser.c (cp_parser_ptr_operator): Check for qualified names
2453         using namespaces.
2454
2455         PR c++/26122
2456         * parser.c (cp_parser_init_declarator): Adjust logic for deciding
2457         whether or not to look for a pure-specifier.
2458         (cp_parser_member_declaration): Likewise.
2459
2460 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
2461
2462         * decl2.c, pt.c, semantics.c: Fix comment typos.
2463
2464 2006-04-06  Roger Sayle  <roger@eyesopen.com>
2465
2466         * call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check.
2467
2468 2006-04-05  Jason Merrill  <jason@redhat.com>
2469
2470         * name-lookup.c (push_namespace_with_attribs): Temporarily disable
2471         default hidden visibility for anonymous namespace.
2472
2473 2006-03-29  Roger Sayle  <roger@eyesopen.com>
2474
2475         PR c++/22494
2476         * init.c (build_vec_delete_1): Convert BASE pointer's type to
2477         the base pointer type to avoid a type mismatch in the EQ_EXPR.
2478
2479 2006-03-24  Carlos O'Donell  <carlos@codesourcery.com>
2480
2481         * search.c (maybe_suppress_debug_info): If
2482         flag_emit_class_debug_always then don't suppress.
2483
2484 2006-03-22  Jason Merrill  <jason@redhat.com>
2485
2486         * name-lookup.c (push_namespace_with_attribs): Only apply hidden
2487         visibility to anonymous namespaces if HAVE_GAS_HIDDEN.
2488
2489 2006-03-21  Jakub Jelinek  <jakub@redhat.com>
2490
2491         PR c++/26691
2492         * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments.
2493
2494 2006-03-21  Jason Merrill  <jason@redhat.com>
2495
2496         PR c++/21581
2497         * parser.c (cp_parser_declaration): Support attributes on
2498         anonymous namespaces.
2499         * name-lookup.c (push_namespace_with_attribs): Anonymous
2500         namespaces default to hidden visibility.
2501
2502 2006-03-20  Jason Merrill  <jason@redhat.com>
2503
2504         PR c++/21764, c++/19238
2505         * decl.c (cp_finish_decl): Call determine_visibility later.
2506         (start_preparsed_function): Likewise.
2507         * cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
2508         (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
2509         * name-lookup.h (struct cp_binding_level): Add has_visibility
2510         bitfield.
2511         * name-lookup.c: Include c-pragma.h.
2512         (push_namespace_with_attribs): Split out from push_namespace.
2513         Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
2514         (leave_scope): Pop visibility if appropriate.
2515         * decl2.c (determine_visibility_from_class): Split out from...
2516         (determine_visibility): ...here.  Handle function scope and
2517         nested classes.
2518         (import_export_decl): Move visibility handling to
2519         determine_visibility_from_class.
2520         * parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
2521         attributes on namespace declarations.
2522
2523 2006-03-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2524
2525         PR c++/6634
2526         * decl.c (grokdeclarator): Do not accept long long double.
2527         Reorganize checks for invalid (combinations of) type modifiers.
2528         Quote modifiers in messages.
2529
2530 2006-03-09  Jason Merrill  <jason@redhat.com>
2531
2532         PR c++/16387, c++/16389
2533         * typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions.
2534         (cxx_sizeof_or_alignof_expr): Split out from here.
2535
2536 2006-03-09  Diego Novillo  <dnovillo@redhat.com>
2537
2538         Merge from gomp-20050608-branch
2539
2540         2006-02-02  Diego Novillo  <dnovillo@redhat.com>
2541
2542                 * decl.c (pop_labels_1): Use appropriate pointer casting.
2543                 (poplevel_named_label_1): Likewise.
2544                 (named_label_entry_hash): Likewise.
2545                 (named_label_entry_eq): Likewise.
2546                 (check_goto): Likewise.
2547                 (define_label): Likewise.
2548
2549         2006-01-26  Diego Novillo  <dnovillo@redhat.com>
2550
2551                 * cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead
2552                 of TREE_BLOCK.
2553                 * pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND
2554                 instead of TREE_CODE/TREE_OPERAND.
2555                 * semantics.c: Likewise.
2556                 * parser.c: Likewise.
2557
2558         2005-11-10  Diego Novillo  <dnovillo@redhat.com>
2559
2560                 * parser.c (cp_parser_omp_threadprivate): Emit diagnostic if
2561                 target does not support TLS.
2562
2563         2005-11-09  Jakub Jelinek  <jakub@redhat.com>
2564
2565                 * decl.c (redeclaration_error_message): Don't error about
2566                 DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P
2567                 (olddecl).
2568
2569         2005-11-08  Jakub Jelinek  <jakub@redhat.com>
2570
2571                 PR c++/24735
2572                 * semantics.c (finish_omp_barrier, finish_omp_flush): New
2573                   functions.
2574                 * parser.c (cp_parser_omp_barrier): Call finish_omp_barrier.
2575                 (cp_parser_omp_flush): Call finish_omp_flush.
2576                 * cp-tree.h (finish_omp_barrier, finish_omp_flush): New
2577                   prototypes.
2578
2579                 PR c++/24734
2580                 * pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED.
2581
2582         2005-11-03  Jakub Jelinek  <jakub@redhat.com>
2583
2584                 * semantics.c (finish_omp_threadprivate): Error on class-scope
2585                 variables.
2586
2587         2005-11-02  Jakub Jelinek  <jakub@redhat.com>
2588
2589                 * parser.c (cp_parser_omp_all_clauses): If some clause
2590                 type is not allowed, don't remove just one of the
2591                 clauses, but all clauses added in that loop round.
2592
2593                 * semantics.c (finish_omp_clauses): Fix function
2594                 comment. Don't handle non-const or mutable specially,
2595                 as const and not mutable is predetermined shared and
2596                 that leads to double error. Don't ICE if copyin var is
2597                 PARM_DECL.
2598
2599                 PR c++/24613
2600                 * parser.c (cp_parser_pragma): Diagnose
2601                 PRAGMA_OMP_SECTION outside of PRAGMA_OMP_SECTIONS
2602                 construct.
2603
2604                 * semantics.c (finish_omp_threadprivate): Error if V
2605                   is automatic variable or has incomplete type.
2606
2607         2005-11-01  Diego Novillo  <dnovillo@redhat.com>
2608
2609                 * parser.c (cp_parser_omp_all_clauses): Use
2610                 OMP_CLAUSE_CHAIN instead of TREE_CHAIN.
2611
2612         2005-11-01  Diego Novillo  <dnovillo@redhat.com>
2613
2614                 * parser.c (cp_parser_omp_all_clauses): When emitting an
2615                 error message, remove the invalid clause from the list.
2616
2617         2005-10-31  Diego Novillo  <dnovillo@redhat.com>
2618
2619                 * parser.c (cp_parser_omp_parallel): Do not allow 'nowait' in
2620                 combined parallel+workshare directives.
2621
2622         2005-10-31  Richard Henderson  <rth@redhat.com>
2623
2624                 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DTOR):
2625                 Use cxx_omp_clause_dtor.
2626                 * cp-tree.h (CP_OMP_CLAUSE_INFO): New.
2627                 (cxx_omp_clause_dtor): New.
2628                 * cp-gimplify.c (cxx_omp_clause_apply_fn): New.
2629                 (cxx_omp_clause_default_ctor): Use it.
2630                 (cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op):
2631                 Likewise.
2632                 (cxx_omp_clause_dtor): New.
2633                 * semantics.c (finish_omp_clauses): Rewrite cdtor
2634                 checking to fill in CP_OMP_CLAUSE_INFO.  Don't
2635                 specialcase LASTPRIVATE for removal.
2636                 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
2637                 cxx_omp_clause_assign_op): Move to cp-gimplify.c.
2638
2639         2005-10-28  Jakub Jelinek  <jakub@redhat.com>
2640
2641                 * semantics.c (finish_omp_threadprivate): If
2642                   DECL_RTL_SET_P, call make_decl_rtl again so that
2643                   encode_section_info can update SYMBOL_REF's flags.
2644
2645         2005-10-26  Jakub Jelinek  <jakub@redhat.com>
2646
2647                 * semantics.c (finish_omp_for): Don't segfault if COND
2648                 or INCR is NULL.  If not calling c_finish_omp_for
2649                 right away and one of COND and INCR is NULL, issue
2650                 error and don't expand anything.
2651
2652                 PR c++/24512
2653                 * cp-tree.h (finish_omp_for): Add PRE_BODY argument.
2654                 * semantics.c (finish_omp_for): Likewise.  Set
2655                 OMP_FOR_PRE_BODY to PRE_BODY if deferring, add it
2656                 into the current statement list if not processing
2657                 template decl or pass it to c_finish_omp_for.
2658
2659                 * parser.c (cp_parser_omp_for_loop): Expand optional DECL_EXPRs
2660                 into PRE_BODY statement list.  Pass it to finish_omp_for.
2661                 * pt.c (tsubst_expr) <case OMP_FOR>: tsubst_expr also
2662                 OMP_FOR_PRE_BODY into PRE_BODY stmt list, pass it to
2663                 finish_omp_for.  Put all the statements into sk_omp
2664                 scope.
2665
2666         2005-10-25  Jakub Jelinek  <jakub@redhat.com>
2667
2668                 PR c++/24516
2669                 * parser.c (struct cp_parser): Rename in_iteration_statement
2670                 field to in_statement.
2671                 (IN_SWITCH_STMT, IN_ITERATION_STMT): Define.
2672                 (IN_OMP_BLOCK, IN_OMP_FOR): Change values.
2673                 (cp_parser_new, cp_parser_begin_omp_structured_block,
2674                 cp_parser_end_omp_structured_block,
2675                 cp_parser_omp_for_loop): Adjust for
2676                 in_iteration_statement renaming.
2677                 (cp_parser_selection_statement): Save
2678                 parser->in_iteration, or it temporarily with
2679                 IN_SWITCH_STMT for the
2680                 cp_parser_implicitly_scoped_statement call.
2681                 (cp_parser_iteration_statement): Adjust for
2682                 in_iteration_statement renaming.  Use
2683                 IN_ITERATION_STMT rather than true.
2684                 (cp_parser_jump_statement): Adjust for
2685                 in_iteration_statement renaming and new values.  Don't
2686                 error on break in a switch statement within OMP_FOR or
2687                 OpenMP structured block.
2688
2689                 PR c++/24513
2690                 * parser.c (cp_parser_cache_group): Don't stop if next
2691                 token is CPP_PRAGMA_EOL and end is CPP_PRAGMA_EOL as
2692                 well.  If current token is CPP_PRAGMA, consume
2693                 everything until CPP_PRAGMA_EOL inclusive.
2694
2695         2005-10-24  Jakub Jelinek  <jakub@redhat.com>
2696
2697                 PR c++/24502
2698                 * semantics.c (finish_omp_for): Handle MODOP_EXPR in
2699                 addition to MODIFY_EXPR.
2700
2701         2005-10-23  Richard Henderson  <rth@redhat.com>
2702
2703                 * cp-gimplify.c (struct cp_gimplify_ctx): Remove.
2704                 (bc_label): New.
2705                 (begin_bc_block, finish_bc_block): Use it.
2706                 (push_context, pop_context): Remove.
2707                 (cp_genericize): Don't use them.  Assert bc_label is null.
2708                 * semantics.c (finish_omp_clauses): Create a fake data
2709                 element of TYPE for probing ctors.
2710
2711         2005-10-23  Richard Henderson  <rth@redhat.com>
2712
2713                 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): New.
2714                 (LANG_HOOKS_OMP_CLAUSE_COPY_CTOR): New.
2715                 (LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP): New.
2716                 (LANG_HOOKS_OMP_CLAUSE_DTOR): New.
2717                 * semantics.c (finish_omp_clauses): Look through
2718                 arrays when looking up special member calls.  Also
2719                 remove FIRSTPRIVATE when LASTPRIVATE fails.
2720                 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor): New.
2721                 (cxx_omp_clause_assign_op): New.
2722                 * cp-tree.h: Declare them.
2723
2724         2005-10-21  Richard Henderson  <rth@redhat.com>
2725
2726                 * decl.c (check_previous_goto_1): Return false if error.
2727                 (check_switch_goto): Likewise.
2728                 (finish_case_label): Don't emit the case label on error.
2729                 * parser.c (struct cp_parser): Revert
2730                 in_switch_statement_p changes.
2731                 (cp_parser_labeled_statement,
2732                 cp_parser_selection_statement): Likewise.
2733                 (cp_parser_begin_omp_structured_block): Don't save...
2734                 (cp_parser_end_omp_structured_block): or restore
2735                 in_switch_statement_p.
2736
2737         2005-10-21  Richard Henderson  <rth@redhat.com>
2738
2739                 * semantics.c (finish_omp_threadprivate): Set
2740                 decl_flags.u2sel when necessary.
2741
2742         2005-10-21  Richard Henderson  <rth@redhat.com>
2743
2744                 * decl.c (poplevel_named_label_1): Restore creation of the
2745                 bad_decls list.
2746                 (decl_jump_unsafe): Check for error_mark_node types.
2747                 (check_goto): Don't check cdtor_label.  Don't use identify_goto.
2748                 * semantics.c (finish_return_stmt): Do check_omp_return before
2749                 converting to cdtor_label goto.
2750
2751         2005-10-21  Richard Henderson  <rth@redhat.com>
2752
2753                 PR c++/24451
2754                 * decl.c (check_omp_return): Return false on error.
2755                 * cp-tree.h (check_omp_return): Update decl.
2756                 * semantics.c (finish_return_stmt): Avoid adding
2757                 return on error.
2758
2759         2005-10-21  Richard Henderson  <rth@redhat.com>
2760
2761                 * cp-tree.h (struct language_function): Remove
2762                 x_named_label_uses.
2763                 Change x_named_labels to a hashtable.
2764                 (check_omp_return): Declare.
2765                 * decl.c (struct named_label_use_entry): Rename from
2766                 named_label_use_list.  Remove label_decl.
2767                 (struct named_label_entry): Rename from
2768                 named_label_list.  Remove old_value and next.  Change
2769                 in_try_scope and in_catch_scope to bool. Add
2770                 in_omp_scope.
2771                 (pop_labels_1): New.
2772                 (pop_labels): Use it.
2773                 (pop_local_label, poplevel_named_label_1): New.
2774                 (poplevel): Use them.
2775                 (named_label_entry_hash, named_label_entry_eq): New.
2776                 (make_label_decl): Create named_labels.  Move label
2777                 creation bits from lookup_label.
2778                 (declare_local_label): Tidy.
2779                 (identify_goto): Split out from ...
2780                 (check_previous_goto_1): Add exited_omp argument.
2781                 Handle omp scopes.
2782
2783                 (use_label): Merge into...
2784                 (check_goto): ... here.  Handle omp scopes.
2785                 (check_omp_return): New.
2786                 (check_previous_gotos): Merge into...
2787                 (define_label): ... here.
2788                 (save_function_data): Remove x_named_label_uses reference.
2789                 (finish_function): Likewise.
2790                 * name-lookup.h (sk_omp): New.
2791                 * name-lookup.c (begin_scope): Handle it.
2792                 * parser.c (cp_parser_omp_for): Don't create extra
2793                 compound stmt.
2794
2795                 (cp_parser_omp_sections): Likewise.
2796                 * semantics.c (finish_return_stmt): Call check_omp_return.
2797                 (begin_omp_structured_block): Use sk_omp.
2798                 (finish_omp_structured_block): Use do_poplevel.  Don't build a
2799                 MUST_NOT_THROW expression here.
2800                 (begin_omp_parallel, finish_omp_parallel): Don't create extra
2801                 compound statements.
2802
2803         2005-10-21  Diego Novillo  <dnovillo@redhat.com>
2804
2805                 PR 24455
2806                 * cp/cp-tree.h (struct lang_decl_flags): Add field
2807                 threadprivate_p.
2808                 (CP_DECL_IS_THREADPRIVATE): Define.
2809                 * cp/semantics.c (finish_omp_threadprivate): Set.  Do
2810                 not error out if CP_DECL_IS_THREADPRIVATE is set
2811                 already.
2812                 * cp/decl.c (duplicate_decls): Merge
2813                 CP_DECL_THREADPRIVATE_P.
2814
2815         2005-10-20  Richard Henderson  <rth@redhat.com>
2816
2817                 * cp-gimplify.c (cp_gimplify_omp_for): New.
2818                 (cp_gimplify_expr): Call it.
2819                 * cp-tree.h (OMP_FOR_GIMPLIFYING_P): New.
2820                 * parser.c (struct cp_parser): Rename
2821                 in_iteration_statement_p to in_iteration_statement and
2822                 change to unsigned char.  Similarly with
2823                 in_switch_statement.  Update all users.
2824                 (IN_OMP_BLOCK, IN_OMP_FOR): New.
2825                 (cp_parser_labeled_statement): Diagnose case labels
2826                 binding closer to an openmp block nested than the
2827                 switch.
2828                 (cp_parser_jump_statement): Diagnose break and
2829                 continue labels binding closer to an openmp block than
2830                 an iteration or switch.
2831                 (cp_parser_omp_for_loop): Mark in_iteration_statement
2832                 for an omp for.
2833                 (cp_parser_begin_omp_structured_block): New.
2834                 (cp_parser_end_omp_structured_block): New.
2835                 (cp_parser_omp_structured_block): Use them.
2836                 (cp_parser_omp_for, cp_parser_omp_sections_scope): Likewise.
2837                 (cp_parser_omp_parallel): Likewise.
2838
2839         2005-10-20  Richard Henderson  <rth@redhat.com>
2840
2841                 * semantics.c (begin_omp_structured_block): New.
2842                 (finish_omp_structured_block): New.
2843                 (begin_omp_parallel, finish_omp_parallel): Use them.
2844                 * parser.c (cp_parser_omp_structured_block): Likewise.
2845                 (cp_parser_omp_for): Likewise.
2846                 (cp_parser_omp_sections_scope): Likewise.
2847                 * cp-tree.h: Declare them.
2848
2849         2005-10-20  Richard Henderson  <rth@redhat.com>
2850
2851                 * parser.c (cp_parser_omp_master): Return the statement.
2852                 (cp_parser_omp_ordered): Likewise.
2853                 (cp_parser_omp_construct): Set the locus for them.
2854
2855         2005-10-19  Richard Henderson  <rth@redhat.com>
2856
2857                 * semantics.c (finish_omp_atomic): Revert to
2858                 uses_template_parms.
2859
2860         2005-10-19  Richard Henderson  <rth@redhat.com>
2861
2862                 * semantics.c (finish_omp_clauses): Avoid
2863                 DECL_THREAD_LOCAL_P on a PARM_DECL.  Remove some
2864                 stub asserts guaranteed to fail.
2865
2866         2005-10-19  Richard Henderson  <rth@redhat.com>
2867
2868                 * cp-tree.h (OMP_ATOMIC_DEPENDENT_P, OMP_ATOMIC_CODE): New.
2869                 (finish_omp_clauses, finish_omp_for, finish_omp_atomic): New.
2870                 * parser.c (cp_parser_omp_clause_copyin): Remove.
2871                 (cp_parser_omp_all_clauses): Use cp_parser_omp_var_list instead.
2872                 Call finish_omp_clauses.
2873                 (cp_parser_omp_clause_if): Don't do error checking here.
2874                 (cp_parser_omp_clause_num_threads): Likewise.
2875                 (cp_parser_omp_clause_schedule): Likewise.
2876                 (cp_parser_omp_atomic): Use finish_omp_atomic.
2877                 (cp_parser_omp_for_loop): Don't discard DECL_EXPR.
2878                 Don't decompose assignment statment here.  Use
2879                 finish_omp_for.
2880
2881                 * pt.c (tsubst_omp_clauses): New.
2882                 (tsubst_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
2883                 OMP_SINGLE, OMP_SECTION, OMP_CRITICAL, OMP_ATOMIC.
2884                 * semantics.c (finish_omp_clauses): New.
2885                 (begin_omp_parallel, finish_omp_parallel): Know Less about the
2886                 internals of the stmt_list stack.
2887                 (finish_omp_for, finish_omp_atomic): New.
2888
2889         2005-10-18  Jakub Jelinek  <jakub@redhat.com>
2890
2891                 * semantics.c (cxx_omp_predetermined_sharing): New function.
2892                 * cp-tree.h (cxx_omp_predetermined_sharing): New prototype.
2893                 * cp-objcp-common.h
2894                 (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
2895
2896         2005-10-18  Richard Henderson  <rth@redhat.com>
2897
2898                 * parser.c (cp_parser_omp_single): Use make_node and accessors
2899                 instead of build.
2900
2901         2005-10-17  Richard Henderson  <rth@redhat.com>
2902
2903                 * parser.c (cp_parser_omp_for_loop): Handle declarations.
2904
2905         2005-10-12  Richard Henderson  <rth@redhat.com>
2906
2907                 * Make-lang.in (CXX_C_OBJS): Add c-omp.o.
2908                 * cp-tree.h (begin_omp_parallel, finish_omp_parallel): Declare.
2909                 (finish_omp_threadprivate): Declare.
2910                 * parser.c (struct cp_lexer): Add in_pragma.
2911                 (cp_lexer_consume_token): Don't consume a PRAGMA_EOL
2912                 when in_pragma.
2913                 (cp_parser_skip_to_closing_parenthesis): Stop at PRAGMA_EOL.
2914                 (cp_parser_skip_to_end_of_statement): Likewise.
2915                 (cp_parser_skip_to_end_of_block_or_statement): Likewise.
2916                 (cp_parser_skip_to_closing_brace): Likewise.
2917                 (cp_parser_skip_to_pragma_eol): Reset in_pragma.
2918                 (cp_parser_require_pragma_eol): New.
2919                 (cp_parser_statement): Add in_compound argument;
2920                 update all callers.
2921                 Restart if a non-statement pragma seen outside a
2922                 compound.
2923                 (cp_parser_statement_seq_opt): Stop at PRAGMA_EOL.
2924                 (cp_parser_declaration_seq_opt): Likewise.
2925                 (cp_parser_member_specification_opt): Likewise.
2926                 (cp_parser_function_definition_after_decl): Likewise.
2927                 (cp_parser_skip_until_found): Likewise.
2928                 (cp_parser_cache_group): Likewise.
2929                 (enum pragma_omp_clause, cp_parser_omp_clause_name,
2930                 check_no_duplicate_clause,
2931                 cp_parser_omp_var_list_no_open,
2932                 cp_parser_omp_var_list, cp_parser_omp_clause_copyin,
2933                 cp_parser_omp_clause_default, cp_parser_omp_clause_if,
2934                 cp_parser_omp_clause_nowait,
2935                 cp_parser_omp_clause_num_threads,
2936                 cp_parser_omp_clause_ordered,
2937                 cp_parser_omp_clause_reduction,
2938                 cp_parser_omp_clause_schedule,
2939                 cp_parser_omp_all_clauses,
2940                 cp_parser_omp_structured_block, cp_parser_omp_atomic,
2941                 cp_parser_omp_barrier, cp_parser_omp_critical,
2942                 cp_parser_omp_flush, cp_parser_omp_for_loop,
2943                 cp_parser_omp_for, cp_parser_omp_master,
2944                 cp_parser_omp_ordered, cp_parser_omp_sections_scope,
2945                 cp_parser_omp_sections, cp_parser_omp_parallel,
2946                 cp_parser_omp_single, cp_parser_omp_threadprivate,
2947                 cp_parser_omp_construct): New.
2948                 (cp_parser_pragma): Handle OpenMP pragmas.
2949                 * semantics.c (finish_omp_threadprivate): New.
2950                 (begin_omp_parallel, finish_omp_parallel): New.
2951
2952         2005-10-11  Richard Henderson  <rth@redhat.com>
2953
2954                 * parser.c (struct cp_token): Add pragma_kind.
2955                 (eof_token): Initialize it.
2956                 (cp_lexer_handle_pragma): Remove.
2957                 (cp_parser_initial_pragma): New.
2958                 (cp_lexer_new_main): Use it.
2959                 (cp_lexer_get_preprocessor_token): Initialize pragma_kind.
2960                 (cp_lexer_print_token): Don't handle CPP_PRAGMA.
2961                 (cp_parser_skip_to_pragma_eol): New.
2962                 (cp_parser_error): Use it.
2963                 (pragma_lex): New.
2964
2965         2005-10-09  Richard Henderson  <rth@redhat.com>
2966
2967                 * lex.c (parse_strconst_pragma): Update for c_lex name change.
2968                 (handle_pragma_java_exceptions): Likewise.
2969                 * parser.c (cp_lexer_new_main): Likewise.
2970
2971         2005-10-06  Richard Henderson  <rth@redhat.com>
2972
2973                 * parser.c (cp_lexer_new_main): Comment out defer_pragmas.
2974                 (cp_lexer_handle_pragma): Comment out
2975                 cpp_handle_deferred_pragma.
2976
2977         2005-10-01  Richard Henderson  <rth@redhat.com>
2978
2979                 * name-lookup.c (lookup_name): Remove prefer_type argument.
2980                 (lookup_name_prefer_type): New function.
2981                 * name-lookup.h (lookup_name_prefer_type): Declare it.
2982                 * decl.c (lookup_and_check_tag): Use it.
2983                 * pt.c (tsubst_friend_class): Likewise. Update for
2984                 lookup_name change.
2985                 (lookup_template_class, tsubst_copy_and_build): Likewise.
2986
2987 2006-03-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2988
2989         PR c++/15759
2990         * tree.c (bot_manip): Don't call mark_used.
2991
2992 2006-03-02  Mike Stump  <mrs@apple.com>
2993
2994         * decl2.c (import_export_decl): Remove redundant call to
2995         targetm.cxx.key_method_may_be_inline ().
2996
2997 2006-03-02  Richard Sandiford  <richard@codesourcery.com>
2998
2999         * decl.c (start_decl): Use have_global_bss_p when deciding
3000         whether to make the decl common.
3001
3002 2006-03-01  Mike Stump  <mrs@apple.com>
3003
3004         PR darwin/25908
3005         * decl2.c (import_export_decl): Fix ABI breakage on darwin.
3006
3007 2006-02-24  Geoffrey Keating  <geoffk@apple.com>
3008
3009         * except.c (expand_start_catch_block): Handle
3010         flag_use_cxa_get_exception_ptr.
3011
3012 2006-02-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3013
3014         PR c++/26291
3015         * decl.c (grok_op_properties): Check for ellipsis in arguments of
3016         operators.
3017
3018 2006-02-20  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
3019
3020         * Make-lang.in (C++): Remove.
3021         (.PHONY): Remove C++.
3022
3023 2006-02-18  Mark Mitchell  <mark@codesourcery.com>
3024
3025         PR c++/26266
3026         * cp-tree.h (cp_finish_decl): Adjust declaration.
3027         (grokbitfield): Likewise.
3028         (finish_static_data_member_decl): Likewise.
3029         * init.c (constant_value_1): Ensure processing_template_decl when
3030         folding non-dependent initializers for static data members of
3031         dependent types.  Return error_mark_node for erroneous
3032         initailizers.
3033         * class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl.
3034         * decl.c (cp_make_fname_decl): Adjust call to cp_finish_decl.
3035         (cp_finish_decl): Add init_const_expr_p parameter.  Set
3036         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
3037         (finish_decl): Adjust call to cp_finish_decl.
3038         (compute_array_index_type): Robustify.
3039         (start_method): Use finish_decl, not cp_finish_decl.
3040         * rtti.c (emit_tinfo_decl): Likewise.
3041         * except.c (initialize_handler_parm): Adjust call to
3042         cp_finish_decl.
3043         (expand_start_catch_block): Likewise.
3044         * cvt.c (build_up_reference): Adjust call to cp_finish_decl.
3045         * pt.c (instantiate_class_template): Adjust call to
3046         finish_static_data_member_decl.
3047         (tsubst_expr): Use finish_decl, not cp_finish_decl.
3048         (instantiate_decl): Adjust call to cp_finish_decl.
3049         * name-lookup.c (pushdecl_top_level_1): Use finish_decl, not
3050         cp_finish_decl.
3051         * decl2.c (finish_static_data_member_decl): Add init_const_expr_p
3052         parameter.
3053         (grokfield): Likewise.
3054         * parser.c (cp_parser_condition): Check for constant initializers.
3055         (cp_parser_init_declarator): Adjust calls to grokfield and
3056         cp_finish_decl.  Don't set
3057         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
3058         (cp_parser_member_declaration): Likewise.
3059         (cp_parser_objc_class_ivars): Likewise.
3060
3061 2006-02-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3062
3063         * call.c (standard_conversion): Return NULL instead of 0.
3064         (build_user_type_conversion_1): Likewise.
3065         (tourney): Likewise.
3066         * decl.c (redeclaration_error_message): Likewise.
3067         * error.c (language_to_string): Likewise.
3068
3069 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3070
3071         * cp-tree.h (warn_hidden): Remove prototype.
3072         * class.c (warn_hidden): Make static.
3073
3074         * cp-tree.h (build_type_conversion): Remove prototype.
3075         * cvt.c (build_type_conversion): Add prototype, make static.
3076
3077         * cp-tree.h (push_tinst_level): Remove prototype.
3078         (pop_tinst_level): Likewise.
3079         * pt.c (push_tinst_level): Add prototype, make static.
3080         (pop_tinst_level): Likewise.
3081
3082 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3083
3084         * decl.c (grokdeclarator): Return NULL_TREE instead of 0.
3085         * typeck.c (unary_complex_lvalue): Likewise.
3086
3087 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3088
3089         * lex.c (parse_strconst_pragma): Return error_mark_node instead of
3090         "(tree)-1" to indicate failure.  Simplify.
3091         (handle_pragma_interface): Test for error_mark_node instead of
3092         "(tree)-1".
3093         (handle_pragma_implementation): Likewise.
3094
3095 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3096
3097         PR c++/26151
3098         * parser.c (cp_parser_decl_specifier_seq): Check for duplicate
3099         decl-specifiers.  Remove extra check for duplicate 'friend'.
3100         * decl.c (grokdeclarator): Remove check for duplicate
3101         decl-specifiers.  Set longlong together with long_p.
3102
3103 2006-02-12  Jason Merrill  <jason@redhat.com>
3104
3105         PR c++/24996
3106         * except.c (build_throw): Add a CLEANUP_POINT_EXPR inside the
3107         TRY_CATCH_EXPR or MUST_NOT_THROW_EXPR.
3108
3109 2006-02-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3110
3111         * class.c (debug_class): Remove extern.
3112         (debug_thunks): Likewise.
3113
3114 2006-02-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3115
3116         * typeck.c (string_conv_p): Don't test for flag_const_strings.
3117
3118 2006-02-08  Jason Merrill  <jason@redhat.com>
3119
3120         PR c++/25979
3121         * cp-gimplify.c (cp_gimplify_expr): Don't call
3122         cp_gimplify_init_expr for MODIFY_EXPRs.
3123         * typeck2.c (split_nonconstant_init_1): Use INIT_EXPR.
3124
3125 2006-02-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3126
3127         PR c++/26071
3128         * decl.c (grokdeclarator): Set dname also for destructor.
3129
3130         PR c++/26070
3131         * decl.c (grokdeclarator): Clear storage_class together with staticp.
3132
3133 2006-02-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3134
3135         * cp-tree.h (tf_warning_or_error): Renamed from tf_warn_or_error.
3136         (cp_build_qualified_type): Propogate renaming.
3137         * call.c (convert_like_real): Likewise.
3138         * cvt.c (cp_convert_to_pointer, convert_to_reference): Likewise.
3139         * decl.c (make_typename_type, grokdeclarator): Likewise.
3140         * pt.c (tsubst_friend_function, instantiate_class_template,
3141         tsubst_default_argument, instantiate_decl,
3142         tsubst_initializer_list, tsubst_enum): Likewise.
3143         * semantics.c (finish_template_type): Likewise.
3144         * typeck.c (build_ptrmemfunc, convert_for_assignment): Likewise.
3145
3146 2006-02-07  Dirk Mueller  <dmueller@suse.com>
3147
3148         * typeck.c (build_binary_op): Annotate div-by-zero
3149         warnings to make -Wno-div-by-zero have an effect.
3150
3151 2006-02-07  Mark Mitchell  <mark@codesourcery.com>
3152
3153         PR c++/9737
3154         * pt.c (coerce_template_template_parms): Do not templates with
3155         excess default arguments to match template template parameters
3156         with fewer parameters.
3157         (coerce_template_parms): Add use_default_args parameter; use
3158         default arguments only when true.
3159         (lookup_template_class): Adjust call to coerce_template_parms.
3160         (fn_type_unification): Likewise.
3161         (unify): Likewise.
3162         (get_bindings): Likewise.
3163         (dependent_type_p): Add assertions.
3164
3165 2006-02-06  Roger Sayle  <roger@eyesopen.com>
3166
3167         * decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE.
3168         * rtti.c (typeinfo_in_lib_p): Likewise.
3169         * cp-tree.h (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P): Likewise.
3170         * name-lookup.c (arg_assoc_type): Likewise.
3171
3172 2006-02-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3173
3174         * cp-tree.h (tf_warn_or_error): New substituion flag.
3175         (cp_build_qualified_type): Use it.
3176         * call.c (convert_like_real): Likewise.
3177         * cvt.c (cp_convert_to_pointer): Likewise.
3178         (convert_to_reference): Likewise.
3179         * decl.c (make_typename_type): Likewise.
3180         (grokdeclarator): Likewise.
3181         * pt.c (tsubst_friend_function): Likewise.
3182         (tsubst_friend_class): Likewise.
3183         (instantiate_class_template): Likewise.
3184         (tsubst_default_argument): Likewise.
3185         (instantiate_decl): Likewise.
3186         (tsubst_initializer_list): Likewise.
3187         (tsubst_enum): Likewise.
3188         * semantics.c (finish_template_type): Likewise.
3189         * typeck.c (build_ptrmemfunc): Likewise.
3190         (convert_for_assignment): Likewise.
3191
3192 2006-02-03  Lee Millward  <lee.millward@gmail.com>
3193
3194         * typeck.c (string_conv_p): Pass appropiate
3195         OPT_Wxxxx values when calling warning().
3196         (build_array_ref, cxx_mark_addressable): Likewise.
3197         (check_return_expr): Likewise.
3198
3199         * init.c (perform_member_init): Likewise.
3200         (sort_mem_initializers, emit_mem_initializers): Likewise.
3201
3202         * class.c (check_field_decls): Likewise.
3203         (warn_about_ambiguous_bases): Likewise.
3204
3205         * decl.c (pop_label, poplevel): Likewise.
3206         (duplicate_decls, grok_op_properties): Likewise.
3207         (start_preparsed_function, finish_function): Likewise.
3208
3209         * name-lookup.c (pushdecl_maybe_friend): Likewise.
3210         (pushdecl_maybe_friend): Likewise.
3211
3212         * parser.c (cp_parser_warn_min_max): Likewise.
3213         (cp_parser_cast_expression): Likewise.
3214
3215         * method.c (lazily_declare_fn): Likewise.
3216         * cvt.c (convert_to_void): Likewise.
3217         * mangle.c (finish_mangling): Likewise.
3218         * cp-gimplify.c (gimplify_expr_stmt): Likewise.
3219
3220 2006-02-03  Mark Mitchell  <mark@codesourcery.com>
3221
3222         * name-lookup.c (do_class_using_decl): Use IDENTIFIER_TYPENAME_P,
3223         not IDENTIFIER_OPNAME_P.
3224
3225 2006-01-31  Mark Mitchell  <mark@codesourcery.com>
3226
3227         PR c++/25342
3228         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Revise
3229         documentation.
3230         * pt.c (determine_specialization): Use INNERMOST_TEMPLATE_PARMS,
3231         not TREE_VALUE.
3232         (instantiate_class_template): Simplify.
3233         (verify_class_unification): Remove.
3234         (unify): Document parameters.  Use INNERMOST_TEMPLATE_ARGS to
3235         permit multiple levels of template arguments.
3236         (more_specialized_class): Simplify.
3237         (get_class_bindings): Pass full arguments to unify.  Fold
3238         verify_class_unification into this function.  Return full
3239         arguments.
3240         (most_specialized_class): Adjust for changes to
3241         get_class_bindings.  Issue errors here for ambiguity.  Return the
3242         fully deduced arguments for the most specialized class, in
3243         addition to the partial specialization.
3244
3245 2006-01-31  Ben Elliston  <bje@au.ibm.com>
3246
3247         * mangle.c: Comment fix.
3248
3249 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3250
3251         * Make-lang.in (cp-warn): Include CXX_COMPAT_WARN.
3252         * repo.c (extract_string, afgets): Use cast when converting from
3253         void *.
3254
3255 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3256
3257         * call.c (alloc_conversion): Use cast when converting from void *.
3258         (alloc_conversions): Likewise.
3259         (add_candidate): Likewise.
3260         (print_z_candidates): Likewise.
3261         (add_warning): Likewise.
3262         * pt.c (retrieve_local_specialization): Likewise.
3263         (process_partial_specialization): Likewise.
3264         (mangle_class_name_for_template): Likewise.
3265         (tsubst_template_args): Likewise.
3266         * typeck2.c (pat_calc_hash): Likewise.
3267         (pat_compare): Likewise.
3268         (abstract_virtuals_error): Likewise.
3269         * class.c (method_name_cmp): Likewise.
3270         (resort_method_name_cmp): Likewise.
3271         (get_vfield_name): Likewise.
3272         * decl2.c (generate_ctor_and_dtor_functions_for_priority): Likewise.
3273         * lex.c (init_reswords): Likewise.
3274         * rtti.c (create_pseudo_type_info): Likewise.
3275         * search.c (dfs_lookup_base): Likewise.
3276         (dfs_dcast_hint_pre): Likewise.
3277         (dfs_dcast_hint_post): Likewise.
3278         * tree.c (hash_tree_cons): Likewise.
3279         * repo.c (extract_string): Likewise.
3280         (afgets): Likewise.
3281         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Likewise.
3282         * g++spec.c (lang_specific_driver): Likewise.
3283
3284 2006-01-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3285
3286         * call.c (joust): Pass option code to warning.  Use inform for
3287         explanation.
3288         * class.c (check_bases): Likewise.
3289         (maybe_warn_about_overly_private_class): Likewise.
3290         (check_field_decls): Likewise.
3291         (layout_empty_base): Likewise.
3292         (layout_virtual_bases): Likewise.
3293         (layout_class_type): Likewise.
3294
3295 2006-01-28  Mark Mitchell  <mark@codesourcery.com>
3296
3297         PR c++/25999
3298         * decl.c (start_preparsed_function): Call maybe_apply_pragma_weak
3299         here, not ...
3300         (start_function): ... here.
3301
3302 2006-01-28  Mark Mitchell  <mark@codesourcery.com>
3303
3304         PR c++/25855
3305         * class.c (resolve_address_of_overloaded_function): Adjust use of
3306         return value from most_specialized_instantiation.
3307         * pt.c (determine_specialization): Avoid multiple calls to
3308         get_bindings.
3309         (most_specialized_instantiation): When a tie occurs, set the
3310         current presumed champion to the next template.  Return the
3311         TREE_LIST node containing the template, rather than the template
3312         itself.
3313         (most_specialized): Remove.
3314         * name-lookup.c (push_overloaded_decl): When duplicate_decls
3315         indicates a failed redeclaration, report that to callers.
3316
3317 2006-01-26  Jason Merrill  <jason@redhat.com>
3318
3319         PR c++/16021
3320         * name-lookup.c (parse_using_directive): Require strong using to
3321         name a nested namespace.
3322
3323 2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3324
3325         Revert:
3326         * cp-tree.h (do_poplevel): Remove prototype.
3327         * semantics.c (do_poplevel): Add prototype.  Make static.
3328
3329         Revert:
3330         * cp-tree.h (default_conversion): Remove prototype.
3331         * typeck.c (default_conversion): Make static.
3332
3333 2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3334
3335         * cp-tree.h (get_primary_binfo): Remove prototype.
3336         (push_using_decl): Likewise.
3337         (current_template_args): Likewise.
3338         (more_specialized_class): Likewise.
3339         (mark_class_instantiated): Likewise.
3340         (default_conversion): Likewise.
3341         (pfn_from_ptrmemfunc): Likewise.
3342         * class.c (get_primary_binfo): Add prototype, make static, simplify.
3343         * name-lookup.c (push_using_decl): Make static.
3344         * pt.c (current_template_args): Likewise.
3345         (more_specialized_class): Likewise.
3346         (mark_class_instantiated): Likewise.
3347         * typeck.c (default_conversion): Make static.
3348         (pfn_from_ptrmemfunc): Add prototype, make static.
3349
3350 2006-01-24  Dirk Mueller  <dmueller@suse.de>
3351
3352         * typeck.c (build_binary_op): Use OPT_Wfloat_equal in warning().
3353
3354 2006-01-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3355
3356         PR c++/25552
3357         * parser.c (cp_parser_unqualified_id): Check that destructor name
3358         and scope match.
3359         * call.c (check_dtor_name): Do not expect a BIT_NOT_EXPR.
3360         Adjust comment.  Return early if possible.
3361         Use same_type_p to compare types.
3362         * typeck.c (lookup_destructor): Adjust call to check_dtor_name.
3363
3364 2006-01-24  Mark Mitchell  <mark@codesourcery.com>
3365
3366         * semantics.c: Remove outdated comment.
3367
3368 2006-01-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3369
3370         * cp-tree.h (do_poplevel): Remove prototype.
3371         * semantics.c (do_poplevel): Add prototype.  Make static.
3372
3373         * cp-tree.h (original_type): Remove prototype.
3374         * typeck.c (original_type): Make static.
3375
3376         * cp-tree.h (declare_global_var): Remove prototype.
3377         * decl.c (declare_global_var): Make static.
3378
3379         * cp-tree.h (implicitly_declare_fn): Remove prototype.
3380         * method.c (implicitly_declare_fn): Make static.
3381
3382         * cp-tree.h (fold_decl_constant_value): Remove prototype.
3383         * pt.c (fold_decl_constant_value): Make static.
3384
3385         * cp-tree.h (build_x_delete): Remove prototype.
3386         * init.c (build_vec_delete_1): Call build_op_delete_call directly
3387         and not via build_x_delete.
3388         (build_x_delete): Remove.
3389
3390         * cp-tree.h (get_vtt_name): Remove prototype.
3391         * class.c (get_vtt_name): Remove.
3392         (build_vtt): Call mangle_vtt_for_type instead of get_vtt_name.
3393
3394 2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3395
3396         * rtti.c (build_dynamic_cast): Fix comment.
3397
3398 2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3399
3400         PR c++/10891
3401         * rtti.c (build_dynamic_cast): Reject dynamic_cast use if
3402         -fno-rtti.
3403
3404 2006-01-21  Mark Mitchell  <mark@codesourcery.com>
3405
3406         PR c++/25895
3407         * class.c (build_base_path): Generate a NOP_EXPR instead of a
3408         COMPONENT_REF if the base and derived classes are at the same
3409         address.
3410
3411         PR c++/25856
3412         * decl.c (begin_destructor_body): Robustify.
3413
3414         PR c++/25858
3415         * parser.c (cp_parser_direct_declarator): Robustify.
3416
3417 2006-01-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3418
3419         * parser.c (cp_lexer_next_token_is_keyword): Simplify.
3420
3421         * parser.c (clear_decl_specs): Remove prototype.
3422
3423         * parser.c (cp_parser_expression_fn): Remove.
3424
3425         * call.c (add_builtin_candidates): Remove superfluous return.
3426         * name-lookup.c (do_toplevel_using_decl): Likewise.
3427         * parser.c (cp_parser_type_specifier_seq): Likewise.
3428         (cp_parser_save_default_args): Likewise.
3429
3430 2006-01-20  Dirk Mueller  <dmueller@suse.com>
3431
3432         PR c++/5520
3433         * semantics.c (finish_if_stmt): Call empty_body_warning.
3434         * parser.c (cp_parser_implicitly_scoped_statement):
3435         Mark empty statement with an empty stmt.
3436
3437 2006-01-19  Mark Mitchell  <mark@codesourcery.com>
3438
3439         PR c++/22136
3440         * name-lookup.c (do_class_using_decl): Don't try to look up base
3441         classes in templates with dependent base types.
3442
3443 2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3444
3445         PR c++/25854
3446         * pt.c (maybe_process_partial_specialization): Return early on
3447         error_mark_node.
3448
3449 2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3450
3451         PR c++/16829
3452         * decl.c (start_preparsed_function): Check default arguments
3453         unconditionally.
3454         * name-lookup.c (pushdecl_maybe_friend): Check default arguments
3455         of all functions and function templates.
3456         * parser.c (cp_parser_late_parsing_default_args): Check default
3457         arguments.
3458         * decl2.c (check_default_args): Set missing default arguments to
3459         error_mark_node.
3460
3461 2006-01-18  Mark Mitchell  <mark@codesourcery.com>
3462
3463         PR c++/25836
3464         * cp-tree.h (push_class_stack): New function.
3465         (pop_class_stack): Likewise.
3466         * class.c (class_stack_node): Add hidden field.
3467         (pushclass): Clear it.
3468         (push_class_stack): New function.
3469         (pop_class_stack): Likewise.
3470         (currently_open_class): Ignore hidden classes.
3471         (currently_open_derived_class): Likewise.
3472         * name-lookup.c (push_to_top_level): Call push_class_stack.
3473         (pop_from_top_level): Call pop_class_stack.
3474
3475 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
3476
3477         * tree.c (find_tree_t, find_tree): Remove.
3478         * cp-tree.h: Remove the prototype for find_tree.
3479
3480 2006-01-18  Jakub Jelinek  <jakub@redhat.com>
3481
3482         * search.c (lookup_conversions_r): Fix a pasto.
3483
3484 2006-01-17  Eric Christopher  <echristo@apple.com>
3485
3486         * call.c (convert_like_real): When issuing conversion
3487         warnings, depend on OPT_Wconversion.
3488         * cvt.c (build_expr_type_conversion): Ditto.
3489
3490 2006-01-17  Kazu Hirata  <kazu@codesourcery.com>
3491
3492         * name-lookup.c (lookup_namespace_name): Remove.
3493         * name-lookup.h: Remove the prototype for
3494         lookup_namespace_name.
3495
3496 2006-01-17  Jakub Jelinek  <jakub@redhat.com>
3497
3498         PR c/25682
3499         * decl.c (compute_array_index_type): After issuing not an integral
3500         constant-expression error, set size to 1 to avoid ICEs later on.
3501
3502 2006-01-16  Ian Lance Taylor  <ian@airs.com>
3503
3504         * parser.c: Include "cgraph.h".
3505         (cp_parser_asm_definition): Call cgraph_add_asm_node rather than
3506         assemble_asm.
3507
3508 2006-01-16  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
3509
3510         * g++spec.c (lang_specific_spec_functions): Remove.
3511
3512 2006-01-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3513
3514         * decl.c (check_initializer): Fix thinko.
3515
3516 2006-01-14  Mark Mitchell  <mark@codesourcery.com>
3517
3518         PR c++/25663
3519         * parser.c (cp_parser_direct_declarator): Use cp_parser_error
3520         instead of error.
3521
3522 2006-01-13  Jason Merrill  <jason@redhat.com>
3523
3524         * pt.c (check_explicit_specialization): Use CP_DECL_CONTEXT even more.
3525
3526         * name-lookup.c (set_decl_namespace): Use CP_DECL_CONTEXT.
3527         * pt.c (check_explicit_specialization): Likewise.
3528
3529 2006-01-12  Jason Merrill  <jason@redhat.com>
3530
3531         PR libstdc++/24660
3532         * pt.c (check_explicit_specialization): Handle namespace
3533         association.
3534         * name-lookup.c (set_decl_namespace): Likewise.
3535
3536 2006-01-12  Nathan Sidwell  <nathan@codesourcery.com>
3537
3538         PR c++/24824
3539         * class.c (handle_using_decl): Pass correct scope to
3540         cp_emit_debug_info_for_using.
3541
3542 2006-01-11  Nathan Sidwell  <nathan@codesourcery.com>
3543
3544         PR c++/25386
3545         * tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
3546         packedness.
3547
3548 2006-01-06  Gabriel Dos Reis  <gdr@integrablesolutions.net>
3549
3550         * parser.c (cp_parser_primary_expression): Document the grammar
3551         for the built-in offsetof, a GNU extension.
3552
3553 2006-01-04  Zdenek Dvorak <dvorakz@suse.cz>
3554
3555         PR c++/25632
3556         * init.c (constant_value_1): Unshare use of DECL_INITIAL.  Fix a typo
3557         in condition.
3558
3559 2006-01-04  Chris Lattner  <sabre@gnu.org>
3560
3561         * typeck2.c: update copyright to 2006
3562         (split_nonconstant_init_1):  Set TREE_CONSTANT to true.
3563
3564 2006-01-04  Mark Mitchell  <mark@codesourcery.com>
3565
3566         PR c++/24782
3567         * parser.c (cp_parser_nested_name_specifier_opt): Preserve access
3568         checks, even when parsing tentatively.
3569
3570 2006-01-04  Richard Henderson  <rth@redhat.com>
3571
3572         Merge from gomp branch.
3573         * lex.c (handle_pragma_java_exceptions): Fix whitespace.
3574         * parser.c (struct cp_token): Add pragma_kind.
3575         (eof_token): Update to match.
3576         (struct cp_lexer): Add in_pragma; rearrange next for better packing.
3577         (cp_parser_initial_pragma): New.
3578         (cp_lexer_new_main): Use it.  Don't bother clearing
3579         c_lex_return_raw_strings.
3580         (cp_lexer_get_preprocessor_token): Always initialize keyword
3581         and pragma_kind fields.  Handle CPP_PRAGMA.
3582         (cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when
3583         in_pragma is set.
3584         (cp_lexer_handle_pragma): Remove.  Update callers to cp_parser_pragma.
3585         (cp_lexer_print_token) <CPP_PRAGMA>: Don't print as a string.
3586         (cp_parser_skip_to_pragma_eol): New.
3587         (cp_parser_error): Use it.
3588         (cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL;
3589         rearrange with switch statement.
3590         (cp_parser_skip_to_end_of_statement): Likewise.
3591         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
3592         (cp_parser_skip_to_closing_brace): Likewise.
3593         (cp_parser_skip_until_found): Likewise.
3594         (cp_parser_statement): Add in_compound argument; update callers.
3595         Use it to decide how to handle pragma parsing.
3596         (cp_parser_labeled_statement): Add in_compound argument; pass
3597         it on to cp_parser_statement.
3598         (cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL.
3599         (cp_parser_declaration_seq_opt): Likewise.
3600         (cp_parser_parameter_declaration): Likewise.
3601         (cp_parser_member_specification_opt): Likewise.
3602         (cp_parser_function_definition_after_decl): Likewise.
3603         (cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs.
3604         (cp_parser_pragma): New.
3605         (pragma_lex): New.
3606
3607 2006-01-04  Dirk Mueller <dmueller@suse.com>
3608
3609         * decl.c (finish_constructor_body): create simple
3610         compound stmt instead of a if(1) { } construct.
3611
3612 2006-01-03  Mark Mitchell  <mark@codesourcery.com>
3613
3614         PR c++/25492
3615         * name-lookup.c (push_class_level_binding): When a derived class
3616         provides a type binding, eliminate any type binding from a base
3617         class.
3618
3619         PR c++/25625
3620         * repo.c (repo_emit_p): Always instantiate static data members
3621         initialized by constant expressions, so that there values are
3622         available.
3623
3624 2006-01-02  Mark Mitchell  <mark@codesourcery.com>
3625
3626         PR c++/25635
3627         * class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a
3628         conversion operator.
3629         * decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here.
3630
3631         PR c++/25638
3632         * class.c (add_method): Never associate more than one destructor
3633         with a single class.
3634
3635         PR c++/25637
3636         * cp-tree.h (do_friend): Adjust prototype.
3637         * decl.c (grokfndecl): Make funcdef_flag a bool, not an int.
3638         (grokdeclarator): Likewise.  Refine check for invalid
3639         declarations/definitions of member functions outside of their own
3640         class.
3641         * friend.c (do_friend): Make funcdef_flag a bool, not an int.
3642
3643         PR c++/25633
3644         * parser.c (cp_parser_mem_initializer_list): Check result of
3645         cp_parser_mem_initializer against error_mark_node, not NULL_TREE.
3646         (cp_parser_mem_initializer): Return error_mark_node for failure.
3647
3648         PR c++/25634
3649         * parser.c (cp_parser_template_parameter_list): Call
3650         begin_template_parm_list and end_template_parm_list here.
3651         (cp_parser_type_parameter): Not here.
3652         (cp_parser_template_declaration_after_export): Or here.
3653         (cp_parser_elaborated_type_specifier): Call
3654         cp_parser_check_template_parameters.
3655
3656         * tree.c (build_target_expr_with_type): Use force_target_expr.
3657
3658         * decl2.c (mark_used): Fix typo in comment.
3659
3660 2006-01-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3661
3662         * parser.c (cp_parser_using_declaration): Skip name-lookup on
3663         invalid scope.
3664
3665 2005-12-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3666
3667         * cxx-pretty-print.c (pp_cxx_constant): New.  Print
3668         string-literal in parens if input program says so.
3669         (pp_cxx_primary_expression): Hand off constant printing to
3670         pp_cxx_constant.
3671         (pp_cxx_pretty_printer_init): Set pp->c_base.constant.
3672         (pp_cxx_expression): Use pp_cxx_constant for literals.
3673         * error.c (dump_expr): Use pp_constant for literals.
3674
3675 2005-12-29  Nathan Sidwell  <nathan@codesourcery.com>
3676
3677         * method.c (make_thunk): Don't set comdat_linkage here.
3678         (use_thunk): Make thunk one only here, if thunk target is
3679         DECL_ONE_ONLY.
3680
3681 2005-12-26  Mark Mitchell  <mark@codesourcery.com>
3682
3683         PR c++/25439
3684         * decl.c (grokdeclarator): Remove dead code.
3685         * ptree.c (cxx_print_xnode): Handle BASELINK.
3686         * parser.c (make_id_declarator): Add sfk parameter.
3687         (cp_parser_direct_declarator): Do not pass TYPE_DECLs to
3688         make_id_declarator.
3689         (cp_parser_declarator_id): Simplify BASELINKs here.
3690         (cp_parser_member_declaration): Adjust calls to
3691         make_id_declarator.
3692
3693 2005-12-26  Mark Mitchell  <mark@codesourcery.com>
3694
3695         PR c++/23171, c++/23172, c++/25417.
3696         * typeck.c (build_unary_op): Create temporary variables for
3697         compound literals whose addresses are taken.
3698         * init.c (expand_aggr_init_1): Use COMPOUND_LITERAL_P.
3699         * decl.c (reshape_init_vector): Likewise.
3700         (reshape_init): Give it external linkage.
3701         (check_initializer): Use COMPOUND_LITERAL_P.
3702         (initialize_artificial_var): Allow the initializer to be a
3703         CONSTRUCTOR.
3704         * call.c (make_temporary_var_for_ref_to_temp): Use
3705         create_temporary_var.
3706         * cp-tree.h (COMPOUND_LITERAL_P): New macro.
3707         (rehape_init): Declare.
3708         * typeck2.c (digest_init): Use COMPOUND_LITERAL_P.
3709         * semantics.c (finish_compound_literal): Use reshape_init.
3710
3711 2005-12-23  Mark Mitchell  <mark@codesourcery.com>
3712
3713         PR c++/24671
3714         * pt.c (instantiate_template): Handle SFINAE.
3715
3716 2005-12-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3717
3718         * decl.c (grokdeclarator): Improve diagnostic for friend
3719         declarations of class members.
3720
3721 2005-12-22  Mark Mitchell  <mark@codesourcery.com>
3722
3723         PR c++/25369
3724         * tree.c (really_overloaded_fn): Tweak comment.
3725         * pt.c (tsubst_call_declarator_parms): Remove.
3726         (tsubst_copy): Call mark_used on the member referenced by an
3727         OFFSET_REF.
3728         * semantics.c (finish_qualified_id_expr): Simplify.
3729         * decl2.c (mark_used): Accept BASELINKs.
3730
3731         PR c++/25364
3732         * typeck.c (build_unary_op): Pass DECLs not names to
3733         build_offset_refs.
3734         * init.c (build_offset_ref): Do not do name lookup.  Do not call
3735         mark_used.
3736         * call.c (build_call): Simplify and tidy.
3737         * semantics.c (finish_qualified_id_expr): Call mark_used.
3738
3739 2005-12-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3740
3741         PR c++/23333
3742         * parser.c (cp_parser_pure_specifier): Check for PURE_ZERO to
3743         identify a single '0'.
3744
3745 2005-12-20  Mark Mitchell  <mark@codesourcery.com>
3746
3747         PR c++/21228
3748         * decl.c (use_eh_spec_block): New function.
3749         (store_parm_decls): Use it.
3750         (finish_function): Likewise.
3751
3752 2005-12-19  Mark Mitchell  <mark@codesourcery.com>
3753
3754         PR c++/24278
3755         * init.c (expand_member_init): Print messages about baseclasses
3756         using %T rather than %D.
3757
3758         PR c++/24915
3759         * class.c (add_method): Do not treat templates as identical unless
3760         their return types are the same.
3761
3762 2005-12-12  Mark Mitchell  <mark@codesourcery.com>
3763
3764         PR c++/25300
3765         * tree.c (build_qualified_name): Return error_mark_node for
3766         erroneous input.
3767
3768 2005-12-10  Mark Mitchell  <mark@codesourcery.com>
3769
3770         PR c++/25337
3771         * pt.c (tsubst_copy_and_build): Permit dependent types for the
3772         object in a class member access expression.
3773
3774 2005-12-10  Terry Laurenzo  <tlaurenzo@gmail.com>
3775
3776         PR java/9861
3777         * mangle.c (write_bare_function_type): Mangle return type for
3778         methods of Java classes
3779
3780 2005-12-08  Th�dore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
3781
3782         * call.c (build_conditional_expr): Print types in error messages.
3783
3784 2005-12-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3785
3786         * expr.c (cxx_expand_expr): Call gcc_unreachable instead of abort.
3787
3788 2005-12-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3789
3790         * cp-gimplify.c (gimplify_cp_loop): Use fold_build3.
3791
3792 2005-12-07  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
3793
3794         * Make-lang.in (c++.all.build, c++.install-normal): Remove.
3795
3796 2005-12-07  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
3797
3798         * Make-lang.in: Remove all dependencies on s-gtype.
3799
3800 2005-12-06  Aldy Hernandez  <aldyh@redhat.com>
3801
3802         PR C++/24138
3803         * decl.c (reshape_init_array_1): Handle max_index of -1.
3804
3805 2005-12-06  Roger Sayle  <roger@eyesopen.com>
3806
3807         * typeck.c (build_binary_op): Issue warning if either operand of a
3808         comparison operator is a string literal, except for testing equality
3809         or inequality against NULL.
3810
3811 2005-12-06  Roger Sayle  <roger@eyesopen.com>
3812
3813         PR c++/25263
3814         * decl.c (compute_array_index_type): Check that itype is an
3815         INTEGER_CST node before testing/clearing TREE_OVERFLOW.
3816
3817 2005-12-05  Daniel Berlin  <dberlin@dberlin.org>
3818
3819         * ptree.c (cxx_print_decl): Update to check for decl_common
3820         structure.
3821
3822 2005-12-02  Mark Mitchell  <mark@codesourcery.com>
3823
3824         PR c++/24173
3825         * decl.c (duplicate_decls): Don't rely on DECL_TEMPLATE_INFO after
3826         clobbering newdecl.
3827
3828 2005-12-02  Richard Guenther  <rguenther@suse.de>
3829
3830         * semantics.c (simplify_aggr_init_expr): Use buildN instead
3831         of build.
3832
3833 2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3834
3835         * parser.c (cp_lexer_new_main): Usr GGC_RESIZEVEC instead of
3836         ggc_realloc.
3837         (cp_parser_template_argument_list): Use XRESIZEVEC instead of
3838         xrealloc.
3839         * class.c (pushclass): Likewise.
3840
3841 2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3842
3843         * decl2.c (get_priority_info): Use XNEW, not xmalloc.
3844         * decl.c (push_switch): Likewise.
3845         * lex.c (handle_pragma_implementation): Likewise.
3846         * cp-objcp-common.c (decl_shadowed_for_var_insert): Use GGC_NEW,
3847         not ggc_alloc.
3848         (cxx_initialize_diagnostics): Use XNEW, not xmalloc.
3849         * class.c (init_class_processing): Use XNEWVEC, not xmalloc.
3850         * g++spec.c (lang_specific_driver): Likewise.
3851         * mangle.c (save_partially_mangled_name): Likewise.
3852         * parser.c (cp_lexer_new_main): Use GGC_NEWVEC, not ggc_alloc.
3853         (cp_parser_template_argument_list): Use XNEWVEC, nto xmalloc.
3854         (cp_parser_sizeof_operand): Likewise.
3855         * repo.c (open_repo_file, open_repo_file): Likewise.
3856
3857 2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3858
3859         * parser.c (cp_parser_make_typename_type): Call make_typename_type
3860         with tf_none instead of magic value 0.
3861         (cp_parser_explicit_instantiation): Call do_type_instantiation
3862         with tf_error instead of magic value 1.
3863         (cp_parser_elaborated_type_specifier): Call make_typename_type
3864         with tf_error instead of magic value 1.
3865         (cp_parser_class_name): Likewise.
3866         (cp_parser_lookup_name): Likewise.
3867
3868 2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3869
3870         * parser.c (cp_parser_declaration): Set token2.type to CPP_EOF,
3871         not RID_MAX.
3872
3873 2005-11-30  Jason Merrill  <jason@redhat.com>
3874
3875         PR c++/21123
3876         * cp-gimplify.c (cp_genericize_r): Don't dereference invisible reference
3877         parms in a thunk.
3878
3879 2005-11-30  Ben Elliston  <bje@au.ibm.com>
3880
3881         * typeck.c (build_x_unary_op): Correct spelling in error message.
3882
3883 2005-11-28  Nathan Sidwell  <nathan@codesourcery.com>
3884
3885         PR c++/21166
3886         * class.c (check_field_decls): Only set DECL_PACKED on a field
3887         when its natural alignment is > BITS_PER_UNIT.
3888
3889 2005-11-27  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3890
3891         PR c++/24979
3892         * cp-tree.h (DECL_MAIN_P): Remove duplicate definition.
3893
3894 2005-11-26  Richard Henderson  <rth@redhat.com>
3895
3896         * lex.c: Update for pragma_lex rename.
3897         * parser.c: Likewise.
3898
3899 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3900
3901         PR c++/9278
3902         * decl.c (grokparms): Do not allow typedef-names in a '(void)'
3903         parmlist.
3904
3905 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3906
3907         * typeck2.c (process_init_constructor_union): Remove check for
3908         unnamed union members.
3909
3910 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3911
3912         * name-lookup.c (lookup_name_real): Merge two if's.
3913
3914 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3915
3916         * pt.c (instantiate_class_template): Clean-up.
3917
3918 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3919
3920         * pt.c (template_class_depth_real): Remove. Move functionality to ...
3921         (template_class_depth): ... here, replacing count_specializations
3922         with 0.  Adjust comment.
3923
3924 2005-11-24  Richard Guenther  <rguenther@suse.de>
3925         Dirk Mueller <dmueller@suse.de>
3926
3927         PR c++/14024
3928         * typeck.c (build_reinterpret_cast_1): Use
3929         strict_aliasing_warning.
3930
3931 2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3932
3933         PR c++/24235
3934         * pt.c (check_instantiated_args): Reword diagnostic message about
3935         template argument involving local types.
3936
3937 2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3938
3939         PR c++/21667
3940         * typeck.c (build_array_ref): Avoid code duplicate.  Use common
3941         C/C++ diagnostic function warn_array_subscript_with_type_char.
3942
3943 2005-11-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3944
3945         PR c++/22238
3946         * error.c (resolve_virtual_fun_from_obj_type_ref): New.
3947         (dump_expr): Use it in <case CALL_EXPR>.
3948
3949 2005-11-21  Richard Henderson  <rth@redhat.com>
3950
3951         * cp-objcp-common.h, name-lookup.c, name-lookup.h: Revert 11-18 patch.
3952
3953         * name-lookup.c (lookup_name): Remove prefer_type argument.
3954         (lookup_name_prefer_type): New.
3955         * decl.c (lookup_and_check_tag): Use them.
3956         * pt.c (tsubst_friend_class): Likewise.
3957         (lookup_template_class): Likewise.
3958         (tsubst_copy_and_build): Likewise.
3959         * name-lookup.h (lookup_name_prefer_type): New.
3960         (lookup_name): Remove declaration.
3961
3962 2005-11-18  Mark Mitchell  <mark@codesourcery.com>
3963
3964         PR c++/8355
3965         * decl.c (grokfndecl): Set up DECL_TEMPLATE_INFO before calling
3966         set_decl_namespace.
3967         * name-lookup.c (set_decl_namespace):
3968
3969 2005-11-18  Mike Stump  <mrs@apple.com>
3970
3971         * cp-objcp-common.h (LANG_HOOKS_LOOKUP_NAME): Add.
3972         * name-lookup.c (lookup_name_two): Remove.
3973         (lookup_name_one): Add.
3974         * name-lookup.h (lookup_name_two): Remove.
3975         (lookup_name_one): Add.
3976
3977 2005-11-15  Jason Merrill  <jason@redhat.com>
3978
3979         PR c++/24580
3980         * method.c (locate_copy): Also use skip_artificial_parms here.
3981         (synthesize_exception_spec): Use CLASS_TYPE_P rather than checking
3982         for RECORD_TYPE.
3983         (locate_ctor): Abort if we fail to find a default constructor.
3984
3985 2005-11-15  Mike Stump  <mrs@apple.com>
3986
3987         * name-lookup.c (lookup_name_two): Add.
3988         * name-lookup.h: Likewise.
3989
3990 2005-11-15  Mark Mitchell  <mark@codesourcery.com>
3991
3992         PR c++/24667
3993         * typeck.c (check_for_casting_away_constness): Use the diag_fn.
3994         (build_const_cast_1): Call it, for C-style casts.
3995
3996 2005-11-14  Mark Mitchell  <mark@codesourcery.com>
3997
3998         PR c++/24687
3999         * pt.c (check_explicit_specialization): Don't check for C linkage.
4000         (push_template_decl_real): Likewise.
4001         * parser.c (cp_parser_explicit_specialization): Check here.
4002         (cp_parser_template_declaration_after_export): And here.
4003
4004         * parser.c (cp_lexer_get_preprocessor_token): Initialize keyword
4005         field.
4006
4007 2005-11-14  Jason Merrill  <jason@redhat.com>
4008
4009         PR c++/24580
4010         * method.c (locate_ctor): Skip all artificial parms, not just
4011         'this'.
4012
4013 2005-11-14  Mark Mitchell  <mark@codesourcery.com>
4014
4015         * parser.c (eof_token): Add initializer for ambiguous_p.
4016
4017 2005-11-13  Mark Mitchell  <mark@codesourcery.com>
4018
4019         PR c++/24817
4020         * decl.c (check_redeclaration_exception_specification): New
4021         function.
4022         (duplicate_decls): Use it.
4023         * error.c (fndecl_to_string): Print the template parameter list.
4024
4025         PR c++/20293
4026         * cxx-pretty-print.c (pp_cxx_statement): Print qualifying scopes
4027         for namespaces.
4028         (pp_cxx_original_namespace_definition): Likewise.
4029         * name-lookup.c (ambiguous_decl): Don't issue error messages;
4030         instead return lists of ambiguous candidates.
4031         (select_decl): Handle ambiguous namespace lookups.
4032         * parser.c (cp_token): Add ambiguous_p.
4033         (cp_lexer_get_preprocessor_token): Set it.
4034         (cp_parser_diagnose_invalid_type_name): Avoid duplicate messages
4035         when a qualified name uses an invalid scope.
4036         (cp_parser_primary_expression): Print ambiguous candidates.
4037         (cp_parser_type_parameter): Adjust comment to reflect new
4038         parameter name for cp_parser_lookup_name.
4039         (cp_parser_template_argument): Likewise.
4040         (cp_parser_elaborated_type_specifier): Likewise.
4041         (cp_parser_namespace_name): Likewise.
4042         (cp_parser_class_name): Print ambiguous candidates.
4043         (cp_parser_lookup_name): Rename ambiguous_p parameter to