OSDN Git Service

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