OSDN Git Service

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