OSDN Git Service

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