OSDN Git Service

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