OSDN Git Service

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