OSDN Git Service

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