OSDN Git Service

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