OSDN Git Service

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