OSDN Git Service

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