OSDN Git Service

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