OSDN Git Service

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