OSDN Git Service

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